ARM development and X86 still have a lot of differences, here do a few simple introduction, in order to facilitate the X86 under the developers can quickly switch to the Linux on arm under the system.
With the development of arm in recent years, the use of Apple and Android is the fastest driving force, and now Windows supports arm, while smaller Raspberry Pi and some ultra-low-power modules also have the use of ARM's core.
Although Microsoft has been unable to stand alone, most of the devices that use Arm are Linux or Linux-like system cores, because Linux is very scalable and the resources available are very large. Under the "Software-defined world" approach, Linux on arm will be a big trend in the future.
The difference between the Linux on arm and the X86 system is the concept of "equipment", "X86 bios" can be burned in itself (that is, the revelation when pressing a burning write key, the boot area is less than the designated area of Flash, this address on a given board can not be changed), This is called Boot-loader, general use of u-boot. Of course, because U-boot is open source, so there are a lot of variations, but basically they are similar.
Once the Boot-loader is started, it jumps to the next address and starts loading the Linux kernel, where the most important thing is the file system. With the file system, there is no need to read and write the flash of the bare sector, but through the file system for the operation of data files. It will then go to the command-line interface, which has a small program called Busy-box that packs the usual commands together, makes it easier to use, is smaller, and runs faster. At this time, almost capable of doing everything under the shell. Remote management is possible via SSH.
If you want to enter the graphical interface, you need to run a X11 server program, you can install the XRDP service , and then log in and manage it from remote Desktop, just like running a normal Linux desktop device. Because arm power and heat are relatively small, and even most of them do not need fan cooling, completely mute, very suitable for a variety of equipment development . The future of all kinds of smart devices may be like this, in fact, is a computer running Linux.
Since it's a Linux computer, it's easy to develop software. But, wait! Because arm's device performance is still low, generally not suitable to run the IDE, code editing, compiling, packaging and other work, so generally on the PC built a " cross-compilation Environment ", compiled program, into a binary package, and then burned to write in. Android ADK, for example, is a set of tools that can be edited, debugged, compiled, packaged, and so on. And OpenWrt is the use of another set of ideas, directly can be compiled on the X86 build multiple versions of IPK files, and then through the Package Manager to download the installation (Android now also has a X86 version).
Of course, this step is still a bit of a hassle. Many cattle directly run Python or LUA, JavaScript scripts, can be run directly on all platforms, now based on the arm Cortex M0 script engine has come out (fully open source, but still in development, some functions are not fully called), such as Nodemcu , Micropython and so on.
But to get the exact same result on the embedded device, there is no problem with the command line, and the graphical interface is going to be a bit harder. Can be done by supporting the HTML5 engine (this has become a prevalent, such as nodejs/phonegap/kendo/react, etc.).
Ubuntu touch accomplishes similar functions through QML , using QT to encapsulate, and can mix HTML and native API calls, regardless of the display effect and consistency is very good.
If it is based on local display, it can also be developed directly using qt or PYQT , using the same set of code to support the development and operation of applications from clock to workstation, cluster level (different CPU and Linux kernel versions need to be recompiled, If the CPU and the kernel can be binary compatible).
Linux on ARM Development summary