Many people always ask this question, so here is a summary document for your reference. The following steps areLinuxSystem, not for wince. Maybe you will notice that there are far more people doing Linux research in embedded systems than those doing wince. Many manufacturers also provide information based on Linux. I have been hard to understand. In fact, the wince interface is much better than the Linux interface, and it is very convenient to use. More importantly, the development of Wince is basically the same as that of windows, it is much easier to learn, but there are far more people learning Linux or using Linux for embedded systems than wince. When talking with many people, I learned that their company never considered using wince. Because of the high cost, they all use Linux for development. I did not use wince in my graduate lab. Most of them studied Linux, and a small number of projects used vxwork. But I have never heard of using wince because it is open source! Of course, wince6.0 is also open-source, but Linux has the advantage of being unblocked in terms of cost and resources. Correspondingly, more and more electronic manufacturers have begun to useLinuxDevelop products. For example, Google recently developed the smartphone operating system Android is actually using the linux-2.6.23 kernel for improvement.
First, learn basic bare metal programming.
For those who want to learn hardware, they must first have a perceptual knowledge of the basic hardware usage methods, and have a deep understanding of the hardware control methods, if you learn the Linux system at the beginning and learn to transplant it, you will immediately fall into a deep vortex. When I first started learning arm, I chose ARM7 (the idea was that ARM7 was still very expensive at the time). When I learned ARM7, I still kept thinking about 51 single chip microcomputer and used ads for programming, the first experiment is to control the LED. People who have been studying arm for a while will laugh so stupid, not actually. I think this process will be much better, because no matter how complicated the system is, the underlying hardware control will be implemented, it is much better to have a perceptual understanding of the control of these hardware.
While learning about bare metal programming, we must understand the architecture and control principles of the hardware. I call it hardware. The so-called understanding of hardware means to understand how the hardware organizes so many resources and how these resources are controlled by CPU and programming. For example, there are ad converters, gpio (General I/O port), and nandflash controllers in S3C2410, all of which have some registers to control. These registers all have an address, so what do these addresses mean? How can we control the operation of these peripheral devices through registers? Also, each unit in norflash has a corresponding address unit in the memory of this chip. What is the relationship between these addresses and the Register address just mentioned? Are they the same? The nandflash internal storage units corresponding to norflash are not linearly discharged. So how can we map the nandflash address to the memory space for use in S3C2410? Or simply, how should we use nandflash? In addition, when using ads to program the arm9-line, an initialized Assembly file is required. What is the purpose of this file? What does the Code in it mean? Can I skip this?
This is a kind of understanding of the hardware. If you understand these things, you will have a deep understanding of the hardware, which will be of great help for further learning. If you skip this step, I believe that the more I learn, the more I will feel confused. The more I feel that this writing is unfathomable. Because your foundation is not well established.
However, I did not use ads to program ARM9. after learning ARM7, I directly used arm9-to learn Linux, therefore, it is difficult for me to answer questions about using ads to program ARM9. I will study it myself.
I will provide a tutorial for this part soon. The examples in this tutorial are not written by the board we represent, but are obtained by our college lab, the English training program was written for their own experiment box, but it is of great reference and can be used as a valuable reference.
Second, use the Linux system for some basic experiments.
When buying a set of boards, we generally provide some Linux test routines. It makes sense to do this for a while. It also accumulates perceptual knowledge for further learning, can you imagine that anyone who has never used a Linux system can learn Linux programming well? Follow the routine in the manual to do the experiment. Although it is a bit of a doll learning to walk, it is a bit mentally retarded, but I think many experts will go through this process.
In this regard, we have no plans to provide corresponding routines for Deep Blue technology, mainly because the providers of the Development Board provide a wide range of routines. We will not repeat the work, provide only the most valuable things they don't have.
Third, study the complete running process of the Linux system.
What are the components of a complete Linux system?
Three parts: bootloader, Linux kernel (Linux kernel), and rootfile (root file system ).
So how does the three parts work together to form the system? What are their respective functions? What are the links between them? How to contact? What is the execution process of the system? To clarify this problem, you will be very clear about the operation of the entire system, and lay another important foundation for the next step to create this Linux system. This article introduces how many tons of data can be mined on the Internet. Please study it carefully.
Fourth, start to transplant the system.
As mentioned above, there are three parts of the complete Linux system, and you know the relationships and functions between them. Now you have to learn how to make these things by yourself.
Of course, I cannot ask you to write these codes, which is not implemented. In fact, all three of them can download the corresponding source code from the Internet, but this source code cannot be downloaded and compiled before it can run on your system. This requires a lot of modifications, the modification process is called porting until it can run on your board. You have a lot to learn and a lot to understand during the transplantation process. After you finish this process, you will find that you are already a startup master.
In this process, if you have a strong research spirit, you will inevitably think of the source code. Many books describe how you read the Linux source code. I do not recommend that you go to the Linux source code without a destination. In the words of Xu sanduo, this is meaningless. When you are porting, you feel that you have to go to the source code and look for a basic book. Here I recommend a good book titled Linux kernel analysis and programming. this is a book for the linux-2.6.11 kernel, said very deep, it is recommended to first improve their C language programming level and then look.
As for each part of the transplant network, you can find a lot of information, study it yourself, but please note that a lot of things about your experience are more or less retained, you always have some problems as he said, but he won't tell you how to solve them. You have to rely on yourself. If you can't trust yourself, ask me to study it together, I cannot guarantee to solve your problem either, because I may not have encountered your problem, but I believe I can give you some suggestions, which may help you solve the problem.
The ultimate goal of this step is to download the standard source code package from the official homepage of the source code (both foreign and sad), modify it, and finally run it on the board.
Stealing Archimedes's sentence: "Give me a network cable, I can fix it in Linux ".
Fifth, ResearchLinux driver.
Porting a system is not the ultimate goal. The ultimate goal is to develop products, projects, and drivers.
Linux drivers can be said to be varied. The compilation of linux2.4 and linux2.6 is quite different, that is, the drivers of both linux2.6 and different versions are also different, therefore, writing Linux drivers is not that easy, and there is not enough reference for writing the latest drivers. So I suggest using and porting a kernel that is not very new, so that there will be enough information to learn driver programming.
This part of the recommended books can be referred to another article "several books for learning embedded Linux".
Sixth, study the compilation of applications.
In addition to writing drivers, you also need to write applications. The current trend is the development of graphics applications, and the most used in graphics applications is the QT/e function library. I have been using this function library to develop my own applications, but I hope you can use the domestic MiniGUI function library. Jay Chou's advertisement word is "domestic support and MiniGUI support ". MiniGUI programming is similar to VC Programming in windows. It is easy to get started. The effect should be said to be quite good. I used to develop the program of ARM7. However, the biggest bad thing about MiniGUI is that there is no graphic operating platform like qtopia, which greatly limits the promotion of MiniGUI. I once dreamed of working with Beijing feiman.com (the copyright owner of MiniGUI) we used the MiniGUI function library to develop a graphic operation platform like qtopia. However, due to the limited level, this is only an illusion.
After completing this step, you have basically learned all about embedded Linux.
There is also a small experience to share with you. I am learningEmbedded LinuxThe objective reason is that the teachers and fellow students around me do not have a master in this field. the subjective reason is that I do not like to ask people and like to study and solve problems by myself. The advantage of doing so is to improve your ability to solve problems, because there are always many problems that you cannot understand, and others do not have experience in this area, not all questions are answered by someone, so you must solve the problem yourself. In this way, your ability to solve the problem becomes very critical. Therefore, my suggestion is to search for common questions online. If you cannot find the answer, you can ask the experts. If you still cannot find the answer, you can study it yourself. Do not wait for others to help you solve the problem.
Remember, problems are the best opportunity to learn.