Arduino Goes ARM
mikejuk writes "The whole world seems to be going in ARM's direction. The latest version of Windows 8 will run on ARM processors, Raspberry Pi is a $25 ARM based machine and now the open source Arduino platform has a new member — the ARM-based Arduino Due announced at the Maker Faire in New York. The Due makes use of Atmel's SAM3U ARM-based process, which supports 32-bit instructions and runs at 96Mhz. The Due will have 256KB of Flash, 50KB of SRAM, five SPI buses, two I2C interfaces, five serial ports, 16 12-bit analog inputs and more. This is much more powerful than the current Uno or Mega. However, it's not all gain — the 3.3V operating voltage and the different I/O ports are going to create some compatibility problems. Perhaps Intel should start to worry about the lower end of the processor world."
As somebody who is looking for a more powerful prototyping platform on the cheap I look forward to this. But I would not use it for a majority of my hobby projects, which do not need a lot of this power.
Most arduino projects only use a few I/O pins and very little processing power. Many hobby projects could be made with a much weaker pic processor, and many could get by on the basic 8 pin pics. Many people don't know that the simpler solutions exist, because they only see arduino stuff all over the web. The full development board is way overkill.
Additionally, with current arduino setups, it is fairly simple to make a clone around an ATmega chip. All parts are soldered easily through hole, and the schematic is easy. With a 32 bit surface mount chip, the schematic gets complex enough that most hobbyists are now scared off by the hard soldering and the crazy layouts. The open source, easy to clone nature of Arduino that made it what it is today is incompatible with the new high-end boards, and people will have to pay more for the official dev boards, or something else professionally fabbed.
This isn't a replacement for the 8-bit ATmega based Arduinos but a step up up for those looking for more processing power. The Arduino toolkit and IDE is very user friendly and but the ATmega has its limits. Very small ROM and RAM is one problem the other being low clock speeds and its 8 bit architecture. One could make a pretty powerful robotics controller or even game console out of these boards.
A port to ARM for the Arduino toolkit had been long talked about and wanted by many. There are attempts like the Maple but this is an official ARM-Arduino board with official support in the arduino toolchain.
All I know is I am glad that this has finally arrived. For a while I was using the mbed for playing with arm project stuff. A great little development board but it lacked an open and offline compiler. they also left out allot of the I/O due to the DIP nature of the board. The one thing it looks like it has over the ARM-arduino is Ethernet which the SAM3U appears to lack.
It does have 32 bit registers.
An example of a benefit of this are softPWM implementations - on AVRs, softPWM with greater than 8 bits of resolution is a real bitch because once you go above 8 bits, the mathematics slow down a LOT. I worked around this once by having a fast 8-bit PWM loop that was dithered every PWM cycle by an outer sigma-delta modulator loop. I would've been able to do straight softPWM a lot easier with 32-bit registers.
It's also clocked at 96 MHz, significantly higher than the 16 MHz of the MegaXX8s that Arduinos normally use.
Also, the ARM Cortex-M3 architecture has some nifty tricks for modifying individual bits of each register or memory location. With AVR, modifying a single bit requires a read-modify-write operation. In the CM3, each register and memory location is aliased to 8 memory locations, each representing one bit of the aliased location. If the Arduino IDE takes advantage of this trick, it means that you won't pay the heavy I/O penalties Arduino is (or at least was) notorious for.
retrorocket.o not found, launch anyway?
Um, this ARM chip is replacing an AVR microcontroller. No x86 here.
X86 has a place, ARM has a place. When you need to do some heavy number crunching, or want huge detailed 3D worlds, or need to deal with a crapload of data? Then x86 is your guy.
If you have no idea what you need the processor to crunch, then yeah, a high-power general-purpose CPU is "your guy".
But if you think about it beforehand and realize that your device needs to do 3D rendering, or H264 video decompression, or any of a number of common high-horsepower tasks, you can augment the CPU with custom silicon that beats the stuffing out of a general CPU, with less power.
That is exactly what the current crop of handheld devices do. They have special-purpose silicon to do the heavy lifting for these tasks. Hence core CPU horsepower is less relevant for the vast majority of usage.
After we're done slashdotting arduino.cc, go take a look around. Arduino makes an open hardware and software design for an 8-bit microcontroller board with a bunch of pins for analog and digital input and output, with a friendly C-based integrated development environment. Even if you're an artist and not an electronics engineer, it's a friendly easy-learning-curve environment for building electronics that respond to sensors, and taking technology that used to be opaque magic and turn it into transparent crafts you can understand.
Typical kinds of things people do with Arduinos are blink LEDs, use all sorts of input sensors for distance or temperature to control blinking LEDs, move servos or other motors, build simple robots, sew them into clothing so you can blink LEDs in time to music or when you wave your arms, turn on your lawn sprinklers when your plants are dry, that kind of stuff.
What this new release does is two main things - there's one new 8-bit board that's simpler, cheaper, and a bit more powerful, and there's another new board that has a 32-bit CPU and a lot more sensor I/O. The 8-bit designs are a somewhat limited programming environment (which is enough for a lot of things, and can be an intellectual puzzle if you like that sort of thing). The 32-bit design will let you do much more powerful projects, which may be especially useful for music or video, and it's still cheap and friendly.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
Sure, and Intel has been worrying for over 15 years. But here is the thing... the #1 thing that matters at Intel is gross margin per wafer. Intel fills its fabs, and runs them throttle to the firewall 24x7. Every project is ranked by gross margin per wafer... fall below the cut-off line, and you either buy fab from somebody like TSMC, or go find a different project to work on. The Intel Atom is a successful attempt to create a power efficient part that meets the gross margin per wafer test. Go look at the margins of the ARM makers. I'll bet it doesn't match Intel's.
I overheard a very interesting+insightful conversation among vendors at the ARMTech conference a year or so ago. "We are all just vendors of value-added flash. Look at the die photos. It's a whole lot of flash memory, with a little bit of logic around the margins for a processor and peripherals in order to differentiate our flash from the other guys' flash and add some value."
Intel is doing what makes business sense for Intel. But they are watching. And Intel, big as it is, can turn on a dime, and has enough fab capacity to pave over with silicon any competitor that gets in it's boresight. That said, in the space where I work (embedded) ARM is taking over the world. It really makes zero sense to use an 8 bit uCtlr just about anywhere anymore, when you can get an ARM in the same size package and at nearly the same cost. Since flash dominates the die area in a microcontroller, 8-bit versus 32-bit logic is noise -- it has less cost impact than the package. There are a lot of Cortex-M3 parts in 48 pin packages now that cost only slightly more than 8 bit parts. (I should point out that there is huge difference between, an ARM Cortex-M3 and an ARM-A9, for instance an MMU.)
In the end, it comes down to MIPS and MFLOPS, and the die area and power required to do that much computation. When an ARM has enough functional units to match the MIPS and MFLOPS of an x86, it will take as much die area and power. At the complexity level of a Pentium IV, the added ugliness of the X86 instruction set is pretty much noise in the total die area and power. (In a past life I was an instruction decode and pipeline control logic design specialist -- I can tell you that x86 instruction decode is as ugly as it comes -- and in the day and age of out-of-order execution, that almost doesn't matter, except that because of all that ugliness x86 code is freakishly dense, which means the same size I-cache holds a lot more useful code. When you toss in the fact that the ugliness is also guarantees employment for instruction decode specialists, I'd call that a win :)
mikejuk's submission paragraph states: "However, it's not all gain — the 3.3V operating voltage and the different I/O ports are going to create some compatibility problems. "
I respectfully disagree. Firstly, there are already a lot of 3.3v based Arduinos on the market. I own a JeeNode (see Jeelabs in EU, Modern Device in the USA). The JeeNode can run a 434MHz wireless radio transceiver and temperature sensor for MONTHS on a single 3.3v boosted AA battery. You could not do that with 5V.
Adafruit has a tutorial on converting Arduino Unos over to 3.3v, from 5v. It's popular.
Mostly all sensors these days are 3.3v.
But most most actuators (like stepper motors) require MORE than 5V. Sure, there's some relays requiring a mere 5v.. and very few work on 3.3v... but most relays require 6V or higher. The usefulness of 5V is diminishing, so what you really want is just enough power to activate a transistor or relay.
(Some Arduino compatible chips run great at 1.8v, and sensors do also... there will come a time someday where it may make sense to run at less than 3.3v)
I see Arduino more as a collection of standards and open hardware. There are dozens of Arduino designs all of which vary slightly in terms of electrical and physical (pinout, etc) compatibility. But this too is a good thing... the Arduino platform is all about ADAPTABILITY.
There is one problem with this. Yes, you can prototype on arduino very well, but suppose you tested everything and want to deploy your project on a dedicated board. I can't see hobbysts soldering QFP packages and making 3+ layer PCBs at home somehow. Compare that to soldering a DIP socket on a possibly one-sided board.
Maybe one project - one arduino isn't a problem for some. For me it's way to pricey and not a good solution to add a quite big board with a lot of redundant circuitry to every project.
Next thing - what about the mods, arduino forks, fully compatible alternatives? There won't be so many now.
Second of all, why the hell would Intel have something to fear from a 96 MHz Cortex-M3 part? This makes no sense, since this isn't even a segment Intel is actively pursuing. What might be competitive with Intel's offerings could be something like an Cortex-A15 part (which AFAIK there are none of on the market as of now) or even a Cortex-A9 part with some of the low-end Atoms. However, the Cortex-M3 definitely has absolutely nothing to do with any of Intel's offerings, so this clearly demonstrates a lack of understanding of how microprocessors work in the market (and how ARM and something like Arduino falls into the real-world marketplace) on the part of the submitter.