Arm+linux route, focuses on embedded Linux operating system and its application software development goals:
(1) Master the structure and principle of the mainstream embedded microprocessor (initially set as ARM9)
(2) must master an embedded operating system (initially set to Uclinux or Linux, version tbd)
(3) must be familiar with the embedded software development process and at least one embedded software project.
The benefits of engaging in embedded software development are:
(1) At present, people in this area are very scarce at home and abroad. The threshold for entry in this area is high, so it is difficult for non-professional IT staff to cut into this area, on the other hand, because this area is relatively new and is currently developing too fast for most people to contact unconditionally.
(2) Unlike application software such as enterprise computing, the job strength of embedded talent is usually lower (but the income is not low).
(3) which day if want to start a business, engage in their own products, embedded is not as easy as the application of software piracy. Hardware design is generally asked to other companies to order (this is called "OEM": OEMs), are general-purpose hardware, we just design software to become their own products.
(4) Where interest lies, this is the most important.
The disadvantages of engaging in embedded software development are:
(1) The starting point is higher, the technology used often has a certain difficulty, if the software and hardware foundation is not good, especially the operating system level of soft skills, it may not be suitable for this trip.
(2) The number of enterprises in this area is far less than enterprise computing enterprises.
(3) A few companies often want to master more than a person to engage in embedded, mainly based on the difficulty of embedded. But most companies do not have this requirement, as long as they have experience.
(4) Platform relying on strong, change the platform more hard.
Origin of Interest:
1, the concept of success is different, not wasted life, is my success.
2, like thinking, challenging logical thinking.
3, like C
C is a language which can exert the limit of thinking. Some aspects of the spirit of C can be summarized into the following sentences:
Trust the programmer.
Don't stop programmers from doing what they need to do.
Keep the language short and lean.
One way to do an operation.
Makes it run fast enough, although it is not guaranteed to be portable.
4, like the bottom development, hate the development of VB tools (not to say that VB is not good).
5, the development of good prospects, suitable for entrepreneurship, do not want to die when it is an engineer.
Method steps:
1. Basic knowledge:
Objective: To understand the principle of hardware, but focus on embedded software, especially operating system-level software, that will be my advantage.
Subjects: Digital circuit, computer composition principle, embedded microprocessor structure.
Assembly language, C + +, compiling principle, discrete mathematics.
Data structures and algorithms, operating systems, software engineering, networks, databases.
Methods: Although the subjects are numerous, they are relatively simple basis, and most of them have mastered. Not necessarily the whole study, may choose according to the need.
Main book: the C + + programming language (has no time to read), data structure-C2.
2. Learn Linux:
Objective: To gain an in-depth understanding of Linux systems.
Method: Develop and analyze the Linux kernel using the LINUX-〉LINXU system programming development-〉 driver. First look deep, the principle of the speaker. After a few times, look at the scene analysis, contrast, two cross, Deep is the outline, sentiment is the goal. Analysis is the 0.11 version, suitable for learning. Finally drill down into the code.
Main books: Full anatomy of the Linux kernel, advanced programming in the UNIX environment, deep understanding of the Linux kernel, scenario analysis, and source generation.
3. Learn Embedded Linux:
Objective: To master the embedded processor and its system.
Methods: (1) The structure and application of the embedded microprocessor: direct arm principle and assembly can, do not repeat x86.
(2) Embedded operating system class: Ucos/ii simple, open source, can be used to get started. Then in-depth study of uclinux.
(3) must have a block Development Board (ARM9 above), have the conditions to participate in training (progress fast, can meet some friends).
Main books: Maudeca's "embedded system" and other ARM9 manuals and arm assembly instructions.
4, in-depth study:
A, Digital Image compression technology: Mainly should master MPEG, MP3 and other codec algorithms and technology.
B, communication protocol and Programming Technology: TCP/IP protocol, 802.11,BLUETOOTH,GPRS, GSM, CDMA and so on.
C, network and information security technology: such as encryption technology, digital certificate CA and so on.
D, DSP technology: Digital Signal PROCESS,DSP processor through the hardware to realize the processing algorithm.
Description: Too much detail is not stated, can be adjusted according to the actual situation. The focus is 1, 3, not necessarily in order. For C + +, the reason is that C + + is not just a language, a tool, she is an art, a culture, a philosophical idea, but not to show off things. For the Linux kernel, it is also necessary to learn to program and read some good code.
Note: To learn to raise a counter-many, there is a strong foundation, a lot of things simple to see can be. To be a qualified programmer, the prerequisite is to be proficient in at least one programming language and have good logical thinking. We must combine practice with theory.
Do not blindly study technology, although the squeeze time is difficult to do, but still have to leave some room to improve other hobbies, such as the universe, drawing, machinery, management, psychology, games, science fiction movies. There are some things that you don't want to do but have to do!
Technology is programmed and programmed in programming. Never dream skyrocketing rise, do not do impetuous people, do not feel the road diffuse on. But to program programming in programming, finished in programming, in programming! And so the opportunity to start a business (do not believe that there are miracles, blind business is difficult to succeed, even if the success of the development of space is not necessarily very large).
Embedded book recommendations
Linux Basics
1. "Linux and Unix Shell Programming Guide"
C Language Basics
1, "C Primer plus,5th Edition" "Beauty" Stephen Prata
2, "The C programming Language, 2nd Edition" "Mei" Brian W. Kernighan David M. Rithie (K & R)
3, "advanced programming in the UNIX environment,2nd Edition" (apue)
4, "Embedded Linux application Development detailed"
Linux kernel
1, "in-depth understanding of the Linux kernel" (third edition)
2, "Linux kernel source code scenario analysis" Maudeca Hu Himing
Research direction
1, "UNIX Network Programming" (UNP)
2, "TCP/IP detailed"
3, "Linux kernel Programming"
4, "Linux Device Driver Development" (LDD)
Hardware Basics
1, "ARM architecture and programming," Du Lei
2, s3c2410 Datasheet
Basic English
1. "Computer and communication professional English"
System Tutorials
1, "Embedded system-architecture, programming and Design"
2, "embedded system-the use of open source code and Strongarm/xscale processor" Maudeca Hu Himing
3. "Building Embedded Linux Systems"
Theoretical basis
1, "Introduction to Algorithms"
2, "Data structure (c language version)"
3. "Computer Organization and Architecture" performance analysis
4, "in-depth understanding of computer systems" "Beauty" Randal E. Bryant David O ' Hallaron
5, "Operating system: Essence and Design Principle"
6, "Compiling principle"
7. "Data Communication and computer network"
8, "data compression principle and application"
C Language Books recommended
1. The C programming language
"C Programming Language"
2. Pointers on C
"C and Pointers"
3. C Traps and pitfalls
"C Pitfalls and pitfalls"
4. Expert C Lanuage
"Expert C Programming"
5. Writing Clean Code
-----Microsoft techiniques for developing bug-free C Programs
"Programming essence--microsoft Writing high quality error-free C program Secret"
6. Programming Embedded Systems in C and C + +
"Embedded System Programming"
7. "C Language Embedded system programming discipline"
8. "High quality C++/C Programming Guide" Lin Rui
As much coding as possible, to learn C well, you can't just focus on C itself. Algorithms, architecture, etc. are important.
Excerpted from http://www.embeddedlinux.org.cn/bbs/htm_data/11/0809/123.html
Embedded (linux+arm) circuit diagram