Hej,
you're welcome :-)
Looking forward to you pull requesting your code!
Cheers,
Hauke
On 29.01.2015 07:46, shishir tiwari wrote:
Hi Petersen,
Thanks for your support .
We able to port and threads are working properly. we have tested
Posix_semaphore , IPC_pingpong, pthread examples all are working fine
once again thank for your support.
Thanks
Shishir Tiwari
On Wed, Jan 21, 2015 at 1:14 PM, Hauke Petersen
<[email protected]> wrote:
Hi,
yapp, you got it right (if you main does just run through end finishes).
What happens next depends on what you program in you application... So if
you create some threads those will probably scheduled, switching between the
idle thread and your user or the main thread.
Cheers,
Hauke
On 20.01.2015 19:42, shishir tiwari wrote:
Hi Petersen,
We have one question regarding when we switched from
cpu_switch_context_exit--> main_trampoline---->sched_task_exit
-->cpu_switch_context_exit-->idle_thread-->sched_task_exit (this never
execute) Is this understanding is correct?
my question is what will happen next and what need tobe done???
Thanks
Shishir Tiwari
On Thu, Jan 15, 2015 at 9:00 PM, Hauke Petersen
<[email protected]> wrote:
Hi Shishir,
the scheduler is deciding which task is run next. During normal
operation,
the behavior is intended as this:
- save the current context (register contents to the current stacks
thread)
- run scheduler to determine the thread with the highest priority
- point a global variable (sched_active_thread) to the chosen thread's
control block
- restore the context using the stack pointer from the active thread
(pointed to by sched_active_thread)
During system start-up (or after a thread terminates), this behavior is
slightly different, as the context save is omitted.
Now finding the task_func is a question of initializing the stack
correctly.
If you know your context-restore sequence, you have to put initial
register
values onto your threads stack (done in thread_arch_stack_init()). The
value
of the task_func pointer is pointing the the first instruction the thread
should execute. For this you have to load the value of the task_func
pointer
into the MCUs program counter on context restore. How this is done
heavily
depends on your MCU architecture - maybe this becomes clearer if you look
a
the ARM Cortex implementations?!
Does this answer your question?
Cheers,
Hauke
On 15.01.2015 16:03, shishir tiwari wrote:
Hi Petersen,
we are still facing issue for thread not working . we want to know how
the task get schedule and how it find the task_func entry point and
also how is switching happen.
please help on this.
Thanks
Shishir
On Wed, Jan 14, 2015 at 3:44 PM, Joakim Gebart <[email protected]>
wrote:
You can look at the startup files for other CPUs for a proper way of
doing
initialization e.g. cpu/stm32f1/startup.c
Note that you must also make sure that your linker script provides the
correct symbols at the beginning and end of .data and .bss.
Best regards,
Joakim Gebart
Eistec AB
www.eistec.se
On 01/13/2015 10:45 PM, Ryan Kurte wrote:
Hi Shishir,
I seem to recall having the same issue when starting the EFM32 port.
The issue in my case was that without the startup files, the .bss
section
was not getting cleared.
When the threads came to launch, the value in one of the kernel
functions
was not correct. Which is pretty easy to check with a debugger.
The fix was to clear the .bss section in the _init routine, my
implementation (using symbols from the linker) is:
//Clear bss
for (uint32_t i = (uint32_t)&__bss_start__; i <
(uint32_t)&__bss_end__;
i++) {
addr = (int*)i;
*addr = (int)NULL;
}
I am not sure this is the /correct/ way to do it, but the .bss
definitely
needs to be initialised to zeros.
Hope that helps,
Ryan
On 14 January 2015 at 07:56, Hauke Petersen
<[email protected]>
wrote:
Hi,
On 13.01.2015 19:04, shishir tiwari wrote:
Hi petersen,
Thanks for your information.
we are trying to put your method but still is it not working. we are
studying and doing some experiments.
one more question : In hwtimer_init()--> hwtimer_arch_init() this
need
to be implemented in harsware is compulsory?? for scheduling to work?
nope, the timer is generally not needed for scheduling.
Cheers,
Hauke
thanks
shishir tiwari
On Mon, Jan 12, 2015 at 10:01 PM, Hauke Petersen
<[email protected]> wrote:
Hi Shishir,
when RIOT initially starts up, the CPU is normally running in
interrupt
mode
(using the interrupt mode stack). After creating the stacks for the
main
and
the idle threads, the CPU must be put into thread-mode. This means
the
main
threads initial context needs to put into the CPUs registers and the
stack
pointer must put to the main-threads stack. After this is done the
CPU
can
just do 'normal' task switching for switching between threads.
So to put it short: in cpu_switch_context_exit() you simply must
load
the
main threads context into the CPUs register and point the stack
pointer
to
the main threads stack.
Let me know if you need further information!
Cheers,
Hauke
On 12.01.2015 15:35, shishir tiwari wrote:
Hey Everyone,
I have been porting RIOT OS to new processor(ARC) and i had
compilied
hello world program successfully.
When i debug the helloworld.elf in kernel_init function the
thread_create() function has execute successfully.But the thread
"idle_thread" "and main_trampoline" function is not been called.
why?
What is thing need to be done on this cpu_switch_context_exit()
function. please explain me.
Thanks
Shishir Tiwari
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://lists.riot-os.org/mailman/listinfo/devel