Research on Hardware and Software Selection in Embedded System Design
2026-04-06 07:12:50··#1
This article discusses the selection of hardware and software in embedded system design from an engineering perspective, and outlines the factors to consider when making such selections. I. Introduction According to the engineering design methodology of embedded systems, the design can be roughly divided into three stages: analysis, design, and implementation. The main task of the analysis stage is to determine the problem to be solved and the objectives to be achieved. Therefore, the analysis stage is often called the "requirements stage" or "system requirements stage." The main task of the design stage is to solve how to fulfill the user's requirements under given constraints. This stage studies "how to do it" based on the analysis stage. The implementation stage mainly solves how to coordinate the implementation of the entire hardware and software system based on the selected hardware and software. Following this design philosophy, after the analysis stage, developers often face a challenging problem: the selection of hardware and software, as their quality directly affects the completion of the implementation stage. Common hardware and software choices include: 1. Processor 2. Hardware components 3. Operating system 4. Programming language 5. Software development tools 6. Hardware debugging tools 7. Software components. Among these choices, the processor is usually the most important, while the operating system or programming language is also crucial. Furthermore, the choice of processor sometimes limits the choice of operating system, which in turn limits the choice of development tools. Therefore, this article analyzes some evaluation factors for selecting hardware and software in embedded system design. II. Hardware Selection (I) Selection of Embedded Processors The core component of an embedded system is the various types of embedded processors. According to incomplete statistics, there are more than 1,000 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 more than 100 types of embedded microprocessors. Due to the extreme variability in embedded system design, the selection is diverse. The main factors designers need to consider when selecting a processor include: 1. Investigating listed CPU suppliers. Some companies, such as Motorola, Intel, and AMD, are very well-known, while some smaller companies, such as QED (Santa Clara.CA), although less well-known, also produce excellent microprocessors. Additionally, some companies, such as ARM and MIPS, only design but do not manufacture CPUs; they grant manufacturing rights to semiconductor manufacturers around the world. ARM is another microprocessor manufacturer that has gained influence in embedded systems in recent years. ARM 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. 2. Processor speed. A processor's performance depends on several factors: 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 to choose a processor and I/O subsystem capable of completing the task. If your design is for high-performance applications, it is recommended that you consider some new processors that are extremely inexpensive, such as IBM and Motorola's PowerPC. Intel's i960 was once a best-selling RISC high-performance chip, but in recent years it has faced strong competition, giving way to MIPS, SH, and the rising star ARM. 3. Technical specifications. Currently, many embedded processors integrate peripheral device functionality, thereby reducing the number of chips and thus lowering the overall system development cost. Developers first consider whether some of 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. It's worth noting that AMD recently released the Am186CC communication processor, which integrates the familiar x86 core, four-way HDLC, and a USB peripheral controller. This processor is suitable for various communication applications, including: ISDN terminal adapters, low-end routers, digital leased line (xDSL) modems, USB peripherals, PBX applications, digital telephones, digital loop carriers, and telephone systems. 4. Low power consumption of the processor. 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, powered by a regular battery, and costs less than $50. Typical examples include NEC and Hitachi's VR4111 and SH7707 designed for HPC and Palm PC, respectively. Digital's Strong ARM 1100 integrates a color LCD controller, a PCMCIA touchscreen interface, and six other interfaces (including USB and IRDA) in a tiny 200MHz package, with a bulk price under $40. 5. Processor software support tools. Having only a processor without good software development tools is insufficient; therefore, choosing appropriate software development tools plays a significant role in system implementation. 6. Does the processor have built-in debugging tools? Built-in debugging tools can greatly shorten the debugging cycle and reduce the difficulty of debugging. 7. Does the processor vendor provide evaluation boards? Many processor vendors can provide evaluation boards to verify the correctness of your theories and the appropriateness of your decisions. (II) Hardware Platform Selection 1. Scale. Do you plan to make one set? Multiple sets? Or mass production? If your scale is relatively large, you can design and manufacture the hardware yourself, which can reduce costs. Otherwise, it is best to purchase motherboards and I/O boards from third parties. 2. Opportunities in the target market. If you want to launch your product as soon as possible to gain a competitive edge, you should buy mature hardware whenever possible. Otherwise, you can design your own hardware to reduce costs. 3. Software dependence on hardware. Can the software be developed before the hardware is available? III. Software Selection (I) Operating System Selection Although embedded systems have an incredibly broad market demand and development prospects, their development has been a tortuous and painful process over the years. With the advent of microprocessors, inexpensive and compact CPUs and peripheral connections have provided a stable and reliable hardware architecture. Therefore, the bottleneck limiting the development of embedded systems has become prominent in the software aspect. Since the late 1980s, a number of embedded operating systems have emerged, the more famous ones being Tornado/VxWorkx, pSOSystem, Neculeus, Windows CE, QNX, VRTX, as well as the much-discussed "Nuwa Project," China's own embedded operating system HOPEN, and the currently most talked-about embedded Linux operating system, etc. 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 your development project. We believe that the following points should be considered: 1. What development tools does the operating system provide? Some real-time operating systems (RTOS) only support the development tools provided by the system vendor. This means that compilers, debuggers, etc., must also be obtained from the operating system vendor. Other operating systems are widely used and have third-party tools available, thus offering a wider range of choices. For example, PSOSystem supports tools such as pRISM+, a fully integrated development environment (IDE) with a source code debugger (SpOTLIGHT), a C/C++ compiler (eg. Diab), an assembler, a linker, a C/C++ development environment (SNiFF+), an embedded system monitoring tool (Esp), and CORBA. Tornado/VxWorkx supports tools such as a remote source-level debugger; a browser; the WindSh command-line interface; a module loader; target tools; WindConfig board base support package configuration; and approximately 90 third-party embedded development tools and extensions. 2. The difficulty of porting the operating system to the hardware interface. Porting the operating system to hardware is a crucial issue. It is a key factor in whether the entire system can be completed on schedule. Therefore, we must choose operating systems with high portability to avoid the difficulties caused by the inability to port the operating system to hardware and accelerate the system development process. 3. Operating System Memory Requirements. Consider whether additional investment in RAM or EEPROM is necessary to meet the operating system's high memory demands. Some operating systems have target-dependent memory requirements, such as Tornado/VxWorks. Developers can allocate resources based on application needs, rather than allocating resources to the operating system itself. From embedded designs requiring a few kilobytes of storage to complex, high-end real-time applications demanding more operating system functionality, developers can choose from up to 80 different configurations. 4. Developer Familiarity with the Operating System and its APIs. 5. Does the Operating System Provide Hardware Drivers, such as for network cards? 6. Is the Operating System Customizable, i.e., can its functionality be tailored to specific needs? Some operating systems offer strong customizability, such as embedded Linux and Tornado/VxWorks. 7. Operating System Real-Time Performance. Real-time performance is divided into soft real-time and hard real-time. Some embedded operating systems only provide soft real-time performance, such as Windows CE. As Microsoft's renowned "Venus," Microsoft Windows CE 2.0 is a 32-bit, Windows-compatible, small-kernel, scalable real-time operating system that meets the needs of most embedded and non-embedded applications. However, it is not real-time enough and belongs to the soft real-time embedded operating system category. (II) Programming Language Selection 1. Universality. With the continuous development of microprocessor technology, its functions are becoming more and more specific and its types are increasing. However, different types of microprocessors have their own dedicated assembly languages. This sets a huge obstacle for system developers, making system programming more difficult and software reuse impossible. High-level languages are generally less related to the hardware structure of specific machines. Popular high-level languages have good support for most microprocessors and have better universality. 2. Portability. Because assembly languages are closely related to specific microprocessors, programs designed for one type of microprocessor cannot be directly ported to another type of microprocessor. Therefore, portability is poor. High-level languages are universal for all microprocessors. Therefore, programs can run on different microprocessors and have better portability. This is the basis for achieving software reuse. 3. Execution efficiency. Generally, the higher the level of the language, the larger the compiler and the greater the overhead, resulting in larger and slower applications. However, relying solely on low-level languages, such as assembly language, for application development leads to programming complexity and long development cycles. Therefore, there is a trade-off between development time and runtime performance. 4. Maintainability. Low-level languages, such as assembly language, have low maintainability. High-level language programs are often modularly designed, with fixed interfaces between modules. Therefore, when a system problem occurs, the issue can be quickly located within a specific module and resolved as soon as possible. In addition, modular design facilitates the expansion and upgrading of system functionality. 5. Basic Performance. Many languages are used in embedded system development. Widely used high-level languages include Ada, C/C++, Modula-2, and JAVA. Ada has a strict definition, is easy to read and understand, and has rich library support. It is currently widely used in defense, aviation, aerospace, and other related fields, and will continue to play an important role in these fields in the future. C language has extensive library support and is currently the most widely used programming language in embedded systems. It will continue to play an important role in the field of embedded system applications for a long time to come. C++ is an object-oriented programming language and 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 with C++, the target code of C++ is often larger and more complex. This factor should be fully considered in embedded system applications. Modula-2 has a clear definition, rich support, and a good modular structure. It has a wide range of applications in teaching and research. Although the development and application of this language has been relatively slow, it has recovered in Europe in the last two years. Java language is relatively young, but it has strong cross-platform characteristics and is currently developing strongly. Its "write once, use anywhere" feature makes it very popular in many fields. With the continuous development of network technology and embedded technology, the application of Java and embedded Java will become more and more widespread [2]. (III) Selection of development tools 1. Functions of system debugger. System debugging, especially remote debugging, is an important function. 2. Support library functions. Many development systems provide a large number of used library functions and template code. For example, the C++ compiler, which is familiar to everyone, comes with a standard template library, which provides a set of tools for defining various useful collection, storage, search, and sorting objects. 3. Does the compiler developer continuously upgrade the compiler? 4. Does the linker support all file formats and symbol formats? (IV) Selection of Hardware Debugging Tools A good software debugger can effectively find most errors. However, if you choose a good hardware debugger, you will achieve twice the result with half the effort. Commonly used hardware debugging tools include the following: 1. Real-time In-Circuit Emulator (ICE). From the user's perspective, the ICE should be a controllable MCU. The ICE is connected to the target system via a short cable with a plug at one end that plugs into 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. 2. Logic Analyzer. Logic analyzers are most commonly used for hardware debugging, but they can also be used for software debugging. It is a passive device mainly used to monitor events on the system bus.