Hi Guys,

Fastserial doesn't provide faster communication, it's just using much less
blocking (atomic) segments, so it doesn't mess up important interrupts.
This is very useful when you want to use it as a really fast basestation.
You can turn it on with the fastserial extra (e.g. "make iris fastserial").

You can also try to increase baudrate with the PLATFORM_BAUDRATE constant
in the makefile. I'm not sure about the telosb, but the ucmotes usually
works well with "CFLAGS+=-DPLATFORM_BAUDRATE=500000U", probably even better
than with 115200, because the RFA1's clock generator can generate round
numbers better than "traditional" badrates with the integral oscillator.

I never really used the flash with serial dumping, but I used radio
downloading a lot (again, on ucmotes, but probably every stm25p based mote
is similar): Flash was always significantly slower than the radio, which
works at theoratical 250kb/s rate, but it has at least 10% overhead,
probably more.

Your original problem was with printf: You don't know if it finished the
communication, or not. On top of that, I think printf does the numbers to
ascii conversion on mote. With AM, you eliminate the conversion overhead,
and you know you can send the next message when you received the sendDone
event.

So, long story short: use AM, I don't think you'll need anything else. But
you probably want to add a sequence number or address to every package, so
you can check for data loss. If there is data loss, you'll also need some
kind of ack (probably AM's ack is trustable on serial as well, but I'm not
sure). Don't forget to turn off every other serial communication (e.g.
debug printfs).

Using the UART directly can work, but it's a bad idea: You'll probably need
framing, escaping, CRC, and so on: You'll end up with a new serial stack,
which is very similar to the current.

Oh and one more thing: The default maximum payload is 28 byte. This is
mostly because RAM: every message_t allocates 28B+overhead. On serial, the
overhead is around 10B, so basicly you have about 25% overhead, which is a
lot. You can increase it with the constant TOSH_DATA_LENGTH. I think the
physical maximum on radio is 114B (the maximum message length is 127B, but
you have headers and footers). It's unlimited on serial, but usually 100 or
110 is a good value.

Andras Biro
http://ucmote.com



On Mon, Sep 1, 2014 at 11:39 AM, Ugo Maria Colesanti <
colesa...@dis.uniroma1.it> wrote:

> I think you will manage to do everything with the standard serialAM stack,
> but just in case, have a look to tos/lib/fastserial which should be a more
> efficient serial interface than the standard one (i never used it). It
> should support both, ucmini and telosb.
> I think it can be re-wired to serialAM. You can also consider to write raw
> bytes directly on the uart without the serialAM stack ahead.
> Bye,
>
>
> Ugo
>
>
> 2014-09-01 11:24 GMT+02:00 Alessandro Sivieri <
> alessandro.sivi...@gmail.com>:
>
>
>> On Mon, Sep 1, 2014 at 11:08 AM, Ugo Maria Colesanti <
>> colesa...@dis.uniroma1.it> wrote:
>>
>>> How big is your flash? What hardware are you using?
>>
>>
>> I'm using the telosb and the ucmini, the former with 1MB flash and the
>> latter with 2MB. I think I will try the active message this week and see
>> how it goes.
>>
>>
>>
>> --
>> Sivieri Alessandro
>> alessandro.sivi...@gmail.com
>> http://sivieri.wordpress.com/
>>
>
>
> _______________________________________________
> Tinyos-help mailing list
> Tinyos-help@millennium.berkeley.edu
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to