Sunday, October 7, 2012

3D printer embedded OS

As I can't download Autodesk Inventor until tomorrow due to the 8GB download, (it was wiped from my comp when I upgraded from Windows XP to 7 recently) and so can't start designing yet, I decided to have a quick look at embedded operating systems. I would preferably like to run the controller on an ARM chip as they are readily available, have a big community and thus have a large amount of documentation available. I also wanted 32bit so to get a large enough number to easily manipulate numbers for positioning etc. Other requirements I wanted were the ability to use network (as mentioned in the previous post), for the cost of a development board for this to be not too expensive and preferably not too much wasted memory (ie preferably a small footprint). I'm also a fan of open source software and hack-ability so once again, didn't want to go the commercial/proprietary route.

There's lots of different avenues to go down. I had a good look into Contiki, which would just about do everything I wanted but there were two problems, it didn't support 32bit operating systems and also the network stack didn't support IPv6 so wouldn't be future proof. I then scoured google and wikipedia for lists of embedded operating systems and found μClinux and freeRTOS. These both looked promising but the former was actually just the kernel and would have to be made into an operating system to work and freeRTOS unfortunately didn't come with a network stack. I kept looking round and found Tiny Core Linux, this looked great and did everything desired, even was able to be compressed down to 8MB but then I found out it would only work on x86. This might be able to be ported over to ARM but I thought I would keep looking for the time being. I kept looking and then somehow got reminded about ArchLinux ARM which I had found out about a while ago (I run Arch on some of my linux boxes at home). This although larger at 125MB or so, it had everything else, had instructions for different types of popular ARM boards and would mean I wouldn't have to relearn libraries for programming. The other option from all of this is to build an operating system from scratch. I would love to do this but the time constraints and effort I want to put into the project don't allow such a massive undertaking.

So out of this comes 3 options, I can go the easy route and go for ArchLinux ARM on one of the boards its supports, I can try and work out how you can make an operating system and then use μClinux as the kernel or I can fully port Tiny Core Linux over to ARM. ArchLinux is the easiest and due to memory and other components being so cheap the most likely to go for but Tiny Core Linux would be more efficient, less of a foot print and if I was to ever do a proper embedded controller would be cheaper to mass produce.

What I use in the final product is still ages away, if I even make it that far, so its not too important for now but as I didn't feel like doing uni work tonight and didn't have Inventor installed, it was well worth the look around to see what was available. I think I'll be going for ArchLinux though as it will take far less time to setup.