When it comes to “embedded systems”, many people might feel that it is far removed from daily life, often associating it with machines filled with buttons in factories or circuit boards cluttered with wires in laboratories.
However, embedded technology is actually hidden in many of the devices we interact with every day. For instance, we wake up to the alarm of a smart wristband, use a smart rice cooker to heat porridge while checking data on a smart watch equipped with a smart chip, and even the subway we take to work operates on an embedded system. Even household devices like robotic vacuum cleaners and air conditioner remotes are fundamentally powered by embedded technology.

In simple terms, embedded systems are the “brains hidden within devices”. They are not like the general-purpose computers we use daily, which can run Office for document writing or games for entertainment, making them flexible but somewhat chaotic. Embedded systems are “dedicated”; for example, the embedded system in a smart speaker is solely responsible for listening to commands, playing music, and connecting to WiFi, while the one in a microwave only manages temperature and timing, with a clear objective. The core concept is “embedding”—integrating computing and control capabilities into specific devices, transforming them from “inanimate objects” into “smart devices” that can perform tasks as needed. The essence lies in the combination of “hardware + software”.
However, embedded technology is not a one-size-fits-all field; it encompasses numerous subfields, each serving different functions.
1. Embedded Application Development
As the name suggests, this area leans towards “software” and primarily involves writing programs that enable devices to function. For example, the smart wristbands we use can display step counts and heart rates while syncing data with our smartphones. Another example is developing a smart desk lamp, where the user needs to be able to “adjust brightness, set a timer, and control it via a mobile app”. The application developer is responsible for writing the code, starting with the logic to “read data from the light sensor”, then writing the program to “adjust the lamp’s brightness according to app commands”, and finally integrating these functionalities to ensure the lamp operates according to the specified rules.

2. Embedded Driver Development
While we just mentioned that application development involves “writing functional programs”, driver development serves as the “bridge that allows programs to connect with hardware”. For instance, if a smart wristband contains a heart rate sensor, and the application developer wants to “read heart rate data”, the sensor is hardware while the program is software. How does the software “communicate with the hardware”? This is where the driver program comes in. The driver developer writes code that instructs the program on “how to send commands to the sensor” and “how to interpret the data returned by the sensor”. For example, if the sensor returns a series of 0s and 1s, the driver program converts it into a readable format like “80 beats per minute” so that the application can utilize it.

For example, when a computer sends a command to a printer to “print this image”, it also relies on a “printer driver”. The driver program knows “how to move the printer’s ink cartridges” and “how to feed the paper”, converting the image data from the computer into signals that the printer can understand.
3. Embedded Hardware Development
This area focuses on “hardware design”, primarily responsible for “building the ‘skeleton’ of the device”. For instance, in a smart watch, what chips need to be placed on the mainboard? How do the chips and sensors connect via wiring? How should the battery supply power without damaging the components? These are all concerns of hardware development.Choosing components based on the device’s functionality is crucial; for example, when creating a thermometer, one must select a “temperature-sensing sensor”, a “display screen for showing numbers”, and a “battery for power supply”, while also considering the dimensions of these components to ensure they fit within the compact casing of the thermometer. Then, a “circuit board schematic” must be drawn using specialized software to outline the connections between chips, sensors, and batteries, ensuring that current flows correctly and does not short-circuit. Finally, testing is required, where the schematic is sent to a factory to produce a few samples, solder the components, and check if they function correctly. If the screen does not light up or the sensor fails to read data, one must investigate whether the wiring was drawn incorrectly or if the wrong components were selected.

To work in this area, one must understand the basics of “electronic circuits”. For instance, knowing the functions of resistors and capacitors, how to calculate current and voltage in a circuit, and understanding that “chips require a 5V power supply” means one cannot connect them to a 3V source, or else the chip may burn out. Additionally, proficiency in hardware design tools, such as Altium Designer, is necessary; these software programs can transform the conceptual “skeleton of the device” into producible schematics.
Moreover, one must also understand “chip selection”. There are numerous chips available on the market, some are inexpensive but have limited functionality, while others are powerful but consume more power. It is essential to choose the most suitable chip based on the device’s cost and purpose; for instance, a simple control board for a children’s toy does not require an expensive chip, just one that can control sound and light will suffice.
4. Embedded AIoT Development
In simple terms, this is the combination of “embedded systems + Internet of Things + artificial intelligence”. Its core objective is to make devices “connected” and “intelligent”. “Connected” means enabling embedded devices to access the internet, whether through WiFi, Bluetooth, or dedicated IoT cards, allowing device data to be sent to mobile apps or the cloud. For example, a smart refrigerator can notify the user via their phone about which ingredients are nearing expiration. “Intelligent” means enabling devices to make simple judgments without relying entirely on human control; for instance, using AI algorithms to train a camera to “recognize cats and dogs”, allowing a pet camera to automatically send alerts like “your cat is scratching the sofa” instead of triggering alarms for every little movement.

Regarding job positions, there are the following:
Pure Hardware
Hardware Engineer: Primarily responsible for circuit design, schematic drawing, and hardware debugging. Must be familiar with the principles of analog and digital circuit design and proficient in software such as Altium Designer and Cadence, as well as hardware debugging tools like multimeters and oscilloscopes. PCB Engineer: Focuses on PCB routing optimization and signal integrity design. Must be familiar with PCB design rules and signal integrity analysis methods, and proficient in software like Altium Designer and Cadence.
Combined Hardware and Software
MCU Development Engineer: Responsible for developing functional programs based on chips like STM32, debugging UART, SPI, I2C, and other peripheral programs. Must be proficient in C programming and familiar with peripheral development for chips like STM32. IoT Engineer: Responsible for developing IoT devices and their communication systems, utilizing technologies like Wi-Fi and BLE to achieve device connectivity. Must master embedded network protocol stacks and be familiar with wireless communication modules. RTOS Development Engineer: Develops based on real-time operating systems like FreeRTOS and RT-Thread, writing modules related to task management, communication interfaces, and memory management. Must be proficient in C programming and multitasking development, and familiar with RTOS task scheduling mechanisms. Driver Development Engineer: Primarily develops Linux device drivers, completing hardware interface development and optimization. Must be proficient in C programming and Linux kernel development, and familiar with device trees as well as character, block, and network device driver development.
Pure SoftwareLinux Application Development Engineer: Develops user-level applications on embedded Linux, addressing issues related to network communication, process management, and multithreading. Must master C/C++ programming languages and be familiar with Linux system calls and process management. QT Development Engineer: Uses the QT framework to develop graphical user interface applications, designing efficient and user-friendly embedded UI interaction systems. Must master C/C++ programming languages and be familiar with QT principles and QT Creator tools.