[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