How to Learn Embedded Systems?

01

How to Learn Embedded Systems?
Concept of Embedded Systems
Focus on understanding the concept of “embedding” from three aspects.
1. From the hardware perspective, “embedding” integrates peripheral devices based on CPU 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 build external bridges to expand functionality, such as serial ports relying on external 16C550/2 serial controller chips.
Currently, such serial controller chips have long been integrated into the CPU. PCs have graphics cards, while most embedded processors come with LCD controllers, which in a sense are equivalent to graphics cards. High-end ARM class Intel Xscale architecture IXP network processor CPUs integrate PCI controllers internally (which can support 4 PCI slave devices or be configured as a CPI slave device); they also integrate 3 NPE network processor engines.
Two of them correspond to two MAC addresses, which can be used for gateway switching, while the other NPE network processor engine supports DSL. By adding a PHY chip externally, DSL internet functionality can be achieved. The IXP series can reach a maximum frequency of 1.8G, supports 2G memory, with 1G×10 or 10G×1 Ethernet ports or Febre channel optical channels. The IXP series is likely the highest processor based on the ARM architecture integrated by Intel into the Xscale core.
2. From the software perspective, embedding involves selecting applications to include in the customized operating system kernel, compiling, and then downloading the kernel to ROM. The selected application components during the customization of the operating system kernel complete the software’s “embedding”. For instance, when customizing the Windows kernel, there will be corresponding selections, including wordpad, PDF, MediaPlay, etc. If we choose them, we can find these items in the interface after CE starts. In contrast, with previous PC-installed Windows operating systems, most items would require reinstallation.
3. Burning the software kernel or application file system into the ROM of the embedded system hardware platform achieves a true “embedding”.
The above definitions are my understanding of embedded systems from 6-7 years ago. There are many definitions in books, but in the field of “embedded systems,” no one dares to claim their definition is entirely accurate, including those experts and scholars, as embedded systems are a comprehensive discipline under the category of computers.

02

How to Learn Embedded Systems?
Layering and Professional Classification of Embedded Systems
Embedded systems are divided into four layers: hardware layer, driver layer, operating system layer, and application layer.
1. Hardware Layer, is the foundation of the entire embedded system. If you are 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 basis for the driver layer. An excellent driver engineer must be able to read hardware circuit diagrams and complete CPLD logical designs independently.
At the same time, one must be quite familiar with the operating system kernel and its scheduling. However, the hardware platform is fundamental, and added value depends on software.
The hardware layer is more suitable for those majoring in electronics, communications, automation, mechatronics, and information engineering. The foundational knowledge required 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 the operating system kernel to ensure that the driver programs they write do not monopolize the operating system’s time slice during system calls, which would prevent other tasks from running. Without understanding the operating system kernel architecture and real-time scheduling, and without good driver writing style, most people can add drivers as described in many books, but they may not even reach the level of a junior driver engineer. Such drivers, when called by applications, behave like opening a program in Windows and then opening another program, where either the previous program is interrupted or there is a wait before the newly opened program runs. To become a good driver engineer, one needs at least three to four years of foundation; studying the operating system kernel is not easy to succeed, but the salary in the four layers of embedded systems is the highest.
Embedded driver layers are more suitable for those majoring in electronics, communications, automation, mechatronics, and information engineering, especially those in computer architecture-related fields. In addition to the foundational subjects required for the hardware layer, one must also be very familiar with data structures and algorithms, operating system principles, and compiler principles.
3. Operating System Layer, for the operating system layer, it may currently only be said to be simple porting, and 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.
Real-time performance is crucial for embedded systems. It is said that the XP operating system took Microsoft 300 people two years to complete, totaling 600 person-years of work. The software institute of the Chinese Academy of Sciences estimates that their own Nuwa Hopen operating system would also take several hundred person-years to complete. Therefore, this part of the work is relatively insignificant.
4. Application Layer, relatively easier. If you know how to call programming interface functions in Windows, the only difference in the operating system is the compilation and development environment. The same applies to programming in Java. Algorithms involved in embedded systems are handled by specialized algorithm personnel and do not need to fall under the embedded system category. However, if it involves embedded databases, network programming based on embedded systems, and protocol application development based on certain application layers (such as SIP, H.323, Asterisk), it becomes more complex and challenging.

03

How to Learn Embedded Systems?
Goals and Positioning
First have a goal, then position yourself.
Learning ARM, from a hardware perspective, involves learning interface circuit design on one hand and board-level programming in assembly and C language on the other. From a software perspective, it means learning 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 or familiarize yourself with the operating system and then start learning applications. Regardless of what you learn, unless it is purely API-based application layer programming above the operating system level, you still need to understand hardware registers.
Board-level assembly and C programming are still necessary skills. Therefore, for those working on the hardware layer and driver layer of embedded systems, mastering ARM interface circuit design, ARM C language, assembly language programming, and debugging development environments is essential.
Thus, beginners must grasp the direction and clarify what their learning goals for embedded systems are and at what level they want to focus. Then, they can begin learning the more practical two layers of embedded systems related to ARM: the hardware layer and the driver layer. Mastering either layer will have promising prospects.
If you want to work from the application layer of embedded systems, it may be quite different from ARM and other architectures. You should focus on researching the application and corresponding development toolchain of embedded operating system environments, 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, etc.
For beginners, it is important to act within your means, do not assume that the driver layer has high salaries and take it as your direction. You need to consider your own characteristics. There are experts in every level of the four layers of embedded systems, and of course, experts correspond to high salaries. I work in the hardware layer, and in the past, nearly 3,000 yuan of my monthly salary was deducted for personal income tax. I play both the role of an engineer and a supervisor, performing both roles myself, but my working hours are limited. In the hardware area, there may be few people to compete with me, which allows me to earn such a high salary.

04

How to Learn Embedded Systems?
Choosing a Development System
Many ARM beginners hope to have a system they can use, but they often have a misconception that the higher the processor version and performance, the better. Just like many people think ARM9 is better than ARM7, I believe beginners should be rational when using this to enter the field. 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 hardware layer design and board-level testing. If you want to work from the operating system or application layer, then of course, the higher the processor performance, the better. However, self-learning embedded systems is extremely challenging; it is not something that can be mastered in a few months, half a year, or even a year or two.
In a sense, the difference between ARM7 and ARM9 is only that some functional instruction sets are richer and the main frequency is higher, much like the difference between 286 and 386. For users, the difference may not be noticeable; they may only feel a slight increase in speed.
ARM7 is more suitable for those who want to start from the hardware layer because ARM7 series processors rarely have an internal MMU and 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 programming or AXD step-by-step command line instructions. Based on the 51 microcontroller concept, it is easy to understand it as a 32-bit microcontroller, thus alleviating the confusion many 51 engineers face when transitioning to embedded system hardware ARM development, preventing them from being misled by companies that do not truly understand embedded systems and leading them to the operating system layer, making them hesitant and causing the industry to lack talent in this area.
Embedded systems, whether in hardware design or software driver aspects, place great emphasis on interfaces. When choosing a platform, one must also consider the external resources of a processor. The more external resources you come into contact with and become familiar with, the higher your chances of successful employment will be. This is what is referred to during recruitment as having “relevant skills.”
Because it is impossible for a person to encounter all processors within a few short years, and the processors used by recruiting companies may be ones we have never seen before. For instance, ARM processors produced by dozens of small companies in Taiwan (worth tens of millions in market value) are also very useful, but their universality is too low. Companies using these processors can only hire people with relevant work experience. So, what is relevant work experience? In hardware, it refers to peripheral interface design, while 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 moved directly to Xscale (this version is between ARM10-11), and I have been doing it for five years. I have interviewed hundreds of candidates and have deep insights into these areas.
I personally believe that Samsung’s S3C44b0 is quite suitable for beginners. Why do I say this? Because it has rich interface resources, mature technology, and abundant documentation. It should be very suitable for beginners. If problems arise, it is relatively easy to find someone to help and resolve them because most people are familiar with it, just like the 51 series microcontroller, where there are numerous expert-level individuals who can assist you, leading to quick resolutions of related issues. Hence, the industry considers this ARM to be overused, but for beginners, it is a good thing.
Therefore, when choosing a development system, consider your future goal direction, the interface resources of the development board, and the universality in the industry.

05

How to Learn Embedded Systems?
Skills Required to Become a Senior Embedded Systems Hardware Engineer.
For hardware, there are several directions, purely from the signal perspective, it is divided into digital and analog. Analog is relatively difficult, generally requiring long experience accumulation. A slight deviation in resistance or capacitance precision can result in significant signal deviation. Therefore, young people engage in this less frequently. With technological advancements, analog circuits are becoming digital.
For example, the Modem RF module of mobile phones uses mature chips, and only two companies in the world had this technology back then. I feel that those who are not strong in analog functions are not suitable for this field. If one can manage to handle the RF module of a mobile phone and achieve a general standard, the monthly salary can exceed 15K.
The other category is the digital part, which can be broadly divided into 51/ARM microcontroller classes, DSP classes, and FPGA classes. Most FPGA engineers in China work in IC design companies engaging in front-end verification of IP cores. If one does not get into gate-level design, the future is not very clear. Even as an IC front-end verification engineer, it takes several years to become competent.
DSP hardware interfaces are relatively fixed, and if one does not lean towards drivers or algorithms, the future will not be great. The ARM microcontroller class has a lot of content, the industry has a large demand for products, and the application population is broad, so the employment space is immense. The most reflective aspect of hardware design level and quality is in the interface design area.
This is the basis on which senior hardware engineers assess each other’s levels. The key to interface design is timing, not just simple connections. For example, the PXA255 processor requires an I2C speed of 100Kbps. If an I2C peripheral device cannot reach 100Kbps, the design will inevitably fail.
There are many such situations. For instance, a 51 microcontroller can connect to an LCD, but why can’t this LCD be connected to an 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. Thus, interface design is not merely a simple connection; it requires considering timing and parameters.
An excellent hardware engineer should be able to design a product that is more superior in cost and performance without a reference solution. Existing solutions should be appropriately trimmed for feasibility, but not randomly. I encountered an engineer who directly replaced a DC chip that converts 5V to 1.8V in the plan with an LDO, which can sometimes burn the CPU.
A few days ago, someone asked me to help them 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, while the SPI interface was used between the SD card and the PXA255 MMC controller, resulting in a very slow map reading speed.
This situation is a serious defect in design, not a programming issue. Therefore, I provided some suggestions for them to try updating and see what happens.
To become an excellent engineer, one needs an overall grasp of the system and an understanding of existing circuits. In other words, if you are given a circuit diagram, how much can you understand? If you cannot understand more than 80%, it indicates you are still far from becoming an excellent engineer. The second fundamental abilities are circuit debugging and reading ability, but the most basic skills are schematic design and PCB drawing, as well as logical design.
This refers to hardware design engineers, and from the above hardware design engineers, there can be subdivisions into ECAD engineers, who specialize in PCB layout, and EMC design engineers, who help solve EMC issues. Hardware engineers can further advance to board-level testing engineers, who are hardware engineers with strong C language skills and can validate hardware functionality through self-written test programs during the debugging process before handing it over to the driver developers based on the operating system.
In summary, hardware content is vast and varied, and those who excel in hardware will become experts. I often evaluate plans for others, and many designs by senior hardware engineers are frequently dismissed by me with a single comment.
Thus, achieving my level as an engineer may offend some people, but hardware indeed has many unknown aspects that even many senior hardware engineers cannot grasp.
So, what skills must a senior hardware engineer possess? First, they must master EDA design auxiliary tools like Protel, ORCAD, PowerPCB, Maplux2, ISE, and VHDL language, and be able to use these tools for drawing and logical design. Moreover, they need interface design review capabilities and debugging skills. If they can reach the level of overall scheme design, they are close to becoming a senior engineer.
Hardware skills rely on experience and accumulation; it takes ten years to hone a sword and a hundred years to sharpen a needle.
-END-
Previous Recommendations: Click the image to jump to read

How to Learn Embedded Systems?

Newcomers playing hardware, should they buy a microcontroller or Raspberry Pi?

How to Learn Embedded Systems?

Play circuit simulation on STEAM

How to Learn Embedded Systems?

Why are there no high-end oscilloscopes in China?

Leave a Comment

×