[Tinyos Core WG] HW initializers in bootsequence

Philip Levis pal at cs.stanford.edu
Sun Dec 3 17:15:00 PST 2006


On Nov 27, 2006, at 8:17 PM, David Gay wrote:

>
>
> I thought this division was covered in the boot tep?

This is the root of the whole question: basically, the boot TEP is  
fairly vague and Martin is looking for something clear and definite.  
When we had talked, I had outlined the division and said that I'd  
appreciate his sending his comments of confusion to David Moss to  
make sure that I fix it in the next revision.

The distinction is this:

PlatformC is for platform-specific (read: hardware) initialization  
that is necessary for the system to operate properly regardless of  
what software is used. PlatformC initializations can be order  
dependent. Examples of PlatformC initializations are:
   1) processor configuration
   2) clock calibration
   3) IO pin initialization into a low-power state (later  
initialization might change this)

1) is a bit tricky due to the fact that the scheduler is initialized  
first. This was one of Neil Hancock's comments, and I think is worth  
having a separate initialization sequence for. E.g., you might want  
to initialize the virtual memory system before touching memory.

Note that you want to wire as little as possible explicitly (it  
should be wired automatically when the component is included). This  
practice means you don't initialize things which aren't needed,  
reducing code size and possible reducing energy consumption.

SoftwareInit is basically for everything else. Because  
initializations can't call anything greatly functional, their order  
is generally independent (it's the start()s that are dependent).  
SoftwareInit should be auto-wired.

Phil


More information about the Tinyos-2.0wg mailing list