Re:The Contiki OS Version 3.0 Released
by adunk on Wednesday August 26, 2015 @10:25AM
(#10123066)
The Cooja simulator is an integral part of the Contiki distribution: all the automated regression tests are run in Cooja. Cooja is actually very reliable, but because it runs user code in the same process as the simulator in the most high-performance mode (for performance reasons) it is not uncommon for user code to crash the simulator. My guess is that this was the problem in your case, particularly if this was your first significant C project.
It is possible to run Cooja in an emulation mode too (but only for the MSP430 microcontroller) where the user and OS code is completely isolated from the simulator process - much more reliable and easier to find bugs that break the user code, but much, much slower.
Re:The Contiki OS Version 3.0 Released
by justin66 on Wednesday August 26, 2015 @09:59PM
(#10127094)
> It is possible to run Cooja in an emulation mode too (but only for the MSP430 microcontroller) where the user and OS code is completely isolated from the simulator process - much more reliable and easier to find bugs that break the user code, but much, much slower.
Given the speed of the average PC, how can this possibly be an issue? It seems pretty surprising.
Re:The Contiki OS Version 3.0 Released
by adunk on Wednesday August 26, 2015 @10:22AM
(#10123039)
The 6502-based ports (Commodore 64/128, Apple II, etc) are actually still all being built by our regression test framework for every commit we make. The 6502 C compiler is a little harsher on following the C specifications so has saved us on more than a few occasions from making changes that would potentially break on other platforms.
Re:The Contiki OS Version 3.0 Released
by fra on Wednesday August 26, 2015 @01:44PM
(#10124727)
I've had mixed results with Contiki in the past. Several of their modules are of extremely poor quality. The coffee filesystem in particular is an un-redeemable mess of bugs.
Great OS to experiment with, but I would not recommend building a business on top of Contiki today.
Re:The Contiki OS Version 3.0 Released
by adunk on Wednesday August 26, 2015 @01:52PM
(#10124788)
The trick is as always to know what you are looking for and find the tool with the strengths in the right places. As with any system, Contiki has its strengths and weaknesses. The Coffee file system does its job well for what it was intended for (storing simple files on an on-board serial flash chip), but it seems like it didn't match what you were looking for. Filesystems certainly wasn't a design goal of Contiki, there may be better places to look.
If you're looking for a lightweight OS that does low-power IP networking with built-in support for self-healing wireless meshing, I think it is difficult to find an OS that beats Contiki. Take this from someone who has in fact built a business on top of Contiki :)
Re:The Contiki OS Version 3.0 Released
by fra on Wednesday August 26, 2015 @01:59PM
(#10124848)
No, this was not a case of "not meeting my needs". I read your papers and carefully considered whether the design goals worked for me.
It was a case of "poorly implemented and poorly tested". I know lwIP is widely used, so I'm sure it's not all this bad. However, that was still a pretty big red flag for me.
Re:The Contiki OS Version 3.0 Released
by adunk on Wednesday August 26, 2015 @02:39PM
(#10125135)
A couple of years ago Contiki had a lot of rough parts that were in dire need of a bit of love - something we've worked hard to fix in the past few versions. Version 3.0 is by far the most solid Contiki thus far. Maybe you got stuck in the middle of this
Not sure about Coffee in particular though, simply because file systems isn't really the focus of Contiki. Unlike server and desktop OSes, where the file system really is a core item, embedded OSes like Contiki don't depend on them and they are only used by a small subset of applications.
Re:The Contiki OS Version 3.0 Released
by ausjke on Wednesday August 26, 2015 @12:56PM
(#10124328)
This is a great OS indeed for IoT sensors. FreeRTOS has a much larger presence in MCU OS and they also overlap each other.I ended up using FreeRTOS but am always interested in checking out Contiki.
Re:The Contiki OS Version 3.0 Released
by kristoffer on Wednesday August 26, 2015 @01:06PM
(#10124423)
RTEMS certainly is a real time operating system. It was initially used in missiles and the original meaning is Real Time Executive for Missile Systems. Later adopted for generic military, scientific and space use.
I think it is a great open source RTOS. FreeRTOS and Contiki are good but not really comparable. Their focus is on smaller more memory constrained systems.
It is possible to run Cooja in an emulation mode too (but only for the MSP430 microcontroller) where the user and OS code is completely isolated from the simulator process - much more reliable and easier to find bugs that break the user code, but much, much slower.
Given the speed of the average PC, how can this possibly be an issue? It seems pretty surprising.
https://github.com/contiki-os/contiki/tree/3.0/platform/c64
https://github.com/contiki-os/contiki/tree/3.0/platform/c128
Great OS to experiment with, but I would not recommend building a business on top of Contiki today.
If you're looking for a lightweight OS that does low-power IP networking with built-in support for self-healing wireless meshing, I think it is difficult to find an OS that beats Contiki. Take this from someone who has in fact built a business on top of Contiki :)
It was a case of "poorly implemented and poorly tested". I know lwIP is widely used, so I'm sure it's not all this bad. However, that was still a pretty big red flag for me.
Not sure about Coffee in particular though, simply because file systems isn't really the focus of Contiki. Unlike server and desktop OSes, where the file system really is a core item, embedded OSes like Contiki don't depend on them and they are only used by a small subset of applications.
I think it is a great open source RTOS. FreeRTOS and Contiki are good but not really comparable. Their focus is on smaller more memory constrained systems.