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
