First, learn the basic microcontroller programming.
For the hardware of the person, must first of the basic use of the hardware of perceptual understanding, but also must be deeply aware of the hardware control mode, if the beginning of learning Linux system, learn to transplant then will only immediately into a deep vortex. I was just beginning to learn arm when the choice ARM7 (mainly at that time ARM9 is also very expensive), learning ARM7 time or to keep learning 51 single-chip thinking, using ADS to program, the first experiment is to control the LED. Learn for a while arm people will laugh so stupid, actually not, I think there is a lot of this process will be much better, because no matter how complex systems will eventually be implemented to the bottom of the hardware control, so the control of these hardware has a perceptual understanding of much better Learning SCM Programming at the same time to understand the structure of the hardware, control principle, which I call him to understand the hardware. The so-called understanding of hardware is to understand how this hardware organization so many resources, and how these resources are controlled by the CPU, programming. For example, there are ad converters in the s3c2410, Gpio (Universal IO ports), and Nandflash controllers, all of which have registers to control, and these registers have an address, so what do these addresses mean? How to control the operation of these peripherals through registers? Also, each unit inside the Norflash has a corresponding address unit in the memory of the chip, what does the address have to do with the register address just mentioned? Are they the same? and the Nandflash internal storage unit that corresponds to the norflash is not a linear emission, then s3c2410 how to map the Nandflash address in memory space for use? Or simply say how to use Nandflash? Again, using the ads into the ARM9 line programming requires the use of an initialized assembly file, what exactly is the use of this file? What does the code inside him mean? Don't you think this is okay? Such are the understanding of hardware, understanding these things on the hardware has a deep understanding, this will be a further step in the study of a great help, if you skip this step, I believe the more backward learning will feel confused, the more I feel this writing is unfathomable. Because, you didn't have a good foundation.
Second, use the Linux system for some basic experiments.
When buying a set of boards will generally provide some of the Linux test routines, do a good time this bar, the process is also very meaningful, but also for further learning to accumulate perceptual knowledge, you can imagine a never used Linux system people can learn Linux programming? Well follow the manual routine to do the inside of the experiment, although a little doll learning to walk, a bit retarded, but I think a lot of masters will experience the process. In this respect we do not currently plan to provide the corresponding routine, mainly the development Board of the provider to provide a very rich sample, we do not do repetitive work, only to provide the most valuable things they do not have to everyone.
Thirdly, we study the running process of the complete Linux system.
What are the parts of the so-called Complete Linux system? Three parts: bootloader, Linux kernel (Linux kernel), rootfile (root file System). So how do these 3 parts work together to make up the system? What's the use of each? What are the links between the three people? How to contact? What is the implementation process of the system? Figuring out the problem you're working on the whole system is clear, and another important foundation for the next step in making this Linux system. The introduction of this information on the Internet can be mined to a few tons, let yourself study it well.
Four, start a system transplant.
It says that there are 3 parts to complete Linux, and you know the relationship and the role, so now all you have to do is learn to make these things yourself. Of course I can't ask you to write this code, that's not true. In fact, this 3 can be downloaded to the corresponding source code in the network, but this source code can not be downloaded and compiled to run on your system, need a lot of changes, until he can run on your board, this modification process is called porting. In the process of the transplant you have to learn a lot, to understand a lot of relevant knowledge, and so you complete the process you will find that you are a novice master. In this process if you are very research spirit, you will inevitably think of the source code. Many books introduce you how to read the Linux source code, I do not advocate aimlessly to see the Linux source code, with more than three words, it makes no sense. When you're doing the transplant, you think you have to look at the source code and then go to the basic good book to see, here I recommend a good book Nujili "Linux kernel Analysis and programming," This is a book for the linux-2.6.11 core, it is very deep, it is recommended to improve their C language programming level to look at first. As for each part of the transplant online can also find tons of information, their own research, but to remind that many of the things that introduce their own experience are more or less reservations, you follow what he said to do there are always some problems, but he will not tell you how to solve, then rely on their own, If you are not trustworthy, find me to study together, I can not guarantee to solve your problem, because I may not have encountered your problem, but I believe that can give you a little advice, may help you solve the problem. The ultimate goal of this step is to download the standard source code package from the official homepage (all foreign, sad), and then modify it to run on the board. Stealing Archimedes's sentence: "Give me a cable, I can get Linux."
Five, study the writing of Linux driver.
The transplant system is not the ultimate goal, the ultimate goal is to develop products, do projects, which are to develop the driver. Linux drivers can be said to be multifarious, linux2.4 and There is a considerable difference between the linux2.6 and the linux2.6 but different versions of the driver, so it is not easy to write Linux drivers, and there is not even enough reference for the latest version of the driver. Then my advice is to use, transplant a not very new version of the kernel, so that the learning-driven programming will have enough information. This section of the recommended books can be referenced in another article, "recommended several books on embedded Linux learning." Six, study the writing of the application. Do the work of the project in addition to writing drivers, and finally writing applications. The trend now is the development of graphical applications, and the most common in graphical applications is the QT/E function library. I have been using this library to develop my own applications, but I would like you to use the native Minigui library of functions. Stealing Jay Chou's advertising words is "support domestic, support Minigui." Minigui programming comparison similar to the VC programming under Windows, relatively easy to get started, the effect should be said to be quite good, I have used to develop ARM7 program. Remember, the problem is the best chance to learn.
(ext.) Introduction to Embedded Linux and arm development boards