Click on the top“Big Fish Robot”, select“Pin/Star Official Account”
Welfare and dry goods, delivered at the first time!

The development of ARM-Linux programs is mainly divided into three categories: application development, driver development, and system kernel development. Different types of software development have their own characteristics.
Today, let’s take a look at the differences between ARM-Linux development and MCU development, as well as the basic development environment of ARM-Linux.
1. Differences Between ARM-Linux Application Development and MCU Development
First, it is necessary to explain that there are mainly two ways to develop applications for ARM: one is to develop applications directly on the ARM chip without using an operating system, also known as bare-metal programming. This development method is mainly applied to some low-end ARM chips, and the development process is very similar to that of microcontrollers, so it will not be elaborated here.
The other way is to run an operating system on the ARM chip, where hardware operations require writing corresponding driver programs, and application development is based on the operating system. This method of embedded application development is quite different from microcontroller development. The main differences between ARM-Linux application development and microcontroller development are as follows:
(1) Different hardware devices for application development environments
Microcontroller: Development board, emulator (debugger), USB cable;
ARM-Linux: Development board, network cable, serial cable, SD card;
For ARM-Linux development, there is usually no hardware debugger, especially during application development, hardware debuggers are rarely used. Program debugging is mainly done through serial ports; however, it should be noted that there are hardware emulators for ARM chips, but they are usually used for bare-metal development.
(2) Different methods of program download
Microcontroller: Download via emulator (debugger) or serial port;
ARM-Linux: Serial port download, tftp network download, or directly read and write SD, MMC cards, and other storage devices to achieve program download;
This is directly related to the hardware devices of the development environment. Since there is no hardware emulator, ARM-Linux development usually does not use emulator downloads; this may seem inconvenient, but it actually provides more download methods for ARM-Linux application development.
(3) Different hardware resources of chips
Microcontroller: Usually a complete computer system, including on-chip RAM, on-chip FLASH, and various peripherals such as UART, I2C, AD, DA;
ARM: Usually only has a CPU, requiring external circuits to provide RAM for ARM to operate normally, with external circuits providing FLASH, SD cards, and other storage systems images, and implementing various peripheral functions through external circuits. Due to the strong processing power of ARM chips, various complex functions can be implemented through external circuits, far exceeding that of microcontrollers.
(4) Different storage locations for firmware
Microcontroller: Usually equipped with on-chip flash memory, firmware programs are usually stored in this area. If the firmware is large, external circuits need to be designed to use external flash for firmware storage.
ARM-Linux: Due to the lack of on-chip flash and the need to run an operating system, the entire system image is usually large, thus the operating system image and applications for ARM-Linux development are usually stored on external MMC, SD cards, or using SATA devices, etc.
(5) Different startup methods
Microcontroller: Its structure is simple, with integrated flash, usually the chip manufacturer adds fixed jump instructions when the program is powered on, directly jumping to the program entry (usually in flash); the developed application program is compiled, and a dedicated download tool is used to directly download to the corresponding address space; therefore, after the system is powered on, it directly runs to the corresponding program entry, achieving system startup.
ARM-Linux: Due to the use of ARM chips, high execution efficiency, powerful functions, and relatively rich peripherals, it is a powerful computer system, and it requires running an operating system, so its startup method is quite different from that of microcontrollers, but is basically the same as that of home computers. Its startup generally includes BIOS, bootloader, kernel startup, application startup, and other stages;
(a) Boot BIOS: BIOS is the corresponding startup information set by the device manufacturer (chip or circuit board manufacturer). After the device is powered on, it will read the corresponding hardware device information, initialize the hardware devices, and then jump to the location where the bootloader is located (this position is fixed and set by the BIOS). (Based on personal understanding, the startup of BIOS is similar to that of microcontrollers, requiring the use of corresponding hardware debuggers to write firmware, stored in a certain flash space, and when the device is powered on, it reads the instructions from the flash space to start the BIOS program.)
(b) Boot bootloader: This part belongs to the embedded Linux software development section, where the corresponding bootloader program can be customized by modifying the code. The download of the bootloader is usually done by directly reading and writing to the SD card, i.e., writing and compiling the customized bootloader, generating the bootloader image file, and using tools (dedicated or general) to download it to the MBR area of the SD card (usually the first sector of the storage area). At this time, it is necessary to set in the BIOS or through the hardware circuit of the circuit board to choose the loading position of the bootloader; if BIOS is set to boot from the SD card, then after BIOS initialization is completed, it will jump to the SD card location to execute the bootloader, thus achieving the startup of the bootloader.
Bootloader’s main function is to initialize necessary hardware devices, create some information needed by the kernel, and pass this information to the kernel through relevant mechanisms, bringing the system’s software and hardware environment to an appropriate state, ultimately calling the operating system kernel, truly playing the role of guiding and loading the kernel.
(c) Kernel startup: After the bootloader completes initialization and related work, it will call the kernel startup program. This enters the actual startup of the operating system-related content, including the startup of corresponding hardware configuration, task management, resource management, and other kernel programs.
(d) Application startup: After the operating system kernel starts, the required applications can begin to start, completing the actual business operations.
2. Basic Development Environment of Arm-Linux
The previous section introduced the differences between ARM-Linux application development and microcontroller development. I believe you now have a basic understanding of ARM-Linux application development. Next, let’s introduce the basic development environment of ARM-Linux. It mainly includes two parts: hardware environment and software environment, taking iMX53 and Ubuntu as examples for explanation.
Development board: Hardware environment running ARM, or the corresponding ARM circuit board for the project;
Computer: Used as the development host, installing Linux (such as Ubuntu), or using a virtual machine to install Ubuntu;
Serial cable: Used for serial debugging or program download through the terminal during development;
Network cable: Used to connect the arm-board and the development host, achieving tftp download of the kernel (program, etc.), and running programs through the network nfs.
SD card (and card reader) or other storage devices: Used to store bootloader, kernel images, etc., as well as the final software system storage; during development, it is usually used to save the bootloader, guiding system startup.
Ubuntu: As the operating system, it is the carrier of the entire software development environment, where the corresponding development tools are arranged.
LTIB: This is a compilation toolchain provided by Freescale, which can easily compile source code files into suitable program code and debug the program; users can also build their own compilation toolchain by downloading the source code.
tftp: Used to download kernel files, application files, etc., from the development host Ubuntu to the arm-board.
nfs network file system: Used to establish a network nfs file root system on the development host, allowing the arm-board to read the virtual root file system on the development host through the nfs network file system, completing system startup; facilitating system development and debugging.
minicom: Serial debugging tool used to communicate with the arm-board on the development host, enabling operation and debugging of applications on the arm-board;
Eclipse: Integrated development environment, mainly facilitating code editing, compilation, etc., or using DS5, RealView, etc.; or using gedit for editing, compiling and managing through LTIB.
﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Disclaimer:This article is reproduced from the internet, and the copyright belongs to the original author. If there are any copyright issues, please contact us in a timely manner, thank you!
Collection of Previous Great Articles
These electronic components “artworks” are invincible!<<Click here
How to protect the circuit from burning out?<<Click here
windows 11 preview version is here<<Click here
If you think the article is good, forwarding and sharing is also our motivation for continuing to update.
5T Resource Giveaway! Including but not limited to:C/C++, Linux, Python, Java, PHP, Artificial Intelligence, PCB, FPGA, DSP, LabVIEW, Microcontrollers, etc.!
Reply “More Resources” in the official account to get them for free, looking forward to your attention~
Long press to recognize the QR code in the picture to follow