FMUSER Wirless Transmit Video And Audio More Easier !
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->Afrikaans
sq.fmuser.org ->Albanian
ar.fmuser.org ->Arabic
hy.fmuser.org ->Armenian
az.fmuser.org ->Azerbaijani
eu.fmuser.org ->Basque
be.fmuser.org ->Belarusian
bg.fmuser.org ->Bulgarian
ca.fmuser.org ->Catalan
zh-CN.fmuser.org ->Chinese (Simplified)
zh-TW.fmuser.org ->Chinese (Traditional)
hr.fmuser.org ->Croatian
cs.fmuser.org ->Czech
da.fmuser.org ->Danish
nl.fmuser.org ->Dutch
et.fmuser.org ->Estonian
tl.fmuser.org ->Filipino
fi.fmuser.org ->Finnish
fr.fmuser.org ->French
gl.fmuser.org ->Galician
ka.fmuser.org ->Georgian
de.fmuser.org ->German
el.fmuser.org ->Greek
ht.fmuser.org ->Haitian Creole
iw.fmuser.org ->Hebrew
hi.fmuser.org ->Hindi
hu.fmuser.org ->Hungarian
is.fmuser.org ->Icelandic
id.fmuser.org ->Indonesian
ga.fmuser.org ->Irish
it.fmuser.org ->Italian
ja.fmuser.org ->Japanese
ko.fmuser.org ->Korean
lv.fmuser.org ->Latvian
lt.fmuser.org ->Lithuanian
mk.fmuser.org ->Macedonian
ms.fmuser.org ->Malay
mt.fmuser.org ->Maltese
no.fmuser.org ->Norwegian
fa.fmuser.org ->Persian
pl.fmuser.org ->Polish
pt.fmuser.org ->Portuguese
ro.fmuser.org ->Romanian
ru.fmuser.org ->Russian
sr.fmuser.org ->Serbian
sk.fmuser.org ->Slovak
sl.fmuser.org ->Slovenian
es.fmuser.org ->Spanish
sw.fmuser.org ->Swahili
sv.fmuser.org ->Swedish
th.fmuser.org ->Thai
tr.fmuser.org ->Turkish
uk.fmuser.org ->Ukrainian
ur.fmuser.org ->Urdu
vi.fmuser.org ->Vietnamese
cy.fmuser.org ->Welsh
yi.fmuser.org ->Yiddish
For application development: C language, data structure, JAVA, etc. need to be learned well. There is nothing special to pay attention to in embedded application development and application development on PC. Maybe you say that you need to optimize the embedded system, yes, you need to optimize, but the unoptimized program is no different from the program development on the PC. In addition, when you have the ability to optimize, you are no longer used to ask this question. For a specific example, such as the development interface, we use VC on the PC; in embedded Linux, we may use QT and Android. At this time, you should learn QT and Android programming. But the foundation is still C or JAVA, and on this basis, get familiar with their interfaces. If you have learned VC, it takes time to understand those classes and controls.
If you want to learn the underlying system, this is my specialty, but I can say a little bit.
Before answering this question, let me answer: Many people ask me, is it to learn to drive or to learn to apply? I can only say that it is based on interest, and drivers and applications are not completely separate.
1. The drivers we are talking about are not limited to hardware operations, but also concepts such as operating system principles and process sleep and wake scheduling. If you want to write a good application, and you want to better solve the problems encountered by the application, you should understand this knowledge
2. Low barriers to application, especially the current ANDROID, pure JAVA. I personally think that the application development path is proficient in business. For example, in the communications industry, IPTV industry, and mobile phone industry, you understand the needs of the industry. Therefore, people who are leaders are mostly applications.
3. Be driven. In fact, I don't want to call it "being a driver", but I want to call it "being a low-level system". Once done, this will kill all industries. I have worked for several years and have made mobile phones, IPTV, and conference TV, but these products make no difference to me because I only do the bottom layer. Their business has nothing to do with me. When there is a problem with the application and they cannot solve it, I will give them an idea from the kernel perspective and provide them with tools. I personally think that I am a technical expert in the development direction of the bottom layer.
4. In fact, there is no boundary between doing the bottom layer or doing the application. If you have the bottom layer experience, you will feel very at ease when you do the application. With business experience, you can get to know the bottom layer, and you will soon be able to form a team.
Back to the question of how to learn. What is included in the embedded Linux underlying system? Don't worry, you will know it by giving an example.
1. When the computer is turned on, who displays those interfaces? It is BIOS, what does it do? Some self-checks, then read windows from the hard disk and start it. Similarly, this BIOS corresponds to the bootloader in embedded Linux. This bootloader needs to read the Linux kernel on Flash and start it.
2. What is the purpose of starting windows? Of course it's online chatting or something. Where are these Internet and chat tools? On the C drive and D drive. Therefore, windows must first identify the C drive and D drive. We call it the root file system under Linux.
3. Windows can recognize the C drive and D drive, so it must be able to read and write the hard drive. The things involved are called drivers. Of course, it is not only a hard disk, but also a network card, USB, and so on. Embedded Linux can read and execute applications from Flash, and it must also have Flash drivers. Of course, it is not just Flash.
Let's talk about it first, embedded LINUX contains four major parts: bootloader, kernel, driver, and root file system.
One, bootloader
It is a slightly more complicated bare board program. But it is not easy to understand and write this bare-board program. The useful tools under Windows weaken our programming ability.
Many people use ADS and KEIL as soon as they play embedded. Can you answer these questions?
1. Once power is on, where does the CPU fetch instructions for execution?
Answer: Generally, the instruction is from Flash.
2. But Flash can only be read and not directly written. If I use global variables, where are these global variables?
Answer: Global variables should be in memory
3. So who puts global variables in memory?
Answer: Can you answer a friend who has used ADS and KEIL for a long time? This requires "relocation". In ADS or KEIL, the relocation code is written for you by the company that makes these tools. Have you ever read it?
4. The memory is so big, how do I know which address to read the "content originally stored in Flash" to the memory?
Answer: This address is determined by "link script", there are scatter files in ADS, and similar files in KEIL. But, have you studied it?
5. You said that relocation is to copy a program from Flash to memory, so this program can read Flash? Answer: Yes, you need to be able to operate Flash. Of course not only these, but also setting the clock to make the system run faster and so on. Let’s ask and answer here first, the bootloader, a bare-board program, actually has three main points:
1. Operation of the hardware
2. Understanding of ARM system processors
3. The basic concepts of the program: relocation, stack, code segment, data segment, BSS segment and so on.
For the operation of the hardware, you need to see the schematic diagram and the chip manual. This requires a certain amount of hardware knowledge. It does not require you to be able to design hardware, but at least to understand it; it does not require to be able to understand analog circuits, but to understand digital circuits. I learned this ability in school. The two books (the title of the book I forgot) are enough. But I doubt you have the patience to finish reading these two books. I don't know if there is a faster book now. If you want to make it fast, let go of this first, and if you don’t understand, just ask Google and post.
In addition, the chip manual must be read, don't look for Chinese, just look at English. It was very painful at first, but later on, once the grammar and vocabulary are familiar, it is easy to read any chip manual.
For the understanding of ARM system processors, please see Du Chunlei's. It talks about assembly instructions, exception modes, MMU, etc. Just these 3 pieces of content need you to understand.
The basic concept of the program, of course, the king is to look at the principles of compilation. Unfortunately, this type of book is definitely of the heavenly book level. I advise you not to watch it unless you are a super genius. Just watch the <Complete Handbook of Embedded Linux Application Development> and the first video I wrote, don't worry, don't spend money. Following the video and doing hardware-related experiments, these concepts will become clear. I haven't found the second set of books or videos that talk about these concepts, allowing me to brag about it blindly. For the bootloader, I first watched it when I was studying, and then I wrote the program myself and did all the experiments on various hardware, such as GPIO, clock, SDRAM, UART, and NAND. If you make them clear, it is easy to understand u-boot by grouping together. To sum up, to understand the hardware schematic diagram and the chip manual, you need to find the information yourself. For the rest, just follow the chapter list of the <Embedded Linux Application Development Complete Manual> and the first phase of the video to learn.
Two, the kernel
Those who want to get started should skip the kernel learning first and learn how to write drivers directly.
To become a master, the kernel must have a deep understanding. Note that I am talking about understanding, I have no extravagant hope to write a kernel.
To understand the scheduling mechanism, memory management mechanism, file management mechanism, etc. inside.
Recommend two books:
1. Read through, please read the thin book (Floating society emphasizes speed)
2. Choose to read, want to know which section to read which section
Three, drive
The driver consists of two parts: the operation of the hardware itself and the framework of the driver.
It's the hardware again. It's still necessary to understand the schematic diagram and the chip manual. Practice more. Speaking of the driver framework, there are some books to introduce it. LDD3, the book written by a foreigner, introduces many concepts and is worth reading. However, its role is limited to introducing concepts. I basically used it to familiarize myself with the concepts before getting started, and then throw it away after getting started.
The more comprehensive introduction to the driver should be Song Baohua's. To be honest, I only read the catalog. Many people said yes, I recommend it here.
If you want to understand a certain area in depth, it is definitely a super 5-star recommendation. You don't expect to read it, more than 1,800 pages, two volumes up and down. When I am not sure about a certain area, I will look through it. Any part of this book can cover two or three hundred pages, which is very detailed. And to take you to analyze the kernel source code with a certain goal. It takes linux 2.4 as an example, but the principle is the same, and it is also applicable to other versions of linux. Any other introductions? Of course there is, the second issue of Wei Dongshan Linux Video. The "Complete Handbook of Embedded Linux Application Development" does not talk much about the driver, and it is not in-depth enough.
Try to write a driver for all the hardware involved in your development board. If you have a problem, you should "think painfully" first. In the process of thinking, you will connect a lot of irrelevant knowledge and finally get it through.
Fourth, the root file system
Have you ever thought about these two questions:
1. For the products made by Linux, some are used for monitoring, some are used as mobile phones, and some are used as tablets. So after the kernel is started, after mounting the root file system, which application should be started?
Answer: The kernel does not know or does not care which user program should be started. It only starts the init application, which corresponds to /sbin/init.
Obviously, this application must read the configuration file and start the user program (monitoring, manual interface, tablet interface, etc.) according to the configuration file. This question reminds us that the content of the file system has some conventions, such as /sbin /init, a configuration file is required.
2. Have you ever thought about who implemented the printf used in the hello and world programs you wrote?
Answer: This function is not implemented by you, but by a library function. When it runs, it has to find the library.
This question reminds us that there are still libraries in the file system. Here is a simple question and answer. If you want to know more, you can look at the init.c of busybox to know what the init process does. Of course, you can also see the chapter on building the root file system in the <Complete Handbook of Embedded Linux Application Development>.
My learning experience
1. When I was in school, I majored in physics and electronics. In fact, I did not teach how to design circuits in the course, but only taught some knowledge about electronic circuits. The design of PCB was taught by myself in the laboratory. I only designed a 2-layer board, and now I almost forget it. But it retains the ability to read the schematic diagram and the chip manual.
2. I took a degree in software, and I am very interested in software design, but I only learned C language and database. I did a lot of competition questions with interest. I can't participate in the competition, but I have a solid C language practice.
3. In the laboratory, in the first company, I designed some simple PCI cards and wrote the windows driver
4. In the second company, using 51 single-chip microcomputer as a car phone, began to embark on the road of pure software.
5. I started to feel the shortcomings of the single-chip microcomputer. I resigned for half a year to learn Linux behind closed doors, starting with how to operate the red hat. The step is to look at it first, then write the bare board program to operate the hardware, and then analyze the u-boot. At the same time, I have some understanding of the LINUX framework.
When writing bare boards, it is recommended that you strengthen your understanding of interrupts. The kernel uses interrupts to complete various functions.
6. After analyzing u-boot, start simple driver programming. At this time, the ability is still very weak.
7. Started to work at ZTE, worked for 2 years, wrote all kinds of drivers, solved all kinds of problems (driving problems, helping to locate application problems), and the ability was tempered.
|
Enter email to get a surprise
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->Afrikaans
sq.fmuser.org ->Albanian
ar.fmuser.org ->Arabic
hy.fmuser.org ->Armenian
az.fmuser.org ->Azerbaijani
eu.fmuser.org ->Basque
be.fmuser.org ->Belarusian
bg.fmuser.org ->Bulgarian
ca.fmuser.org ->Catalan
zh-CN.fmuser.org ->Chinese (Simplified)
zh-TW.fmuser.org ->Chinese (Traditional)
hr.fmuser.org ->Croatian
cs.fmuser.org ->Czech
da.fmuser.org ->Danish
nl.fmuser.org ->Dutch
et.fmuser.org ->Estonian
tl.fmuser.org ->Filipino
fi.fmuser.org ->Finnish
fr.fmuser.org ->French
gl.fmuser.org ->Galician
ka.fmuser.org ->Georgian
de.fmuser.org ->German
el.fmuser.org ->Greek
ht.fmuser.org ->Haitian Creole
iw.fmuser.org ->Hebrew
hi.fmuser.org ->Hindi
hu.fmuser.org ->Hungarian
is.fmuser.org ->Icelandic
id.fmuser.org ->Indonesian
ga.fmuser.org ->Irish
it.fmuser.org ->Italian
ja.fmuser.org ->Japanese
ko.fmuser.org ->Korean
lv.fmuser.org ->Latvian
lt.fmuser.org ->Lithuanian
mk.fmuser.org ->Macedonian
ms.fmuser.org ->Malay
mt.fmuser.org ->Maltese
no.fmuser.org ->Norwegian
fa.fmuser.org ->Persian
pl.fmuser.org ->Polish
pt.fmuser.org ->Portuguese
ro.fmuser.org ->Romanian
ru.fmuser.org ->Russian
sr.fmuser.org ->Serbian
sk.fmuser.org ->Slovak
sl.fmuser.org ->Slovenian
es.fmuser.org ->Spanish
sw.fmuser.org ->Swahili
sv.fmuser.org ->Swedish
th.fmuser.org ->Thai
tr.fmuser.org ->Turkish
uk.fmuser.org ->Ukrainian
ur.fmuser.org ->Urdu
vi.fmuser.org ->Vietnamese
cy.fmuser.org ->Welsh
yi.fmuser.org ->Yiddish
FMUSER Wirless Transmit Video And Audio More Easier !
Contact
Address:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou China 510620
Categories
Newsletter