Hacker News new | comments | show | ask | jobs | submit login

I am unsure about this. It's big advantage is its size and that it does not require as much HW support like Linux (like a MMU). The disadvantage is that it's not a *nix and you loose the whole ecosystem (no Posix).

In my opinion the space that it occupies (the "Internet of Things"), is not well-defined and it may be probably cheeper to use something like a full-blown small computer (like the rasperry-pi) with Linux on it.

> The disadvantage is that it's not a nix and you loose the whole ecosystem (no Posix).

In my opinion, that's probably a good thing; less baggage that has to be maintained for POSIX compatibility.

Remember that Unix was originally designed for large, centralized timesharing systems. It has been adapted to the embedded realm throughout the last couple of decades, but starting from scratch to create an OS specifically for the embedded realm is ideal.

> may be probably cheeper to use something like a full-blown small computer (like the rasperry-pi) with Linux on it.

In some cases. In the case mentioned by the article, however, a Raspberry Pi (for example) would make for a rather large badger collar. IoT is indeed a pretty broad and vague concept right now, but it already does demand very tiny hardware with size constraints dictating available computational capacity. That's where Contiki comes in.

The "Internet of Things" is marketing fluff, like "information superhighway". What they mean is "we want to charge you for more shit with silicon on it so we made up a new term". Raspberry Pi is waaayyyyy too big [and pricey] for devices that are nothing more than a sensor and a gprs module.

I doubt that. I know there is research in sensor network (e.g. at my university) and they say they want ulta-small low-power devices but the experiments I have seen were never in need of that much small devices.

Of course there are applications were you want to go really low-power/extra-small, but in that case even a micro-controller capable of running Contiki OS is too big. What I want to say is, that the application space where you can't deploy a small machine with Linux on it BUT it is feasable to have a small machine with Contiki on it is pretty narrow.

I guess there's always some wiggle room on most deployments. However, where I used to work, some of the guys at that department were conducting research on flying foxes as their migration patterns southern to northern parts of Queensland (Australia) were pretty much unknown (IIRC). The requirements there gets pretty tough. Also, the power consumption becomes a major factor as it will limit the amount of useful work the device can do, ie sensing, communication etc.

Anecdote: I learned about another project where they studied opossums. They put a collar with a small wireless device around their necks to track their movements and habits, but couldn't understand why a disproportionate amount of opossums died for some reason.... The reason was that the device had a small red LED that would blink to indicate that it was working, and the opossum, being a nocturnal animal became quite visible in the night, to the joy of all predators :) :S

That's really funny because something similar was done at my unversity (I think with bats, or maybe even flying foxes). I declined because although the devices were really small and they assured me that the animals did not come to harm I doubted that. It's like carrying around a big backpack.

This is getting OT, but sensor network applications and discussions often neglect the problem of device recovery and I know there are projects were sensors are not recovered and after they did their work (sensing stuff and sending it to a post-processing node) they go out of energy and become ... highly toxic waste.

Looks like there's a huge difference between small Linux and something like Contiki. Any time you run out of on-chip SRAM without an MMU (e.g. anything really low power) Linux is not a good fit. That non-Linux space is gigantic and there's room for something like Contiki as well as much lighter systems that have some form of non-IP networking. We evaluated a bunch of small kernels (ended up with uc/OS) but there are dozens of open and proprietary kernels that fit specific needs both larger and smaller than Contiki that are non-Linux for good reasons.

Yeah, uClinux is what i'm used to for MMU-less platforms. Then there's RTOSes, where you're looking at VxWorks/QNX/LynxOS for commercial support, or RTLinux/FreeRTOS/ChronOS for something unsupported. The Raspberry is a neat platform with plenty of uses, but custom tailored electronics often have exotic hardware with unique software constraints.

Not if you're a hobbyist developing the stuff for your own use though? Aren't the dev kits for this hardware more expensive than a Raspberry Pi + WiFi dongle?

It is not just about price. Power consumption is also a massive factor in designing internet of things. And anything running linux will inherently have a lot higher power consumption than something running contiki.

Not being a *nix is actually not a disadvantage at all in this context. You'd be surprised how little of an OS you actually need, and how inapplicable most libraries designed for PCs are.

In other words, you're thinking like a hobbyist rather than a product designer, or someone making tools for products. That's fine, but realize that embedded development for actual products is a completely different world than hobby raspberry pi hacking. I think the hobbyist embedded development community is awesome, BTW, just rather different than commercial embedded development.

An alternative is something like ucLinux, which runs on MMU-less processors (think 68000/Coldfire or Cortex-M). Pretty much a functional POSIX/Linux EABI with only a bit of pain getting to work.

I'm using ucLinux on a Cortex-M3 (NXP LPC1788 @ 72MHz) and it's pretty reasonable. I did it primarily to use Qt as my UI framework, but if I was running in bare userspace I think it would work even better.

Wow I'm impressed Qt runs acceptably on a Cortex M3, how much RAM do you have?

32MiB of SDRAM, believe it or not.

The core of the Linux kernel is running out of the onboard flash but the rest is all executing out of that RAM. Kernel drivers, userspace app, and 16-bit WVGA LCD framebuffer. And there's no I or D-cache on this part. =( My app is currently running with memory 75% full.

Just the other day some guy has launched a Kickstarter with a very similar design, but with a bit more breathing room memory-wise:


The trick to Qt on this part was to avoid QWidget and do everything in QGraphicsScene. For some reason it's just a lot easier on the processor. QML is a non-starter on a part this slow in case you were wondering, so Webkit and QScript and all of that is compiled out.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact