You are correct. Manjunath D
################################################################################################################ *************************************************************************************************************** On Wed, 13 Jan 2010, zheng manchun wrote: > Dear Qiyuan and All, > Thank you for your clarification. > > Even tasks posted by different components share the same scheduler, because > there is only one FIFO scheduler in TinyOS. > > Correct me, if the above saying is not right. > > Thanks in advance, > Manchun > > On Fri, Jan 8, 2010 at 9:44 AM, Qiyuan Zhang <[email protected]> wrote: > >> Hi all. >> >> To my understanding, the three calls to Timer.startPeriodic are executed >> sequentially. They are not tasks. In TinyOS, there is only one FIFO >> scheduler which are shared by different tasks. >> >> Anybody: If I'm not right, please correct me. >> >> Regards, >> >> Qiyuan >> >> ------------------ Original ------------------ >> *From: * "zheng manchun"<[email protected]>; >> *Date: * Wed, Jan 6, 2010 05:28 PM >> *To: * "Manjunath Doddavenkatappa"<[email protected]>; >> *Cc: * "tinyos-help"<[email protected]>; >> *Subject: * Re: [Tinyos-help] Questions abt the Execution Model of TinyOS >> >> Dear Manjunath and All, >> >> Thanks so much for your clarification. However, I still have further >> questions. >> >> Looking back at the Blink application, we can see that BlinkC call three >> commands in booted(). >> The startPeriodic is defined as synchronous. My concern here is how these 3 >> commands execute with the event booted(). Are they executing concurrently or >> are they executing sequentially? or are they scheduled in the scheduler like >> a task? >> >> Another question that bothers me a lot is during the execution of an nesC >> application, do all tasks posted by all components share the same task >> scheduler or does each component have their separate task scheduler? >> >> Looking forward to your reply & many thanks in advance. >> >> On Wed, Jan 6, 2010 at 5:17 PM, Manjunath Doddavenkatappa < >> [email protected]> wrote: >> >>> Hi, >>> >>> Please have a look at /opt/tinyos-2.x/tos/system/RealMainP.nc. The >>> execution starts from the main() and proceeds to initialize the system and >>> then signals Boot.booted(). If you notice interrupts are enabled just before >>> signalling Boot.booted(). >>> >>> Now your doubt reduces to the question "Is main() a intterupt handler or a >>> task ?". >>> >>> Certainly, it is not an interrupt handler as it is the routine that >>> enables interrupts for the first time. >>> >>> Is it a task ? >>> >>> Once execution starts, tasks can be posted and main() is the point where >>> your system execution starts. Therefore, main() is neither a task nor an >>> interrupt handler. However, I do not want group it under a separate 3rd >>> category as execution has to start somewhere and it starts at main(). >>> >>> Anybody: If I am wrong please correct me. >>> >>> Regards, >>> Manjunath D >>> >>> >>> ################################################################################################################ >>> *************************************************************************************************************** >>> >>> >>> >>> On Wed, 6 Jan 2010, zheng manchun wrote: >>> >>> Hi, I'm reading the Execution Model Chapter of TinyOS programming book >>>> recently. >>>> I've got some difficulties in understanding the execution model of the >>>> example application Blink. >>>> >>>> As stated in the book, code is either synchronous or asynchronous. >>>> And execution might be either a task or an interrupt handler. >>>> >>>> When the hardware boots successfully, Boot.booted event is signaled. >>>> While event booted is defined as synchronous in the Interface Boot, then >>>> Boot.booted can not be invoked by an interrupt handler. >>>> Therefore, it can only be a task. Or there is a 3rd kind of execution >>>> (besides task and interrupt handler)? >>>> >>>> I hope that some one can help to explain the execution model of the >>>> application Blink for me. >>>> >>>> Thanks in advance. >>>> >>>> =================================================== >>>> //BlinkAppC.nc >>>> configuration BlinkAppC >>>> { >>>> } >>>> implementation >>>> { >>>> components MainC, BlinkC, LedsC; >>>> components new TimerMilliC() as Timer0; >>>> components new TimerMilliC() as Timer1; >>>> components new TimerMilliC() as Timer2; >>>> >>>> >>>> BlinkC -> MainC.Boot; >>>> >>>> BlinkC.Timer0 -> Timer0; >>>> BlinkC.Timer1 -> Timer1; >>>> BlinkC.Timer2 -> Timer2; >>>> BlinkC.Leds -> LedsC; >>>> } >>>> >>>> //////////////////////////////////////////////////////////////////////////////////////////////////// >>>> //BlinkC.nc >>>> #include "Timer.h" >>>> >>>> module BlinkC @safe() >>>> { >>>> uses interface Timer<TMilli> as Timer0; >>>> uses interface Timer<TMilli> as Timer1; >>>> uses interface Timer<TMilli> as Timer2; >>>> uses interface Leds; >>>> uses interface Boot; >>>> } >>>> implementation >>>> { >>>> event void Boot.booted() >>>> { >>>> call Timer0.startPeriodic( 250 ); >>>> call Timer1.startPeriodic( 500 ); >>>> call Timer2.startPeriodic( 1000 ); >>>> } >>>> >>>> event void Timer0.fired() >>>> { >>>> dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string()); >>>> call Leds.led0Toggle(); >>>> } >>>> >>>> event void Timer1.fired() >>>> { >>>> dbg("BlinkC", "Timer 1 fired @ %s \n", sim_time_string()); >>>> call Leds.led1Toggle(); >>>> } >>>> >>>> event void Timer2.fired() >>>> { >>>> dbg("BlinkC", "Timer 2 fired @ %s.\n", sim_time_string()); >>>> call Leds.led2Toggle(); >>>> } >>>> } >>>> ===================================================== >>>> -- >>>> Thanks & Best Regards, >>>> Mc >>>> >>>> >> >> >> -- >> Thanks & Best Regards, >> Manchun >> > > > > -- > Thanks & Best Regards, > Manchun > _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
