[Tinyos-devel] RE: [avr-gcc-list] Fwd: [Tinyos-help] TinyOs
avr-gcc-4
Philip Levis
pal at cs.stanford.edu
Mon Oct 15 15:12:03 PDT 2007
On Oct 15, 2007, at 2:30 PM, John Regehr wrote:
> Eric I'm not an authority on this topic but here are my two cents:
>
> - nesC adds plenty of value beyond facilitating inlining, for
> example the
> component model, support for concurrency, generic components,
> network
> types, etc.
>
> - I see no reason why nesC/TinyOS cannot use the latest and
> greatest AVR
> toolchain. Probably it's mainly a matter of the TinyOS maintainers
> finding time for toolchain work. Also note that some TinyOS/nesC
> ports
> like msp430 are hopelessly mired in gcc3 for the foreseeable future.
>
> - David has spent a fair amount of effort on C interoperability for
> nesC
> programs.
>
> - nesC isn't that obscure, I think it can parse all of C.
>
Right -- nesC is a superset of C. If people wanted to, they can write
a huge application as a bunch of C files which are #included into a
single nesC component, and add some shims for downcalls/upcalls.
People mostly don't, though, for a bunch of good reasons...
IIRC, the reason we haven't moved to avr-gcc v4 has to do with its
interpretation of optimization parameters. Kevin looked a bit into
this and found that -Os leads to huge code bloat, but that -O3 leads
to similar results as is observed with -Os in 3.2/3.4. There was
definitely talk of moving to avr-gcc 4 for the 2.1 release. But
making this change requires more than compiling and seeing if code
size is different; as far as we know, there might be weird compiler
bug edge cases that nesC tends to tickle. So it would require a lot
of testing. But I think that now might be a good time to get our feet
wet. New Atmega MCUs are going to push this more and more as time
moves forward.
Eric -- with respect to why it's not just a matter of changing to C,
I suggest you take a look at the chapter of the TinyOS programming
manual entitled "Namespaces." It's only about 10 pages of double-
spaced text, so isn't a long read. It explains the fundamental
limitations of C and why its namespace model fundamentally makes
efficient composition difficult. TinyOS is, in part, an exploration
of how modern (read, post-1970s) language and OS techniques can
improve the robustness, maintenance, extensibility, and performance
of embedded codes.
Phil
More information about the Tinyos-devel
mailing list