Share this

Discussion on the Selection of Linux Embedded System Development Platform

2026-04-06 06:25:42 · · #1
Abstract : Linux offers significant advantages for embedded product development, namely abundant development resources and low cost. However, the complexity and diversity of technical routes, coupled with a relative shortage of specialized talent, pose challenges for Linux embedded system development. This article explores and studies platform selection issues in Linux embedded system development from a practical application perspective, hoping to provide some benefit to Linux developers and researchers. 1. Embedded Systems and Linux According to a definition from the Institute of Electrical Engineers (IEEE), an embedded system is a device used to control or monitor large-scale systems such as machines, devices, or factories. Specifically, it is a combination of computer software and hardware; it is application-centric, based on computer technology, and its software and hardware are customizable to meet the stringent requirements of practical applications regarding functionality, reliability, cost, size, and power consumption. Generally, embedded systems cannot use general-purpose computers and run fixed software, making it difficult or impossible for end users to modify the firmware. Linux, on the other hand, has long been a household name in the IT industry. In summary, applying Linux to embedded system development has the following advantages: ① Linux possesses a complete toolchain, making it easy to establish embedded system development and cross-platform environments, and overcoming the barriers of emulation tools (ICE) in embedded system development. ② The completely open kernel allows for the design and development of true hard real-time systems; soft real-time systems are also easily implemented in Linux. ③ Strong network support allows for the development of embedded TCP/IP network protocol stacks using Linux's network protocol stack. 2. Embedded System Design Process According to the engineering design methodology of embedded systems, the design of embedded systems can be divided into three stages: analysis, design, and implementation. The analysis stage determines the problem to be solved and the goals to be achieved, often referred to as the "requirements stage." The design stage mainly addresses how to fulfill user requirements under given constraints. The implementation stage mainly addresses how to coordinate the implementation of the entire hardware and software system based on the selected hardware and software. After the analysis stage, a common challenge for developers is the selection of hardware and software platforms, as their quality directly affects the completion of the implementation stage. Typically, hardware and software choices include: processors, hardware components, operating systems, programming languages, software development tools, hardware debugging tools, and software components. Among these choices, the processor is usually the most important, while the operating system and programming language are also crucial. The choice of processor often limits the choice of operating system, which in turn limits the choice of development tools. 3. Hardware Platform Selection 3.1 Processor Selection The core component of an embedded system is the various types of embedded processors. According to incomplete statistics, there are currently over 1000 types of embedded processors worldwide, with more than 30 popular architecture series. However, unlike the global PC market, no single microprocessor or microprocessor company dominates the embedded system market. For 32-bit CPUs alone, there are over 100 types of embedded microprocessors. Due to the extreme diversity in embedded system design, the choices are varied. A survey of publicly listed CPU suppliers reveals that some companies, such as Motorola, Intel, and AMD, are very well-known, while some smaller companies, such as QED (Santa Clara.CA), although less famous, also produce excellent microprocessors. In addition, some companies, such as ARM and MIPS, design CPUs but do not manufacture them; they award manufacturing rights to semiconductor manufacturers around the world. ARM is an influential microprocessor manufacturer in embedded systems in recent years, and its designs are well-suited for small power supply systems. Apple uses ARM in its Newton handheld computer, and several other digital cordless phones also use ARM. The main factors designers need to consider when choosing a processor are: ① Processing performance. A processor's performance depends on several factors, such as clock frequency, internal register size, and whether instructions process all registers equally. For many embedded system designs that require a processor, the goal is not to choose the fastest processor, but rather to select a processor and I/O subsystem capable of completing the task. For high-performance applications, it is recommended to consider some newer, relatively inexpensive processors, such as those from IBM and Motorola PowerPC. ② Technical specifications. Currently, many embedded processors integrate peripheral device functionality, reducing the number of chips and lowering the overall system development cost. Developers first consider whether the hardware required by the system can be connected to the processor without excessive glue logic (GL). Secondly, consider the supporting chips for the processor, such as DMA controllers, memory managers, interrupt controllers, serial devices, clocks, etc. ③ Power consumption. The largest and fastest-growing market for embedded microprocessors is consumer electronics such as handheld devices, electronic notebooks, PDAs, mobile phones, GPS navigators, and smart home appliances. Microprocessors selected for these products typically require high performance and low power consumption. Many CPU manufacturers have entered this field. Today, users can buy an embedded microprocessor that is as fast as a Pentium in a laptop; it only uses ordinary batteries and is very inexpensive. If used for industrial control, this aspect is less of a consideration. ④ Software support tools. A processor alone is not enough without good software development tools, so choosing appropriate software development tools will play a significant role in system implementation. ⑤ Whether there are built-in debugging tools. If the processor has built-in debugging tools, it can greatly shorten the debugging cycle and reduce the difficulty of debugging. ⑥ Whether the supplier provides evaluation boards. Many processor suppliers can provide evaluation boards to verify whether the theory is correct and whether the decision is appropriate. 3.2 Other factors in hardware component selection ① Production scale. ① Are you planning to make one set? Multiple sets? Or mass production? If the production scale is large, you can design and manufacture the hardware yourself, which can reduce costs. Otherwise, it's best to purchase motherboards and I/O boards from third parties. ② Market targets for development. If you want to launch the product as soon as possible to gain a competitive edge, you should buy mature hardware whenever possible; otherwise, you can design the hardware yourself to reduce costs. ③ Software dependence on hardware. Can the software be designed in parallel or developed in advance before the hardware is available? ④ Whenever possible, choose to use common hardware. Regarding CPU and architecture selection, one principle is: if there are alternative solutions, try not to choose hardware platforms that Linux does not yet support. 4. Software Platform Selection [img=549,330]http://www.e-works.net.cn/ewk2004/fileupload/images/127427098522343750.gif[/img] The embedded software development process shown in Figure 1 mainly involves several steps such as code programming, cross-compilation, cross-linking, downloading to the target board, and debugging. Therefore, the selection of the software platform also involves the following aspects. 4.1 Operating System Selection (1) Factors to Consider in Operating System Selection After the hardware scheme is determined, the selection of the operating system is relatively easy. Different hardware will affect the selection of the operating system. Low-end CPUs without MMU (Memory Management Unit) should use the uClinux operating system; while relatively high-end hardware can use ordinary embedded Linux operating systems. uClinux and ordinary Linux have their own advantages and disadvantages. There are many operating systems that can be used for embedded system software development, but the key is how to choose an operating system suitable for the development project. After years of development practice, the author believes that the following points should be considered: ① Development tools provided by the operating system. Some real-time operating systems (RTOS) only support the development tools provided by the system vendor, therefore, compilers, debuggers, etc., must also be obtained from the operating system vendor; while other operating systems are widely used and have third-party tools available, thus offering more choices. ② The difficulty of porting the operating system to hardware interfaces. Porting the operating system to hardware is a crucial issue and a key factor affecting the timely completion of the entire system. Therefore, it is essential to choose operating systems with high portability to avoid the difficulties caused by the operating system's inability to be ported to hardware, thereby accelerating the system development process. ③ The operating system's memory requirements. A balanced consideration should be given to whether additional funds are needed to purchase RAM or EEPROM to meet the operating system's significant memory requirements. ④ The developers' familiarity with the operating system and its provided APIs. ⑤ Whether the operating system provides hardware drivers, such as network cards. ⑥ The operating system's customizability. Some operating systems have strong customizability, such as embedded Linux, Tornado/VxWorks, etc. ⑦ The operating system's real-time performance. (2) Comparison of Several Types of Embedded Linux Systems Embedded Linux system products can be mainly divided into three categories: The first category is products specifically designed for embedded applications of Linux. Their product development direction is to make Linux smaller and easier to embed into hardware with higher requirements for size, functionality, and performance, such as MontaVista Linux from MontaVista. The second category is products specifically designed for the real-time characteristics of Linux. Linux is developed into a real-time system, especially a hard real-time system, for application in some critical control scenarios (not just information electronics). For example, RT-Linux developed by Fsmlabs has been used in many aspects of industrial control; the University of Coimbra in Portugal has used RT-Linux to implement a system for controlling reactions and programs in a chemical production control plant. The third category of products combines real-time performance with embedded solutions. Many companies do this and provide integrated development solutions, such as Lineo, TimeSys, etc. Therefore, when choosing an operating system, you should choose an embedded Linux system that suits your embedded and real-time requirements; at the same time, similar to the principle of hardware selection, if possible, try to use a common embedded Linux system. 4.2 Programming Language Selection The selection of a programming language mainly considers the following factors: ① Generality. Different types of microprocessors have their own dedicated assembly languages. This creates a significant obstacle for system developers, making system programming more difficult and hindering software reuse. High-level languages, on the other hand, are generally less tied to the specific hardware architecture of a machine, have good support from most microprocessors, and offer better generality. ② Portability. Assembly languages ​​are closely related to specific microprocessors; programs designed for one microprocessor cannot be directly ported to another, resulting in poor portability. High-level languages, however, are universal for all microprocessors, allowing programs to run on different microprocessors and offering better portability. ③ Execution efficiency. Generally, the higher the level of the language, the larger the compiler and overhead, leading to larger and slower applications. However, relying solely on low-level languages, such as assembly language, for application development results in complex programming and long development cycles. Therefore, there is a trade-off between development time and runtime performance. ④ Maintainability. Low-level languages, such as assembly language, have low maintainability. High-level language programs are often modularly designed, with fixed interfaces between modules. When a system problem occurs, the issue can be quickly located within a specific module and resolved as soon as possible. Furthermore, modular design facilitates system expansion and upgrades. A comparison of several development languages: Many languages ​​are used in embedded system development, with widely used high-level languages ​​including Ada, C/C++, Modula-2, and Java. Ada is strictly defined, easy to read and understand, and has rich library support. It is currently widely used in defense, aviation, and aerospace fields and will continue to hold an important position in these areas in the future. C has extensive library support and is currently the most widely used programming language in embedded systems, and will continue to hold an important position in embedded system applications for a long time to come. C++ is an object-oriented programming language that is also widely used in embedded system design, such as GNU C++. Visual C++ is an integrated development environment that supports visual programming and is widely used in GUI program development. However, compared to C, C++ object code is often larger and more complex, a factor that should be fully considered in embedded system applications. Modula-2 is clearly defined, offers rich support, and has a good modular structure, making it widely used in teaching and research. Although its development and application have been relatively slow, it has seen a resurgence in Europe in the last two years. Java is a relatively young language, but it has strong cross-platform capabilities and is currently experiencing strong growth. Java's "write once, use anywhere" characteristic makes it popular in many fields. With the continuous development of network and embedded technologies, the application of Java and embedded Java will become increasingly widespread; however, Java consumes significant hardware resources. 4.3 Factors to Consider for Integrated Development Environments The following factors should be considered when choosing an Integrated Development Environment (IDE): ① System debugger functionality. System debugging, especially remote debugging, is an important function. ② Support for library functions. Many development systems provide a large number of commonly used library functions and template code; for example, the familiar C++ compiler comes with a standard template library. It provides a set of tools for defining various useful collection, storage, search, and sorting objects. Similar to the principles for choosing hardware and operating systems: unless necessary, use the standard glibc whenever possible. ③ Whether the compiler developer continuously upgrades the compiler. ④ Whether the linker supports all file formats and symbol formats. 4.4 Selection of Hardware Debugging Tools A good software debugger can effectively find most errors, but choosing a good hardware debugger can achieve twice the result with half the effort. Commonly used hardware debugging tools include: ① In-Circuit Emulator (ICE). Looking at the ICE from the emulator plug, the ICE should appear as a controllable MCU. The ICE connects to the target system via a short cable. One end of this cable has a plug that connects to the processor socket, and the processor is plugged into this plug. The ICE supports common debugging operations such as single-stepping, breakpoints, disassembly, memory checking, source-level debugging, etc. ② Logic Analyzer. Logic analyzers are most commonly used for hardware debugging, but can also be used for software debugging. It is a passive device mainly used to monitor system bus events. ③ ROM Emulator. A ROM emulator is used to insert a device into the ROM socket on the target system to emulate a ROM chip. The program can be downloaded to the ROM emulator, and then debugged on the target system, just as if the program were burned into a PROM, thus avoiding the hassle of directly burning the program after each modification. ④ On-Chip Debugging (OCD) or Online Emulator (On-Chip emulator): Special silicon-based materials and customized serial connections to CPU pins are required to fully utilize the capabilities of OCD (On-Chip Debugging) on ​​these special CPU chips. A low-end adapter can connect the OCD port to the main workstation and front-end debugging software. In its basic form, the OCD is similar to a single ROM monitor, but unlike the latter, it does not require specialized programs or additional communication ports. 4.5 Software Component Selection Some software components are free, while others are licensed. Licensed software components are generally expensive, but they are usually rigorously tested, highly reliable, and have short debugging times. There are also some free software components available now, which offer good performance and reliability. Therefore, developers must weigh the options carefully to determine which approach is best. 5 Outlook Development abroad is booming, and domestic development is not lagging behind. Linux has strong vitality and value in embedded systems, and many companies and universities have shown varying degrees of interest in this area. There is reason to believe that the development of embedded Linux will lead us into a new era of embedded systems!
Read next

CATDOLL 132CM Luisa Silicone Doll

Height: 132 Silicone Weight: 28kg Shoulder Width: 36cm Bust/Waist/Hip: 60/58/76cm Oral Depth: N/A Vaginal Depth: 3-15cm...

Articles 2026-02-22