This article will describe the key characteristics of embedded real-time systems, then discuss how to develop an efficient embedded system solution based on the hardware and software components selected or developed, and introduce the unique key processing technologies required to develop these systems.
Many system designers will perform a hardware/software co-design cycle (Figure 1), where the hardware and software are developed simultaneously. Understanding the relationship between hardware and software functions and the partitioning of the two helps ensure that system requirements are fully and correctly implemented.
In the early stages of defining and analyzing requirements, system developers need to work closely with design engineers to allocate the required functions to hardware or software. This is based on the results of early system simulation, prototyping, and behavioral modeling, as well as the trade-offs of the various factors mentioned above and past design experience (Figure 2). Once this allocation is completed, detailed design and implementation will begin. When hardware and software design are performed simultaneously, a variety of analysis techniques will be applied to the development process of real-time systems, including: hardware and software simulation, hardware/software co-simulation, scalability modeling (such as rate monotonicity analysis), prototyping, and incremental development.
Simulation techniques that can be used at various levels of abstraction allow for early assessment of performance. Low-level simulations can be used to model bus bandwidth and data flow, and they are also very useful for assessing performance. High-level simulations can address functional interaction issues, study hardware/software tradeoffs, and verify design effectiveness. Using simulation methods, complex systems can be abstracted to their underlying components and behaviors. Simulation can help address functional issues (data and algorithms), behavioral issues (processing order), or performance issues (resource utilization, throughput, and timing).
Optimization of embedded real-time systems is very important. Because these systems are designed to solve relatively narrow problems, the hardware and software are optimized to execute a single application well. The goal is to design the system under the condition of achieving the best balance between hardware and software. The main factors affecting this stage include the choice of processor, how to divide the application between hardware and software, and the integration of the whole system.
When selecting a processor for an embedded real-time system, you should consider the following factors:
1. Performance: The processor must have sufficient performance to handle the task and support the product life cycle.
2. Implementation: Depending on the specific application, the processor required may be a highly integrated product, even meeting military specifications. For a DSP application, it can choose from several options. One option is an ASIC. This device can be used as a DSP coprocessor, but it is not very flexible for many general signal processing applications. Another option is a RISC processor. This device has a very fast clock speed, but may not be scalable and may have other real-time issues. FPGAs are fast devices that can perform some DSP functions very quickly and efficiently, but they are still difficult to develop compared to DSPs.
In a DSP, a simple program can perform these same functions. If the application is a host signal processing application, then choosing a more powerful, higher power general-purpose processor may be fine. If the signal processing application requires rapid scalability, then a programmable device like a DSP will be more attractive than a custom hardware solution.
3. Tool support: Tools that support software creation, debugging, system integration, code tuning, and optimization are very important for the success of the entire project.
4. Operating system support: The complexity of embedded system applications requires the use of beneficial abstractions to reduce complexity. Commercial operating systems optimized for the selected processor can shorten the application development cycle and product time to market.
5. Past experience: Previous experience with the selected processor or processor family can reduce the time required to learn new processors, tools, and techniques.
6. Simulation support: Cycle-accurate simulation technology is very important in certain types of applications, especially for digital signal processing, most of its functions rely on simulation technology to verify correctness. The software/hardware co-design model of embedded systems also makes processor simulators a useful tool in the development process.
7. Application support: There are many types of support - from application guides provided through hotlines or websites to pre-packaged software; from application frameworks to available test benchmarks. Some DSP processors also provide drivers for peripheral devices, board support packages, and other "starter kits". These softwares enable application developers to no longer have to write software that does not add value, such as device drivers, and instead focus on developing value-added functions for applications, which will make the products personalized in the market.
8. Cost: Embedded applications are very cost sensitive. A few cents of cost difference can determine the success or failure of a product in the market. 9. Power consumption: Many portable embedded real-time systems are battery powered. Therefore, battery life becomes an important parameter of the system. In this case, low-power devices optimized for portable applications should be considered.
10.遗留代码:选用需要移植现有代码的处理器可能会显著延长开发周期。选择一款代码兼容的器件则可以缩短或省去移植代码的步骤。
11. Algorithmic complexity: A particular processor can run a particular algorithm very efficiently. The processor you choose should match the application as closely as possible. For example, a finite state machine application that contains a lot of control code should use a RISC device, such as an ARM processor. Signal processing applications such as encoding, decoding, and echo cancellation should use a DSP or some device with a signal processing accelerator.
12. Time to market: Project deadlines may affect processor selection. This is closely related to the aforementioned selection criteria, such as the availability of operating systems and other software, and code portability.
As embedded system budgets continue to shrink, commercial technologies such as real-time operating systems (RTOS) and TCP/IP stacks have been enhanced, and the demands on embedded systems continue to expand, the practice of using commercial off-the-shelf technology is becoming more and more popular. Using commercial off-the-shelf technology can shorten certain stages of the development cycle, including coding, debugging, unit testing, and code review.
However, if a company decides to buy rather than develop, it will change its fundamental development process. Some of the new tasks that companies that choose to buy commercial off-the-shelf technology can expect to perform include: researching and evaluating suppliers, product evaluation, and subsequent interaction and relationship maintenance with suppliers.
It is important to involve end users and technical personnel in the selection process of commercial off-the-shelf technology vendors. In the selection process, not only should technical issues be considered, but also the business needs should be focused on. Factors that affect cost include: ease of learning, ease of use, vendor reputation and stability, licensing agreements, and training issues. The main tasks in selecting a vendor include: researching and understanding technical standards; seeking vendor proposals; evaluating vendor proposals and ranking them; selecting a vendor and signing a contract with it.
Embedded system vendors have realized that they need to accelerate the software development process by providing software modules and frameworks. In the DSP field, vendors provide hundreds of DSP software to DSP designers for them to use in product and system development, including reference frameworks.
In the early stages of application development, a reference framework is a solution that designers can use to start their projects. The reference framework contains source code that can be used in many applications. Designers can choose the specific reference framework that best meets their system needs, and then combine the reference framework with algorithms (commercial off-the-shelf technology of DSP sold by other suppliers or algorithms they develop themselves) to create specific applications for a range of terminal devices, including broadband, voice, video imaging, biometrics, and wireless infrastructure.