I. Main Components of an Embedded System
1. Processor core
The heart of an embedded system is the processor core. Processor cores range from a simple, inexpensive 8-bit microcontroller to more complex 32-bit or 64-bit microprocessors, and even multiple processors. Embedded designers must select the lowest-cost device for their applications that can meet all functional and non-functional time constraints and requirements.
2. Analog I/O
D/A and A/D converters are used to collect data from the environment and provide feedback. Embedded system designers must understand the types of data that need to be collected from the environment, the required data accuracy, and the input/output data rates in order to select the appropriate converter for the application. The responsiveness of an embedded system is determined by the external environment. Embedded systems must be fast enough to keep up with changes in the environment to simulate information, such as light, sound pressure, or acceleration, being sensed and input into the embedded system.
3. Sensors and actuators
Sensors typically perceive analog information from the environment. Actuators control the environment in some way.
4. User Interface
These interfaces can be as simple as an LED screen or as complex as the screens of well-crafted mobile phones and digital cameras.
5. Specific entry points for the application
Hardware acceleration, similar to ASICs or FPGAs, is used to accelerate specific functional modules that have high performance requirements in applications. Embedded designers must leverage accelerators to achieve maximum application performance in order to properly plan or partition the program.
6. Software
Software is a crucial component in embedded system development. In the past few years, the amount of embedded software has grown faster than Moore's Law, nearly doubling every ten months. Embedded software is frequently optimized for performance, memory, and power consumption. An increasing number of embedded software programs are written in high-level languages such as C/C++. However, many performance-critical code segments are still written in assembly language.
7. Memory
Memory is a crucial component of embedded systems, allowing embedded programs to run without RAM or ROM. Many types of volatile and non-volatile memories are used in embedded systems; more on this topic will be discussed later in the book.
8. Simulation and Diagnosis
Embedded systems are difficult to see or access. Debugging requires an interface connected to the embedded system. Diagnostic ports, such as those for the JTAG Joint Test Action Group, are frequently used for debugging embedded systems. On-chip emulation can provide visibility into the application's behavior. These emulation modules provide a visual representation of runtime behavior and performance, effectively replacing the functionality of an external logic analyzer with on-board self-diagnostic capabilities.
II. What to Learn in Embedded Systems
What are the core components of an embedded system? This is a common question when learning embedded development: what's the difference between C language and embedded C programming? Embedded engineers will generally tell you that the difference lies in the fact that embedded C language runs on an embedded development board. The CPU and the computer are different, so the compiler is different, and the generated executable program is also different. Unlike general software programming, embedded system programming based on a specific hardware platform inevitably requires its programming language to have strong direct hardware manipulation capabilities. So, what are the core components of an embedded system?
1. To improve execution speed and system reliability, the software in embedded systems is generally embedded in memory chips or the microcontroller itself, rather than stored on disks or other media.
2. Both the hardware and software of embedded systems must be designed specifically for the application, tailored to the specific needs and free of redundancy, striving to achieve higher performance on the same silicon area. This will make the choice of processor more competitive in specific applications.
3. Embedded systems are products of combining advanced computer technology, semiconductor technology, and electronic technology with specific applications in various industries. This inherently determines that they are technology-intensive, capital-intensive, highly decentralized, and constantly innovating knowledge integration systems.
4. Embedded systems do not have self-bootstrapping capabilities. Even after the design is completed, users usually cannot modify the program functions. A set of development tools and environment are required for development.
5. Embedded systems are typically application-specific embedded CPUs. Unlike general-purpose CPUs, embedded CPUs mostly operate in systems designed for specific user groups. They are usually characterized by low power consumption, small size, and high integration. They can integrate many tasks that are performed by boards in general-purpose CPUs into the chip, which is conducive to miniaturization of embedded system design, greatly enhances mobility, and makes the coupling with the network increasingly tighter.
6. Embedded systems are organically integrated with specific applications, and their upgrades and replacements are carried out in sync with specific products. Therefore, once embedded system products enter the market, they have a long life cycle.