Are you considering making the transition from an Intel-based board to an ARM-based board? While it may seem as simple as swapping one for the other, we all know that things are rarely as simple as they appear.
To that end, I asked two experts at WinSystems what a designer might encounter when making that change. First, I asked, "What are some of the key hardware differences that systems integrators need to consider when migrating from Intel-based boards to ARM-based boards?"
Here's the response I got from Mike Norton, the resident hardware expert:
A couple of the key hardware differences when migrating from Intel-based boards to ARM-based boards are associated with power and I/O configuration. In most cases, ARM processors are used when targeting low-power embedded and mobile applications. It's important to understand the power envelope to which you will be constrained.
You may want your design to be powered from battery, solar power, or possibly Power-over-Ethernet (PoE). Providing sleep states and fast boot capabilities are typically expected for these applications and to further minimize power.
I/O configuration is another area of concern. ARM chip manufacturers often design processors with a plethora of I/O capabilities and communication standard protocols. Many of these I/O and communication options are mutually exclusive. It's important to understand what features are available and what can be configured to work simultaneously.
Here's the response I got from Patrick Philip, the resident software expert:
When migrating from an Intel platform running some flavor of a Microsoft OS to an ARM platform running Linux, there's a moderate learning curve for software engineers and a paradigm shift when it comes to the way things are done in Linux.
If porting Linux to a new platform, the key software difference is the need to set up an ARM cross-development environment on the workstations where the OS is being developed and images created. Building Linux on an x86 platform for an x86 platform is straight forward. Building Linux on an x86 platform for an ARM platform requires new compilers, libraries, and source code. However, once solved, at the start of the project, this issue is rarely thought about afterwards.
If developing application software, there are minimal key differences. When running Linux, both x86 and ARM platforms will have the same standard C/C++ support and the compilers will be a version of GCC. On both platforms, software will open files and devices using the same API calls and usually the same parameters.
The cross development host used to build the ARM operating-system image can also be used to build and (remotely) debug the ARM applications. However, if the ARM platform is stable and has sufficient resources to build and debug the application natively, the key application software development differences between Intel and ARM are nearly nonexistent.
Lastly, I asked Philip why, from a purely technology perspective, a developer who is comfortable working with Intel-based products, would consider moving to ARM-based products?
It really depends on the application. If a developer is working with Intel because the product will run Microsoft Windows 7/8/10, ARM should not be a consideration. However, if the product can run Linux or Android, the low power and scalability of ARM processors opens up new applications. It can go in a lightweight multi-core tablet running Android, or into an extremely low power, battery-operated blood pressure cuff. And if you're an embedded software or firmware engineer, acquiring ARM skills lets you work with a diverse set of ARM devices, from multi-core SoCs, to low-power MCUs.