Interesting to see Arduino getting into ARM. The LeafLabs Maple always appealed to me way more than Arduino because of the beefy STM32 ARM processor it comes with. (Well, also because their libraries, team, and documentation are all top-notch). It will be interesting to see how much ARM catches on among hobbyists now that it has the weight of the Arduino brand behind it.
It's a huge shame that none of the existing ARM Cortex M3 Arduino-like platforms (Maple, Corduino etc.) ever took off. While this is mostly likely because of the projects not being officially endorsed by Arduino, it does also make you wonder if there is actually a demand for this higher level of capability. I have a bad feeling that offering a much more powerful Arduino will only result in people writing more inefficient code.
Moving into ARM territory was always inevitable for Arduino, it has just taken a little longer than it should have, because Atmel were a little behind the curve in getting their Cortex M3 offerings onto the table. What does surprise me is that it has taken this long for Atmel to step in and offer some support to Arduino.
It's really too bad they didn't use STM32 parts. STMicro has a really nice line of Cortex M3 chips, and some of the best development libraries I've been able to find for these cores.
As for problems the ARM-duino might run into- one of the attractions of the Arduino is you can get away with very little code, and there are many pre-written libraries. This is not the case with the Cortex M3, which is a pretty sophisticated device as far as 'embedded' goes.
No reasonably qualified electronic engineer would use the Arduino platform in a commercial design. Most managers would laugh at any EE who suggested such a thing. I am not aware of any mass produced (consumer, not hobbyist) product or device which uses the Arduino platform.
In the industry of fashion and art (which I know very little about) many makers/creators/designers are incorporating Arduinos into art installations and fashion items, although from what I understand these are mostly one-off items.
This is simply not true. I work with quite a few of these reasonably qualified electronic engineers, EE's and managers who all love how fast we can turn out prototypes and concepts using the Arduino platform.
True that the platform itself does not go into commercial designs, but the ATMega168 and 328 chips certainly do and priced quite competitively at quantity.
Why not use the Arduino for rapid prototyping then the once you figure the design out, lay out a board based on the Atmega chip? (or some of the lighter-weight chips that would run the same code...)?
It sounds like 8 years ago when "most managers" and "reasonably qualified" programmers would get laughed at for suggesting ruby or python for a serious production project.
The reason it doesn't get used for serious or complex projects is simply because of it's lack of capabilities. The big one is debugging and this is a huge reason for why you won't see EEs using these at their day jobs. Electronic engineers are accustomed to being able to step through code, watch variables and all the other niceties that in-circuit debugging offers. With Arduino you lose all of this, your flying blind with maybe a flashing LED or a serial output to help you out. Who knows how you will detect elusive bugs like out-of-bound array errors. The time you gain with some nice wrapper functions and libraries you will quickly lose when trying to debug a complex project.
Features wise, you can do things most of the more advanced features which require bit manipulation of the AVRs registers like interrupts, timers, etc. with Arduino. Though at that point the lines are so blurred because half your code is AVR-GCC and half is Arduino.
Why don't we see the simple consumer products using Arduinos? I don't know for sure but it's most likely because something simple is just as quick to code without the Arduino libraries.
Atmel and most other micro suppliers are now coming out with their own "frameworks" these days, which are similar to Arduino in providing libraries for common tasks with a similar level of abstraction to Arduino, without the loss of the higher level functionality like debugging. These are a lot more attractive to EEs than Arduino is.
It will be interesting to see how this changes over the next 5 or so years. By then most of the young engineers who grew up with Arduino or were even introduced to electronics with Arduino will have graduated University and will be working in the industry. It will be interesting to see the effects that this generation of new engineers have.
ST has a very nice "Standard Peripheries Library" for their STM32 ARM Cortex M3 line which abstracts all the bit and register manipulation away in a very elegant manner.
Atmel has the "AVR Software Framework" which I have heard good things about but haven't used it myself.
Nearly all the chip manufacturers I know of have some sort of framework/library for their Cortex M3 line (which is what is in the new Arduino).
Mostly hobbyists, but there are a few exceptions. For example, the Makerbot Thingomatic 3D printer uses an Arduino Mega as its mainboard. Makerbot had more than $1M in revenue in 2010.
I suspect that Makerbot sticks with the Arduino Mega because it makes their hardware hackable by their users, which is worth more to them than the reduction in parts cost (minus the non-recurring increase in engineering expense).
This reminded me that I've been thinking of playing with a Real-time OS. My impression is that it's possible to run something on an Arduino. Does anyone have any experience with this?
There are quite a lot of microcontroller RTOSes[1] for the AVR platform, which means you can run them on the Arduino (although you'll need to use avr-gcc not the Arduino IDE for these.)
[1] The hard part is separating anything that's a serious & maintained project from something someone developed once as a toy/interest project and never used for anything.
Agreed. Also, it really just is a micro-controller. From what I understand the internal ram and flash plus all the other special functions (SPI, UART, ADC) are what make a micro-controller a micro-controller while a MPU or CPU have data and addressing buses used to talk to external devices. Micro-controllers incorporate a bunch of common functions into them that a CPU or MPU would need to talk to an external device for (while micro-controllers tend to lack said external buses).