1.1.1 software platform Selection 1. Operating System Selection
Although the embedded system has a very broad market demand and development prospects, the development of embedded systems has experienced twists and turns and pains for many years. With the advent of microprocessor, low-cost and small-sized CPU and peripheral connections provide a stable and reliable hardware architecture, the bottleneck restricting the development of embedded systems is highlighted in the software. Some embedded operating systems have emerged since the end of 1980s, including Tornado/vxworkx, pSOSystem, neculeus, windowss ce, QNX, vrtx, and the popular nvwa program ", hopen, the Chinese embedded operating system, and the most talked about Embedded Linux operating system. There are many operating systems that can be used for embedded system software development, but the key is how to select an operating system suitable for your development project. We think the following points should be taken into consideration;
(1) development tools provided by the operating system. Some real-time operating systems (RTOs) only support the development tools of the system. In other words, the compiler and debugger must also be obtained from the operating system vendor. Some operating systems are widely used and third-party tools are available. Therefore, there is a lot of room for choice.
(2) The difficulty of porting the operating system to the hardware interface. Porting operating systems to hardware is an important issue. It is a key factor that affects whether the entire system can be completed on schedule. Therefore, we need to choose operating systems with high portability. This avoids all the difficulties that the operating system is difficult to transplant to the hardware and accelerates the development progress of the system.
(3) memory requirements of the operating system. Balance whether extra money is required to purchase Ram or EEPROM to cater to the large memory requirements of the operating system. Some operating systems require target dependent for memory. For example, Tornado/vxworkx allows developers to allocate resources as needed, rather than operating systems. Developers can choose up to 80 different configurations from the embedded design that requires several k-byte storage areas to the complex high-end real-time applications that require more operating system functions.
(4) are developers familiar with the operating system and its APIs.
(5) Whether the operating system has drivers that provide hardware, such as NICs.
(6) Whether the operating system can be tailored, that is, whether the system functions can be tailored according to actual needs. Some operating systems have strong scalability, such as embedded Linux, Tornado/VxWorks, etc.
(7) real-time operating system. Real-time data can be divided into soft real-time data and hard real-time data. Some embedded operating systems can only provide soft real-time, such as WindowsCE. Microsoft Windows CE 2.0 is a 32-bit, Windows-compatible, small-core, and scalable real-time operating system that meets the needs of most embedded and non-embedded applications. But not real-time enough, it is a soft real-time embedded operating system.
2. Programming Language Selection
(1) versatility. With the development of microprocessor technology, its functions become more and more specific and more types are available. However, different types of microprocessors all have their own specialized assembly languages. This sets a huge obstacle for system developers, making system programming more difficult and software reuse impossible. However, advanced languages generally have little to do with the hardware structure of specific machines, popular advanced languages have good support for most microprocessors and have good versatility.
(2) portability. Since the Assembly language is closely related to a specific microprocessor, the program designed for a microprocessor cannot be directly transplanted to another different type of microprocessor for use. Therefore, the portability is poor; high-level languages are common to all microprocessors. Therefore, programs can run on different microprocessors with better portability. This is the basis for software reuse.
(3) execution efficiency. In general, the more advanced the language, the larger the compiler and overhead, and the larger and slower the application. However, relying solely on low-level languages, such as assembly languages, for application development brings about complicated programming and long development cycles. Therefore, there is a trade-off between development time and running performance.
(4) maintainability. Low-level languages such as assembly languages do not have high maintainability. Advanced language programs are often modular, and interfaces between modules are fixed. Therefore, when the system encounters a problem, you can quickly locate the problem in a module and solve it as soon as possible. In addition, the modular design also facilitates the expansion and upgrade of system functions.
(5) Basic Performance. Many languages are used in the development of embedded systems. The advanced languages are Ada, C/C ++, Modula-2 and Java. The Ada Language is strictly defined, easy to read and understand, and supports a wide range of database programs. Currently, it is widely used in defense, aviation, aerospace, and other related fields, and will still play an important role in these fields in the future. C language supports a wide range of database programs. Currently, it is the most widely used programming language in embedded systems. It will still play an important role in the application field of embedded systems for a long time. C ++ is an object-oriented programming language. It has been 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 Objective Code of C ++ is often large and complex. This factor should be fully considered in embedded system applications. Modula-2 is clearly defined, Supports rich, has a good modular structure, has a wide range of applications in teaching and scientific research. Although the development and application of this language have been relatively gentle, it has recovered in Europe in the past two years. The Java language is relatively young, but has strong cross-platform features, and is currently gaining momentum. Its unique programming and available features make it popular in many fields. With the development of network technology and embedded technology, Java and embedded Java will become more and more widely used.
3. Selection of development tools
(1) Functions of the system debugger. System debugging, especially remote debugging, is an important function.
(2) supports database functions. Many development systems provide a lot of library functions and template code. For example, the familiar C ++ compiler has a standard template library, which provides a set of useful set-up, storage, search, and sorting objects.
(3) Whether the compiler developer continuously upgrades the compiler.
(4) Whether the Connection Program supports all file formats and symbol formats.