Low-Level Systems
Application Development
If you want to do application development, then you should learn C, data structures, JAVA, and so on. There is nothing particularly different about embedded application development compared to PC application development. You might say that optimization is necessary in embedded systems, and yes, optimization is required, but an unoptimized program is not fundamentally different from a program developed for a PC. Furthermore, when you have the ability to optimize, you no longer need to ask this question. For instance, when it comes to developing interfaces, we use VC on PCs; in embedded Linux, we might use QT or Android, so you should learn programming in QT or Android. However, the foundation should still be C or JAVA, and you should familiarize yourself with their interfaces. If you have learned VC, you will also need to spend time understanding those classes and controls. If your goal is to learn about low-level systems, this is my expertise, so I can say a few words about it. Before answering this question, I first respond: Many people ask me whether to learn drivers or applications? I can only say to follow your interest, and drivers and applications are not completely separate.1. What we call drivers is not limited to hardware operations; it also includes operating system principles, process sleep/wake scheduling, and other concepts. To write a good application and to better solve problems encountered in applications, you should understand this knowledge.2. Application development has a low threshold, especially with today’s ANDROID, which is pure JAVA. I believe the development path for applications is to become proficient in the business. For example, in the telecommunications industry, IPTV industry, and mobile phone industry, you need to understand the industry’s demands. Therefore, those who lead are often involved in application development.3. When it comes to drivers, I don’t want to call it “doing drivers,” but rather “doing low-level systems.” If done well, this can apply across industries. I have worked for several years, dealing with mobile phones, IPTV, and video conferencing, but these products are of no difference to me because I only work on low-level systems. When applications encounter problems that they cannot solve, I provide suggestions and tools from the kernel perspective. I believe that the development direction in low-level systems is to become a technical expert.4. In fact, there is no clear boundary between doing low-level systems and applications. Having low-level experience and then moving to applications will make you feel more secure. With business experience, if you then understand low-level systems, you can quickly form a team. Now, back to the question of how to learn. What does the embedded Linux low-level system include? Don’t worry, let me give you an example.1. When a computer is powered on, who displays those interfaces? It’s the BIOS. What does it do? Some self-checks, then it reads Windows from the hard drive and starts it. Similarly, this BIOS corresponds to the bootloader in embedded Linux. This bootloader needs to read the Linux kernel from Flash and start it.2. What is the purpose of starting Windows? Of course, it’s for chatting online and so on. Where are these online chatting tools? On the C and D drives. Therefore, Windows must first recognize the C and D drives. In Linux, we call this the root filesystem.3. If Windows can recognize the C and D drives, then it must be able to read and write to the hard drive. This involves what we call drivers. Of course, not only the hard drive but also network cards, USB, etc. Embedded Linux can read and execute applications from Flash, so there must also be drivers for Flash, and not just Flash. Let’s stop here for now; the embedded Linux system includes four major components: bootloader, kernel, driver programs, and root filesystem.
1. Bootloader:
It is a slightly more complex bare-metal program. However, understanding and writing this bare-metal program is not easy at all. The good tools available under Windows have weakened our programming abilities. Many people jump into embedded systems and use ADS or KEIL. Can you answer these questions? 1. When powered on, where does the CPU fetch instructions to execute? Answer: Generally from Flash.
2. However, Flash is usually read-only and cannot be written directly. If I use global variables, where are these global variables? Answer: Global variables should be in memory.
3. So who puts the global variables into memory? Answer: Friends who have long used ADS or KEIL, can you answer this? This requires