Arduino's extraordinary popularity has made it the focus of innovation for hardware and sofware hackers everywhere. The result is that they're wringing a suprising amount of performance out of a 16 MIPS chip:. Here are two recent advances:
--"Easy multithreading on Arduino with Concurrency
Enjoy programming microcontrollers, but frustrated about how difficult it can be to get them to do more than one thing at a time? Well, then you might be interested in Concurrency, an open source programming language and environment specifically designed with multithreading in mind. That means you can write programs that do multiple things at the same time, without interfering with each other. Of course, you could achieve the same things using a stock Arduino with some crafty coding or timer interrupts, however using a purpose-built language such as this could be a great way to get your feet wet in threaded computing. Check out their website for source code and Creative Commons-licensed tutorials!"
[From Makezine]
--An Arduino Operating System
"Pyxis OS is an operating system developed for the Arduino. It has been designed to allow Arduino users a greater level of freedom and capability than they currently have. Chief among Pyxis' list of features is its built-in ability to run compiled programs directly from a microSD card. Pyxis can switch between these programs and run as many as you can fit on your card.
The Pyxis programming language not only allows you to take advantage of many of the commands you're used to when developing for a standard Arduino (such as pinMode, digitalRead/Write, analogRead/Write, delay and more) but also expands on them with built-in LCD functions (such as drawLine, fillEllipse, etc).
In addition to using the Pyxis programming language you can access, modify and control the Pyxis OS directly from the Arduino environment. Libraries give you access to powerful abilities that are simply not available without Pyxis. For example, create a Textbox, Button, Progressbar, Combobox, or Checkbox in a single line of code and let Pyxis do all the work of tracking the object and updating the screen for you!"
Totally agree about ARM, it is really crazy that Arduino is still using an 8-bit uC. The real power of the Arduino is in its easy programming toolchain and that it's cheap to buy imho. Those two things would not change by jumping to a more powerful chip - we would just get more horsepowers.
On a sidenote: FTDI-chips are expensive - perhaps even more so than, say an automotive ARM in quantity? Imagine an arduino that is even cheaper but orders of magnitude more powerful!
But then again - why not stuff it with linux, add an FPGA for even more power - and then all the simplicity of Arduino is gone...
Pending funding approval, I have two students who will be integrating our ongoing work regarding parallel control architectures for robotics into a UAV this summer. We'll be lurking around here during that work, no doubt. The port of our support for parallel prgoramming on the Arduino was a first step towards that.
We can run the exact same code on an ARM; the VM under the concurrency.cc code is very portable. We just run out of time for maintaining all the ports. That said, we'll probably have an ARM7 port this summer as well.
Very cool stuff. I do have to wonder though when it's time for arduino to move up to a more powerful chip. It's admirable that so much power is being wrung out of the current arduino, but think of what all this effort could do with something stronger, maybe even an ARM chip.
That said, multithreading could have a lot of uses in autopilots. Not having to juggle interrupts could simplify things a great deal when everything is time dependent and happening simultaneously.
Comments
On a sidenote: FTDI-chips are expensive - perhaps even more so than, say an automotive ARM in quantity? Imagine an arduino that is even cheaper but orders of magnitude more powerful!
But then again - why not stuff it with linux, add an FPGA for even more power - and then all the simplicity of Arduino is gone...
We can run the exact same code on an ARM; the VM under the concurrency.cc code is very portable. We just run out of time for maintaining all the ports. That said, we'll probably have an ARM7 port this summer as well.
That said, multithreading could have a lot of uses in autopilots. Not having to juggle interrupts could simplify things a great deal when everything is time dependent and happening simultaneously.