Recommendation for ARM and embedded linux

As many people always ask this question, so here to make a summary document for your reference. Here must first explain the following steps are for the Linux system, not for WinCE.

Perhaps you will notice that now do embedded people, people who do linux research is far more than people who do WinCE, many manufacturers provide information is also based on linux. I have been very difficult to understand, in fact, WinCE interface better than linux interface more, it is also very convenient to use, more importantly, WinCE development and development under Windows basically the same, learn much simpler, but to learn linux Or use linux to do embedded people is much more than WinCE. When I was communicating with a lot of people, I learned that their company never considered using WinCE because of the high cost of developing with Linux.

I have not used graduate students in the laboratory WinCE, most of the research linux, but also a small part of the project to use vxwork, but never heard of using WinCE, the reason is open source! Of course, now WinCE6.0 heard open source, but On the cost and resources linux has no one can stop the advantage. Correspondingly, more and more electronic manufacturers have begun to use Linux to develop products. For example, Google recently developed smart phone operating system Android is actually using the linux-2.6.23 kernel to improve get.

First, learn basic bare metal programming.

For people who learn hardware, you must first have a basic understanding of the use of the hardware, but also must have a deep understanding of the hardware control methods, if the beginning to learn linux system, then learn to transplant will soon fall into a deep swirl. I just started learning ARM is to choose ARM7 (the idea is that ARM9 is still expensive), learn ARM7 or keep learning 51 microcontroller thinking, using ADS to programming, the first experiment is to control led. People who have learned ARM for a while will laugh so stupidly that they are not, in fact, I think it would be much better because no matter how complicated the system will ultimately be to the bottom of the hardware control, so the hardware The perception of control is much better.

Learn bare metal programming at the same time to understand the hardware architecture, control theory, these I call him to understand the hardware.

The so-called understanding of the hardware is to understand how to understand the hardware is how so many resources, how these resources by the cpu, controlled by the programming. For example, s3c2410 in the AD converter, GPIO (general-purpose IO port), there are nandflash controller, these things have some registers to control, these registers have an address, then what is the meaning of these addresses? And how to pass Register to control the operation of these peripherals?

There, norflash internal each unit has a corresponding address unit in the memory of the chip, then these addresses and the register address just said what?

They are the same ? And norflash corresponding nandflash internal storage unit is not linear emissions, then s3c2410 how the address of nandflash mapped in memory space to use? Or simply how to use nandflash? Again, the use of ADS on the right ARM9 line programming need to use an initialization assembly file, what is the use of this file? What is the meaning of the code inside it? Do not do this?

Such are the understanding of the hardware, understanding of these things have a deep understanding of the hardware, which for further learning later will be of great help, if you skip this step, I believe the more to learn more Feel confused, the more feel that things are unfathomable. Because, you did not lay the foundation.

However, the first statement, I did not use ADS ARM9 programming, I learned ARM7 directly after the use of ARM9 learning linux system, so involving the use of ADS ARM9 programming I have a hard time answering ^ _ ^, go Research and study it.

A short tutorial will be provided for this section.

The routines in this tutorial are not the ones I wrote for the boards we represent, I took them in our college lab, and Inpex wrote for them in their own lab, However, a great reference, can be used as a valuable reference.

Second, the use of linux system for some basic experiments.

In buying a board when the general will provide some linux test routines, it is a good time to do this, this process is also very meaningful, but also for further learning to accumulate perceptual knowledge, you can imagine a never used linux Systemic people can learn Linux programming? Well done in accordance with the manual routines do inside the experiment, although a little doll learn to walk, a bit mentally handicapped, but I think many experts will go through this process.

In this regard, we have no plans to provide the corresponding blue Routine routines, mainly the development board provider will provide a wealth of routines, we do not repeat their work, only to provide them with the most valuable things to everyone.

Third, study the operation of a complete linux system.

The so-called complete linux system includes what part?

Three parts: bootloader, linux kernel (linux kernel), rootfile (root file system).

So how do these three parts cooperate with each other to form this system? What’s the use of each? What are the three links? How to contact? How is the execution of the system? How do you know about the whole system? Operation is very clear, for the next step in the production of this linux system laid another important foundation. Introduction of this information online can dig a few tons, their own study it well.

Fourth, start the system transplant.

As mentioned above, there are three parts of a complete linux, but you also know the relationship between them and the role, then now you have to do is to learn how to make these things yourself.

Of course I can not ask you to write these codes, this does not materialize. In fact, all three can be downloaded from the internet to the source code, but the source code can not be downloaded and compiled to run on your system. It needs a lot of modification until he can run on your board. This The process of modification is called transplantation. In the process of transplantation you have to learn a lot of things to understand a lot of relevant knowledge, waiting for you to complete the process you will find that you have been considered a fledgling master.

If you are very researching in this process, you must think of the source code.

A lot of books about how you read linux source code, I do not advocate no purpose to see linux source code, with more than three words, it makes no sense. When you are doing transplant you think you have to look at the source code to find a good book to see where I recommend a good book Ni Jili “linux kernel analysis and programming”, which is a for linux- 2.6.11 kernel book, put it deep, it is recommended to raise their C programming language to see.

As for each part of the transplant network can also find tons of information, research and research it, but to remind that many of the things that introduce their own experience are more or less reserved, you do according to what he said Some questions, but he will not tell you how to solve, then rely on their own, if they are unreliable to find me to study together, I can not promise to solve your problem, because I may not have encountered your problem , But I believe I can give you some advice, may help you solve the problem.

The ultimate goal of this step is to download the standard source package from the official home page of the source code (both foreign and sad), and then modify and eventually run on the board.

Pirate Archimedes words: “Give me a network cable, I can get linux”.

Fifth, research linux driver preparation.

Transplantation system is not the ultimate goal, the ultimate goal is to develop products, do the project, which should carry out the development of the driver.

Linux drivers can be said that a wide variety, linux2.4 and linux2.6 prepared a considerable difference is that with the same linux2.6 but different versions of the driver is also different, so the preparation of the linux driver change is not so Easy things, even for the preparation of the latest version of the driver does not have enough reference material. Then my advice is to use, transplant a not very new version of the kernel, so that time-driven programming will have enough information.

This part of the recommended books can refer to another article “recommended several books to learn embedded linux.”

Sixth, research application programming.

Do the project to do the project In addition to writing the driver, and finally write the application. The current trend is the development of graphics applications, and the most used graphics applications or qt / e library. I have been using this library to develop my own application, but I hope you can use the domestic MiniGUI library. Pirates of Jay’s ad is “support domestic, support MiniGUI.” MiniGUI programming is relatively similar to the Windows VC programming, relatively easy to use, the effect should be said to be quite good, I have used to develop ARM7 program. However, the biggest drawback is that MiniGUI is not such a graphical platform qtopia, which greatly limits his promotion, I have fantasized with the Beijing Feynman company (that is, the owner of MiniGUI copyright) using MiniGUI function library development like qtopia Graphics platform, but because of the limited level this can only be fantasy, huh, huh.

Complete this step you basically finished learning the entire contents of embedded linux.

There is also a little experience to share with you. I am learning in the process of embedded linux seldom asked people, the objective reason is that around the teacher, fellow students are not experts in this area, the subjective reason is that I do not like to ask people, like their own research to solve the problem. The advantage of doing this is that you can improve your ability to solve problems because you have a lot of problems doing these things, you are hard to understand, others do not have experience in this area, and you do not have to answer all the questions. You have to be yourself Solving problems, in this way, the ability of individuals to solve problems is very crucial. Therefore, my advice is to ask the general search online to find out, did not find the answer to ask the master, or to die on their own to study, do not blindly wait for others to help you solve the problem.

Remember, the problem is the best chance to learn.

Similar Posts

Leave a Reply