Understanding the Concept of “Embedded”
1 From the Hardware Perspective
Integrating CPU-based peripheral devices into the CPU chip itself. For example, in early computers based on the X86 architecture, the CPU only had arithmetic and accumulator functions, and all chips had to create external bridges to expand functionality. Devices like serial ports were implemented using external serial controller chips like the 16C550/2. However, these serial controller chips have long been integrated into the CPU. In PC machines, there were graphics cards, while most embedded processors come with LCD controllers, which in a sense are equivalent to graphics cards.
A more advanced ARM-based Intel Xscale architecture IXP network processor integrates a PCI controller (which can support four PCI slave devices or configure itself as a PCI slave device); it also integrates three NPE network processor engines, two of which correspond to two MAC addresses for gateway switching, while the other NPE network processor engine supports DSL. With the addition of an external PHY chip, DSL internet access can be achieved. The IXP series can reach a maximum clock frequency of 1.8G, supporting 2G memory, and 1G×10 or 10G×1 Ethernet ports or Fibre Channel optical channels. The IXP series is arguably the highest processor based on the ARM architecture integrated by Intel into the Xscale core.
2 From the Software Perspective
This involves selecting applications during the customization of the operating system kernel, compiling it, and then downloading the kernel to ROM. The application components chosen during the customization of the operating system kernel complete the software “embedding”. For example, when customizing the WinCE kernel, there are corresponding selections, including WordPad, PDF, MediaPlay, etc. If we make these selections, we can find these applications on the interface after CE starts. In contrast, with the Windows operating system on PCs, most applications need to be reinstalled.
3 Understanding “Embedding”
Burning the software kernel or application file system into the ROM of the embedded hardware platform achieves a true “embedding”.
The above definitions are more understanding-oriented. There are many definitions in books, but within this field, no one dares to claim that their definition is entirely accurate, including those experts and scholars. After all, embedded systems are a comprehensive discipline under the category of computers.
Layers of Embedded Systems
Embedded systems are divided into four layers: hardware layer, driver layer, operating system layer, and application layer.
1 Hardware Layer
This is the foundation of the entire embedded system. If you are already familiar with microcontrollers and interfaces, and can program in C and assembly language, starting from the hardware layer of embedded systems is relatively easy. The hardware layer is also the foundation for the driver layer. An excellent driver engineer must be able to understand hardware circuit diagrams and independently complete CPLD logic designs, while also being quite familiar with operating system kernels and their scheduling. However, the hardware platform is fundamental, and added value relies on software.
The hardware layer is more suitable for professionals in electronics, communications, automation, mechatronics, and information engineering. Required foundational knowledge includes microcontroller principles and interface technology, microcomputer principles and interface technology, and C language.
2 Driver Layer
This part is relatively difficult. Driver engineers must not only understand circuit diagrams but also be very proficient in operating system kernels, so that the driver programs they write do not monopolize the operating system time slices during system calls, which would prevent other tasks from running. Understanding the architecture of operating system kernels and real-time scheduling, as well as having a good driver writing style, is crucial. Many people can add drivers as described in most books, but they may not even reach the level of a junior driver engineer. If the driver they write cannot be called by applications, it is like opening one program under Windows and interrupting the previous one or having to wait a while for the later program to run. To become a good driver engineer, you need three to four years of foundation and must study operating system kernels; otherwise, success is not easy. However, their salary is the highest among the four layers of embedded systems.
The driver layer is more suitable for professionals in electronics, communications, automation, mechatronics, and information engineering, especially those specializing in computer architecture. In addition to the foundational subjects required for the hardware layer, one must also be proficient in data structures and algorithms, operating system principles, and compiler principles.
3 Operating System Layer
Currently, the operating system layer can only be said to involve simple porting. Very few people write operating systems themselves or create operating systems with missing components. Most of this work is done by driver engineers. The operating system is responsible for debugging system tasks, managing disks and files, and real-time performance is crucial in embedded systems. It is said that the XP operating system took 300 people two years to complete, totaling 600 person-years. The Nuwa Hopen operating system developed by the Software Institute of the Chinese Academy of Sciences likely took several hundred person-years to complete. Therefore, this part of the work is relatively insignificant.
4 Application Layer
This layer is relatively easier. If you know how to call programming interface functions under Windows, the only difference in the operating system is the compilation and development environment. The same goes for Java programming. In embedded systems, algorithms are handled by specialized algorithm professionals and do not need to be categorized under embedded systems. However, if it involves embedded databases, network programming based on embedded systems, and application development based on specific protocols (such as SIP, H.323, Asterisk), it becomes more complex and challenging.
Goals and Positioning
First, have a goal, then position yourself.
Learning STM32 and other microcontrollers from the hardware perspective involves learning interface circuit design and board-level programming in assembly and C language.
From the software perspective, you need to learn about driver development and porting at the operating system level based on ARM processors. These must be clear for beginners: either start learning from the hardware side or from familiarizing yourself with the operating system to the application. Regardless of what you learn, as long as it is not purely operating system-level API-based application programming, you still need to understand hardware register-level concepts, and you must be able to program at the board level in assembly and C.
Therefore, for those aiming to work in the hardware and driver layers of embedded systems, mastering ARM interface circuit design, ARM C language, assembly language programming, and debugging development environments is necessary.
Thus, beginners must grasp their direction, know their goals, and determine which layer they want to work on.
Then, they should start learning the two practical layers related to ARM embedded systems: the hardware layer and the driver layer. Mastering either layer will lead to a bright future.
Learning ARM from the hardware perspective involves learning interface circuit design and board-level programming in assembly and C.
If you want to work in the application layer of embedded systems, you may need to focus on embedded operating system environments and corresponding development toolchains, such as EVC application development under the WinCE operating system (similar to VC under Windows). If you want to make breakthroughs, you should focus on certain audio and video protocols, such as application layer development based on SIP or H.323 protocols, or development based on embedded network databases.
For beginners, they should act within their capabilities and not assume that the high salary of driver layer positions means they should pursue that direction. They need to consider their own characteristics. There are experts at every level of the four layers of embedded systems, and of course, experts correspond to high salaries. I work in the hardware layer, and previously, nearly 3,000 yuan was deducted from my monthly salary for personal income tax. I play both the role of an engineer and a supervisory-level figure, handling both positions, but my working hours remain the same.
In the hardware area, there are likely very few people who can compete with me, which allows me to earn such a high salary.
Choosing a Development System
Many ARM beginners hope to have a system they can use, but they often have a misconception that higher processor versions and better performance are always better. Just like many people believe ARM9 is better than ARM7, I think beginners should be rational in this regard. The choice of a development system ultimately depends on which direction you want to take in embedded systems: whether to do driver development, application development, or design and board-level testing in the hardware layer.
If you want to work from the operating system layer or application layer, then of course, the higher the processor performance, the better. However, self-learning is very challenging and cannot be accomplished in a few months, half a year, or even a year or two.
In a sense, the difference between ARM7 and ARM9 is that some functional instruction sets are richer and the clock frequency is higher, just like the difference between the 286 and 386.
For users, the difference may not be noticeable; they may only feel that the speed is slightly faster.
ARM7 is more suitable for those who want to work from the hardware layer because very few ARM7 series processors come with an MMU, and they are easier to control. For example, the S3C44B0 can easily turn off the cache, and its internal interface registers are easy to understand. Various interfaces can be controlled using hardware programs or AXD single-step command line instructions. Based on the 51 microcontroller concept, it is easy to understand it as a 32-bit microcontroller, thus eliminating many 51 engineers’ confusion about transitioning to embedded system hardware ARM development. This prevents them from being misled by some companies that do not truly understand embedded systems, leading them to the operating system layer and causing them to shy away from it, which further exacerbates the industry’s shortage of talent in this area.
Regardless of whether it is hardware design or software driver aspects, embedded systems pay great attention to interfaces. When choosing a platform, one should also consider the external resources of a processor. The more external resources you are exposed to and the more familiar you are with them, the higher your chances of employment success. This is what is referred to in recruitment as having “relevant skills” because it is impossible for a person to encounter all processors in just a few years. The processors used by recruitment companies may be ones we have never seen before. For example, ARM processors produced by dozens of small companies in Taiwan are very useful, but their universality is too low. Companies using these processors can only hire those with relevant work experience. So what is relevant work experience? In hardware, it refers to peripheral interface design. In software, it refers to experience in operating system-related interface drivers and application development.
I have been in the industry for nearly ten years. Since ARM appeared in 2000, I started with ARM7 and then directly transitioned to Xscale (this platform is between ARM10 and ARM11), working in this area for five years. I have interviewed hundreds of candidates, and I have deep insights into these aspects.
I personally believe that the S3C44B0 from Samsung is quite suitable for beginners. Why do I say this? Because it has rich interface resources, mature technology, and ample documentation, making it very suitable for beginners. It is easy to find help and solutions for problems since most people are familiar with it, just like the 51 microcontroller, where there are many expert-level individuals who can assist you. Related issues can be resolved quickly, so while the industry thinks this ARM is overly used, it is actually a good thing for beginners.
Therefore, the choice of a development system should consider your future goals, the interface resources of the development board, and the universality in the industry.
How to Become an Excellent Embedded Hardware Engineer
There are several directions for hardware. Simply dividing signals into digital and analog, analog is more challenging and generally requires extensive experience. A slight deviation in resistance or capacitance values can lead to significant signal errors. As a result, fewer young people engage in this area. With technological advancement, analog circuits have become digitized. For example, the RF module of mobile phones uses mature chipsets, and only two companies in the world had this technology back then. If you feel that your analog skills are not strong, you may not be suitable for this field. If you can handle mobile RF modules at a general level, you could earn a monthly salary of over 15K.
Another category is the digital part, which can be broadly divided into 51/ARM microcontroller types, DSP types, and FPGA types. Most FPGA engineers in China work in IC design companies for front-end verification of IP cores. This area does not have clear prospects unless you reach the gate level. Even if you become an IC front-end verification engineer, you will need several years of experience to be competent.
DSP hardware interfaces are relatively fixed. If you do not lean towards drivers or algorithms, your prospects will not be great.
The ARM microcontroller category has more content, with a large share of industry products and a broad application audience, resulting in vast employment opportunities. The most significant indicator of hardware design expertise is interface design, which serves as the basis for comparing the levels of senior hardware engineers.
The key to interface design lies in timing, not just simple connections. For example, the PXA255 processor requires I2C speeds of 100Kbps. If you connect an I2C peripheral device that cannot reach 100Kbps, it will inevitably lead to design failure.
There are many such cases. For example, a 51 microcontroller can connect to an LCD on the bus, but why can’t this LCD be connected to the ARM bus? Similarly, an ARM7 can connect to a Winband SD card controller, but why can’t this controller connect to ARM9 or Xscale processors? These are all issues.
Therefore, interfaces are not merely simple connections; they depend on timing and parameters.
An excellent hardware engineer should be able to design a product that is superior in cost and performance without a reference solution. They should also be able to appropriately trim existing solutions for feasibility, but not haphazardly. I once encountered an engineer who replaced a DC chip that converts 5V to 1.8V in a solution with an LDO, which sometimes resulted in burning the CPU.
A few days ago, someone asked me to help optimize the program for their handheld GPS device based on the PXA255 platform. I inquired about the situation, and the map was stored on an SD card, with the SPI interface between the SD card and PXA255’s MMC controller, leading to very slow map reading speeds. This was a serious design flaw, not a programming issue. Therefore, I provided several suggestions for them to update and try again.
To become an excellent engineer, one needs to grasp the overall system and understand existing circuits. In other words, if you are given a circuit diagram, how much can you understand? If you cannot comprehend over 80%, it indicates that you are far from being an excellent engineer.
Next, debugging ability and schematic review skills are essential, but the most fundamental skills are schematic design, PCB layout, and logic design.
This refers to hardware design engineers, who can also be divided into ECAD engineers, specialized in PCB design, and EMC design engineers, who help solve EMC issues for others.
Above hardware engineers are board-level test engineers, who are hardware engineers with strong C language skills. During the debugging process, they can verify hardware functionality through self-written test programs.
Then, the work is handed over to the operating system-level driver developers.
In summary, hardware content is vast and varied. Mastering any aspect of hardware will lead to becoming an expert. I often evaluate proposals for others, and many designs from senior hardware engineers are frequently negated by my single comment. Thus, reaching my level as an engineer may offend some, but there are many unknowns in hardware that even many senior hardware engineers cannot grasp.

👇Click Follow, Technology to receive timely technical content!👇

-
Principle of Power Soft Start
-
If you were designing, which design scheme would you use? Would it occupy 2 IO ports or 1 IO port?
-
Very Detailed Basic Knowledge of RF
-
Learning Several Tips for Inductor Saturation, Have You Mastered Them?
-
Circuit Principle of Lithium Battery Protection Board
-
Manually Create a 16-bit RISC Architecture CPU
-
Differences Between STM32, GD32, and ESP32
-
Surge
-
What is the Relationship Between Fourier Transform, Laplace Transform, and Z Transform?