Chinese Version中文版 IoT 开发平台多样性让创新规模史无前例ak
Arduino Due, Beaglebone, mbed or Raspberry Pi are just some of the ARM based embedded platforms used for IoT product prototyping. We’ve written this blog to compare not only the boards but also examine the important implications the processors inside have when taking your design to production.
As you may have recently read, the Internet of Things is already here. With affordable platforms inspiring innovators there is no shortage of ideas for novel physical products - from the AT&T Digital Life home sensors to the remote controlled cockroach, the possibilities are virtually endless.
IoT is inspiring innovation across the world. Established companies across all industries are investing in integrating IoT technologies and are creating brand new products and services in the process. Nike Fuelband and Disney Magicband are two great examples of connected technology leadership from established companies not traditionally associated with the high-tech industry.
Small batch manufacturing and 3D printing are revolutionizing physical product development. Innovators and entrepreneurs are solving problems with IoT starting at a local level. Gartner estimate that by 2018, 50% of IoT solutions will be from start-ups less than 3 years old.
There is massive opportunity out there, with platforms like Arduino and Raspberry Pi illuminating the possibilities to the world. Embedded technology is getting into the hands of cloud platform and mobile apps developers who are racing ahead into the next development bonanza.
We often are asked about differences between boards supporting ARM such as mbed, Raspberry Pi, Arduino Due, and Beaglebone. On the face of it, these boards can look similar and in fact, they are similar in that they each share an ARM processor at their very core. But if you intend to take your idea to production it is important to understand the differences that these processors have. In the table below we give an overview of two broad categories of device – Application processors and Microcontrollers.
Applications Processor
Microcontroller
Example Boards
Beagleboard, Raspberry Pi, Arduino Tre
Arduino Due, ARM mbed (Freescale Freedom, NXP LPC1768)
CPU family
ARM Cortex-A processors
ARM11 processors
ARM Cortex-M processors
Graphics (2D)
Yes
Graphics (3D)
No
Video Capabilities
Limited
Audio Capabilities
Operating System (OS)
Linux, Android, Windows Embedded Compact
Bare metal, Real-Time Operating Systems (OS) e.g. FreeRTOS, RTX
Memory requirement
Megabytes
Kilobytes
Size
Starts around 4mm x 4mm
Plus external Flash and RAM
Starts around 2mm x 2mm
All memory is on-chip
Power
watts
Rechargeable mobile applications, tethered
milliwatts - think energy harvesting and coin cell batteries
Price
dollars
cents
Application processors are what you typically find powering your favorite apps & operating system in your Smartphone or PC; while Microcontrollers are ideally used for simple tasks such bluetooth headset, mouse or building access door. The cost of a development board tends to distort that there is a large difference in total system cost and power consumption between systems built with microcontrollers and systems built with application processors. Therefore, it is important to consider the host chip on the development board. Even if price is no object, the last thing you want to do is design a simple sensor with an application processor running Linux when your sole power supply is a CR2032 battery. Like all successful product designs, you need to consider the constraints of power, form factor and performance and ensure that your choice of processor fits these needs. The slide below shows some of the differences and tradeoffs:
The bottom line is that if you are building something very simple like taking sensor data and sending it to the cloud. Your model is predicated on having thousands of sensor to cloud devices, using an application processor is not just overkill and but will cost you substantially more than if you use a simple microcontroller based design - not just in silicon but also in the complexity of software development. However if you are designing a remote camera that detects faces then you are probably going to need to use an application processor.
Power requirements are a hugely important consideration. Having an external power supply, even if it’s USB, will cost you a lot more than a simple battery that you may be able to use to power your microcontroller. This can also have an impact in terms of total system cost if you have to procure cables and power supplies, not to mention the logistics of having a reliable power source. This also has implications on product weight and form factor - for portable devices power can mean larger batteries and power electronics; resultant heat can mean heatsinks or even fans may be required. Can you imagine a Fitbit with a fan? Also it’s worth noting that technology advances in the area energy harvesting are growing rapidly avoiding the need to have a battery altogether. Many of these energy-harvesting techniques can supply a few mA of current in short bursts enabling small electronics to gather enough data and transmit that data very quickly repeatedly. Devices built based on using such energy harvesting techniques will need to fit within ultra-low power envelopes, only available through the use of microcontrollers. This is why ARM based devices are designed for energy efficient operation; enabling ever smaller, lower cost IoT devices.
Physical IoT devices, by their very nature, are extremely diverse. Compare a smart watch with a connected car, for example! One of the key benefits of the ARM ecosystem is that there is a wide range microcontroller and application processors to fit the exact needs of your IoT application - whilst retaining a common architecture. ARM’s business model lends itself to a large ecosystem of innovation around our core IP enabling silicon partners to develop optimized silicon for different vertical markets; in fact, ARM has over 300 different companies who have licensed ARM cores to build over 1000 different chips.
Another key consideration is the software development environment. These options vary depending on whether you are developing on a microcontroller or application processor based platform.
In the early days of MCUs, developers needed to write assembly language specific to the vendor.
In the past decade, this approach has been largely supplemented by embedded C development. Advancements in compiler and debug technology have enabled developers to work with a far wider range of devices, in more diverse projects, and handle more complex applications.
More recently, Arduino has introduced microcontrollers to a huge new audience. Arduino was initially developed to make microelectronics accessible to artists, but has seen adoption by many interest groups inspired to learn about the possibilities of microcontrollers. In doing so, it has popularized a platform paradigm that hides the software details to enable experimentation. This approach is invaluable to creators who want to test ideas quickly, especially where the microcontroller is not the focus of a project. This is already part of the ARM world - the Arduino Due platform features the Atmel SAM3X8E MCU, based on the ARM Cortex-M3 processor.
Standardization in processor architectures in MCU has allowed the ecosystem that supports this to flourish. Further advances are making it possible to use even higher level scripting languages such as Python and even web programming models such as Javascript on to of Microcontrollers such as Tessel.
Fortunately, Android, iOS, and Full Linux like Ubuntu have already created a rich choice of development environments on which we can choose to write software providing a plethora of options ranging from native C/C++, JAVA, scripting languages, all the way up to high-level languages like HTML5. It used to be that to develop on ARM you had to have a cross-compiler development environment on an x86 PC. Now with the advances in ARM based development environments, it is more than possible to use something like a Samsung ARM Chromebook or an Odroid running full Ubuntu OS to compile for ARM on ARM, but that probably is a topic for another blog on its own. Remember not all application processors are created alike. Whilst being upward compatible, CPU cores capabilities vary between ARM architectures like ARMv6 (ARM 11) and ARMv7-A (Cortex-A) where the latter brought instructions such as the NEON engine which bring a high performance SIMD (Simultaneous Input Multiple Data) engine suitable for accelerating workloads such as multimedia and SMP (Symmetric Multi-Processing) enabling efficient multi-threading. With the recently introduced ARMv8-A there is even the potential for 64-bit embedded devices in the future.
Let’s now talk specifics about affordable development platforms. There are many ARM based development platforms each providing unique value in this diverse ecosystem of development boards. Below is a table of some of the ARM-based hardware development platforms available on the market today costing as low as $12.95 up to $199 and easily available for anyone to purchase with a credit card. We are sure that there are many more that that we have left off and more will be added as time goes on. In fact, if you can think of any not listed, please reach out to us and we can make sure to add that to the list, as we would like to keep a running tab.
MCU Dev Platform
ARM MCU
SoC Vendor
Apps Processor Dev Dev Platform
ARM CPU
Arduino Due
Cortex-M3
Atmel
Arduino Tre
Cortex-A8
TI
Freedom
Cortex-M0
Freescale Semiconductor
Beaglebone
Ombitron
STMicroelectronics
Odroid XU
big.LITTLE(TM) 4 x Cortex-A15
4 x Cortex-A7
Samsung
Tessel
NXP
Raspberry Pi
ARM11
Broadcom
Xpresso
Cortex-M4
Vybrid
Cortex-A5
Freescale
To summarize, the great thing is there is a LOT of choice in the marketplace for ARM based development boards with the list growing almost daily. When deciding on which board is right for you it’s first important to decide if you want to use a microcontroller or an applications processor. Some criteria for consideration are application, complexity, final system cost, power and budget.
Once you choose the right class of processor, next is to decide the right development platform. With application processors, it is easier to choose, as software compatibility across the ARM ecosystem ensures that if there are drivers for the OS you want to work on you should have a similar environment with the caveat that you might be choosing a particular chip based on some specific capability in the underlying platform.
The speed of connected product innovation is enabling a plethora of new business models never before thought conceivable. Much like the PC was the default developer platform in the 90’s, ARM embedded development platforms will become the preferred development platform well into this century. Fortunately for the ARM ecosystem, this is getting much easier with engineering shops like Linaro enabling easy bring up of Linux and mature platforms like Android fully supported on ARM.
Cloud-based development platforms like ARM mbed will enable rapid development of IoT products for professional developers – bringing together a baseline ecosystem of software components expected in IoT designs, and freeing the silicon vendors to focus on differentiation and incremental value.
There is a lot of activity here, including a new Raspberry Pi Compute Module which has just been announced see here for more info
New Raspberry Pi Compute Module revealed