Understanding Embedded Development

This is a quick overview of the content of this article, with details in the main text.

Many students are inspired to learn embedded development after watching content from Zhihui Jun on Bilibili. Before purchasing materials, please carefully consider what you really want to do rather than acting on impulse.When you finally manage to establish serial communication (pinging), and are about to show off on social media, you suddenly find that just touching the circuit board causes the program to crash along with your excitement; or perhaps you spent an all-nighter testing a running light just to impress someone, only to be met with their “disdainful” gaze, leading to a professional crisis. Perhaps life is like this; every embedded expert’s journey may start from others’ misunderstanding, self-doubt, and then to others’ envy.

No more rambling; if I keep rambling, you will give me a “two-electric cannon”. Below, I will introduce what embedded development is and provide my personal learning suggestions.

Understanding Embedded Development

1

What is Embedded Development

Embedded development refers to the co-design process of hardware and software for dedicated computing devices, with the core goal of building real-time, low-power, and highly reliable dedicated computer systems. The main text will specifically introduce the implementation of important components.

2

How to Learn Embedded Development

Personal suggestions for students with different needs include:

  1. For undergraduate and graduate students who want to learn something for writing papers, projects, or personal study;
  2. For those who want to become software engineers;
  3. For those who want to become hardware engineers;
  4. For those who want to become a wild Iron Man.

Conclusion

This article aims to help those who want to learn embedded development but do not know how to understand the field, or engineers with some experience to gain detailed insights. If you are interested in artificial intelligence and want to learn more technical details, you can read the detailed content below or feel free to leave a message in the comments.

Understanding Embedded Development

Embedded Development

Understanding Embedded Development

Embedded development is the co-design process of hardware and software for dedicated computing devices, with the core goal of building real-time, low-power, and highly reliable dedicated computer systems. These systems typically center around microcontrollers (MCUs), microprocessors (MPUs), or system-on-chip (SoC) architectures, meeting specific functional requirements through customized software and hardware designs.

Hardware Core – Chips

Currently, the only companies actually making chips (CPUs) are ARM and Intel. Note that many companies claim to be chip manufacturers, but they are actually packaging chips from these two companies. The chips we refer to are CPU processors, while most companies are integrating components that were originally external devices (such as Bluetooth and Wi-Fi devices) with CPUs, and this integrated unit is sold as a chip. Therefore, conceptually, chips are not what we intuitively think..

History of Chip Development

The emergence of ARM chips was actually a response to Intel. The backers (investors) of ARM are currently Apple, and their development will not be detailed here; for more information, see [1].ARM version numbers can be approached from three aspects: core version, SoC version, and chip model. The SoC is the integrated unit mentioned above, which is often mistakenly referred to as a chip. (Of course, from a personal perspective, wanting to buy a standalone CPU is unrealistic, as they are not available; they are all integrated by major manufacturers.)Understanding Embedded DevelopmentImage source [2]

Then

Data Storage and Operations

The CPU, as the core of data computation, reads data from memory (data in registers) during the computation process and modifies data according to specific instructions. The way data is stored differs between the two types of chips. Intel chips use the von Neumann architecture, which mixes memory and programs, while ARM chips use the Harvard architecture, which keeps data and programs separate. The main difference is that mixed data is more susceptible to virus intrusion (some programs, such as boot programs, can be modified if set to be readable and writable, clearly indicating that mixed storage includes both readable and writable). Of course, the CPU itself has a certain amount of memory, but it is mainly used for packaging related instructions and not for storing other data. Its data input comes from registers, which connect to Cache (a type of memory known as high-speed cache), and then Cache connects to DDR memory. It can be seen that the size from CPU to DDR memory is constantly increasing, but the speed is decreasing. The CPU->register->Cache->DDR can be summarized as Random Access Memory (RAM), which retains intermediate data generated during CPU operations, and the data disappears when power is lost. External storage (ROM) is used for long-term data storage, generally solid-state drives; faster than solid-state drives is flash memory (Flash), mainly divided into NAND and iNAND. In earlier devices, the control device in NAND would connect directly to the SoC (NAND has high timing requirements—physical properties, so a control device is needed to connect with other components).(For the internal structure and storage of NAND, see document [3])The data computed by the CPU needs to operate the running of related devices, and the operation is mainly conducted in memory. Memory stores the address information of various components, and memory transmits data to the corresponding components based on the address information in the data and the data computed by the CPU, ultimately achieving the desired functionality.

Then

Compilers

The CPU only understands low-level languages (machine code) of 0s and 1s. To conform to human logic, high-level languages (such as C language) need to be translated by compilers. Compilers are mainly for CISC (Intel) and RISC (ARM). CISC means that one thousand codes correspond to one thousand functions, while RISC mainly provides basic instructions for software to complete specific tasks. The purpose of CISC compilation is to simplify programming (only one code is needed to achieve the desired function), but the core technology is in the hands of others, which can also be restrictive.Data LinesData transmission relies on data lines, and there are two types of data lines connected to the CPU: address bus and data bus. Therefore, a 64-bit CPU has 32 data lines plus 32 address lines. Each line can only transmit 0 or 1 (1 byte) at the same time, so 32 bits can transport 2^32 bytes = 4G of memory at once.Final ThoughtsLearning the above content can only give you a certain understanding of the computers or hardware you currently use (systematic learning still requires readers to refer to: Computer Organization Principles andOperating System courses and books), but there is still a considerable distance in terms of practical operation. Based on the author’s own experience, suggestions and learning ideas have been listed for different scene needs, providing some advice for students who want to enter this field. You are also welcome to share your own learning journey in the comments.1. For undergraduate and graduate students who want to learn something for writing papers, projects, or personal study: It is recommended not to start from scratch by making circuit boards (drawing schematics), unless you really have ample time and want to experience it. Under the pressure of graduation and supervisors, the best way to quickly achieve a small project goal is to purchase a suitable board, then burn the system, set up the environment, and successfully run it. At this stage, the most important considerations are how much runtime memory the code requires, whether GPU acceleration is needed, and whether external devices (such as cameras, touch screens, keyboards, etc.) are needed, which involves ensuring that the board you buy has the appropriate types and number of interfaces. (The specific burning of the board and environment setup needs to be tailored to the specific board, so it is best to search online for suitable cases before purchasing.)2. For those who want to become software engineers, my personal suggestion is: first, master C language, especially pointers (many courses skip this), and then be patient. The provided board at this stage is the process of starting to build a system, meaning you control the board’s “operation” (turning specific functions on and off) with software. A simple example is using pointers to manipulate specific address content value changes, where generally, assigning 1 means turning on, and assigning 0 means turning off. Therefore, the corresponding address information needs to be checked in the manual (usually, the manual needs to be requested from the manufacturer or found online).3. For those who want to become hardware engineers, my personal suggestion is: learn circuits well, and practical experience is very important. At this stage, the board is a PCB board, and you need to embed resistors and specific functional modules according to pre-calculated methods (this part also tests personal experience). Sometimes, the circuit just won’t work (won’t power on), and it might just be due to a bump or an accidental disconnection somewhere.4. For those who want to become a wild Iron Man, my personal suggestion is: patience and interest. At this stage, there are no good suggestions; just keep learning, master the software and hardware mentioned above, and see if you can persist (often, what keeps you going is personal interest and dreams—refer to Zhihui Jun).

References

[1]https://baijiahao.baidu.com/s?id=1672543765319726501&wfr=spider&for=pc[2]https://www.it610.com/article/1448858438133133312.html[3]https://m.elecfans.com/article/1309667.html

END

Understanding Embedded DevelopmentUnderstanding Embedded Development

Scan to follow丨EatRicer’s Smart Construction Journey

April 20, 2025 Issue 9

Text and images: Desire

Reviewed by: EatRicer

Leave a Comment