Hi Francis,

The answer to both of your questions is "not really".  Here's what I
can tell you

For program flash, the standard bootloader TOSBoot starts at the
beginning of flash and by default has 2k allocated for it for Tmote
Sky.  The main program by default starts right after it.

Though, you are probably asking about the informational flash
segments. There is little to no standardization on the use of data in
these sections. The little standard there is is implicitly defined by
TOSBoot, which uses for reboot counters and reprogram-after-reboot
information.  You can find Tmote Sky's TOSBoot in two directories:
/opt/moteiv/tinyos-1.x/tos/lib/Deluge/TOSBoot/ which is the default
implementation with certain files overridden by the contents in
/opt/moteiv/tos/lib/Deluge/TOSBoot/.

Take a look at InternalFlashC in Moteiv's Deluge/TOSBoot/msp430/.
There you will see TOSBoot reads/writes to addresses 0x107f and 0x10ff
the struct tosboot_args_t.  That struct is 6 bytes long and is defined
in TOSBoot.h in Deluge/TOSBoot.h.

Some other modules in TinyOS also use internal flash, the one that
comes to mind is Nucleus, but I doubt you are using it.

AM address type allocation is even nastier than internal flash
allocation. There is no standard allocation procedure, so people just
pick random numbers, which cause Birthday Paradox collisions pretty
quickly, especially since people are generally very poor random number
generators.

Using GenericComm, Receive.receive returns a TOS_MsgPtr.  Wiring more
than one handler to a particular Receive AM will then cause an
"uncombined" warning, which is annoying if that's what you meant to
do, and helpful and informative if it isn't.

SPReceive returns void, so you won't get those warnings.  Current best
practice is to inspect build/tmote/app.c for AM usage.  Here's how ...

If you're lucky, all the modules are you including do use the one
piece of AM numbering convention: assign AM numbers to an enum of the
form AM_{name_caps}MSG, like AM_BEACONMSG.  What I do is grep
build/tmote/app.c for "AM_" and look for the lines that look like this

AM_BEACONMSG = 7,
AM_MULTIHOPMSG = 8,
AM_DEBUGPACKET = 9
AM_DELTAMSG = 33
AM_NETSYNCMSG = 21
AM_UARTDETECTMSG = 101
AM_NETWAKEMSG = 22,
AM_DELTADEBUGMSG = 34
AM_UARTMEMMSG = 38

Though, that won't catch AM's used by modules that do not following
the naming convention.  In that case, to be especially sure there are
no collisions, I inspect the radio message dispatch function in app.c.
If you're implicitly or explicitly using SP, then the dispatch
function is SPM$ReceiveMsg$receive.  There is a switch statement in
there that dispatches over all assigned AM types for that particular
app.c.

Best,
Cory

On 6/10/06, Francis Simoneau <[EMAIL PROTECTED]> wrote:
I'm looking for a current list or standards for both AM address types
used, and InternalFlash storage usage for Telosb or TmoteSky.

Are there any lists or standards of AM address types used or assigned?

Are there any lists or standards of InternalFlash usage addresses?

I have generated a spreadsheet of AM_types from Boomerang 2_0_2,
but can't find any published list anywhere.

TIA

francis
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to