Embedded software learning roadmap!
Author:Li Yunhui Time:2021-07-21 16:49 Browse(754)
Embedded software learning roadmap, Touch screen and OLED Forum
Embedded learning is a step-by-step process. If we want to develop towards embedded software, the most common direction is embedded Linux. Focusing on this direction, I think it can be divided into three stages: 1. The upper application of embedded Linux, including QT GUI development; 2. The development of embedded Linux system; 3. The embedded Linux driver. At present, the main operating system for embedded is, Linux, wince, VxWorks and so on.
linux is open source and free.

Embedded software learning roadmap!

and its source code is open, which is more suitable for us to learn embedded.
you can try the following route: (1) C language is the best of all programming languages.
the programming of MCU, DSP and other chips like arm can be done by C language, The C programming language is a classic textbook written by foreigners.
there are also Chinese versions.
(2) operating system principle is necessary. If you are a computer major graduate, it doesn't matter. If you are a non computer major, you must look for a relatively simple book on computer principle, (3) Linux operating system is written in C language.
therefore, you should learn Linux programming first. Only when you can apply it, can you further understand the essence of its kernel.
recommended book: Unix environment advanced programming (2nd Edition) (4) understand arm architecture.
principle, In embedded development, we seldom write assembly instructions,But the minimum requirement is to be able to understand the arm assembly.
(5) when the system is transplanted.
you need to start from the bottom bootloader, embedded learning and meaningful wuwuwu Jiuyi, then kernel transplantation, file system transplantation, etc.
and the transplantation part is very dependent on hardware.
its configuration steps are relatively complex, (6) driver development linux driver design is a very challenging field.
it is also a broad and profound content.
the essence of Linux driver design belongs to the category of Linux kernel programming.
therefore, there are requirements for Linux kernel and kernel programming.
before learning, you need to understand the composition of Linux kernel.
because of each part If you want to study it in detail, it can be expanded into a thick book.
the above is just a general framework.
many things will be involved in the actual development, such as cross compilation, Makefile, shell script and so on. Therefore, the learning cycle of embedded is long and the threshold is high, Self study requires strong learning ability and professional skills.
as long as you can persist, you will succeed! Embedded is a relatively big concept.
there are four branches (mainly) 1. Microcontroller (SCM as an example) 2. / microprocessor (arm as an example) 3. DSP (digital signal processing) 4. SOC (system on chip) for beginners, we should first learn SCM, with 51 as a substitute. After you learn 51 well, you can learn more difficult things in depth; Of course, it's not that you just need to learn SCM; If you want to learn SCM well, you have to learn C language, assembly and a lot of application software; When the MCU can master it well, we need to design the schematic diagram and PCB by ourselves; We also need to master the engineering management of system design; More... Single chip computers are relatively simple,When you learn arm well, you will be exposed to many things, such as operating system, driver writing, kernel porting, application adding and upper computer writing, But then you will know all about it.
.
.
arm + Linux route.
mainly focus on Embedded Linux operating system and its application software development objectives: (1) master the structure and principle of mainstream embedded microprocessor (initially set as ARM9) (2) must master an embedded operating system (initially set as uClinux or Linux, (version to be determined) (3) you must be familiar with the embedded software development process and do at least one embedded software project.
the advantages of engaging in embedded software development are: (1) at present, there are very few people in this field at home and abroad.
the entry threshold in this field is high.
so it is difficult for non professional IT personnel to enter this field; On the other hand, it is because this field is relatively new and develops too fast at present, and most people have unconditional contact with it.
(2) it is different from enterprise computing and other application software.
the work intensity of talents in embedded field is usually lower (but the income is not low).
(3) if you want to start a business one day,
start your own products, Embedded software is not as easy to be pirated as application software.
hardware design is usually customized by other companies (this is called "OEM").
all of them are general hardware, We only design software, and then we will become our own products.
(4) what we are interested in.
this is the most important.
the disadvantages of engaging in embedded software development are: (1) the starting point is high.
the technologies used often have certain difficulties. If the foundation of software and hardware is not good, especially the foundation of operating system level software is not deep, it may not be suitable for this trip.
the development of embedded software is very difficult(2) The number of enterprises in this field is far less than that of enterprise computing enterprises.
(3) a few companies often want people with master's degree or above to engage in embedded technology.
it is mainly based on the difficulty of embedded technology.
but most companies do not have this requirement.
as long as they have experience.
(4) it is hard to change platforms.
the reasons for their interest are: 1. Different concepts of success.
they do not waste their lives, It's my success. 2. I like thinking and challenge logical thinking. 3. I like C language. 4. I like low-level development and hate VB development tools. 5. I have a good development prospect and am suitable for starting a business. I don't want to be an engineer when I'm dying. Method steps: 1. Basic knowledge purpose: I can understand the working principle of hardware, but focus on embedded software, Especially the operating system level software, that will be my advantage.
subjects: digital circuit, computer composition principle, embedded microprocessor structure, assembly language, C / C + +, compilation principle, discrete mathematics, data structure and algorithm, operating system, software engineering, network, database.
methods: although there are many subjects,
they are relatively simple foundation, And most of them have been mastered.
they may not be all learned.
they can be selected according to their needs.
for example, the C + + programming language (I have no time to read), data structure-c2.
2. Learning Linux purpose: to deeply master the Linux system.
methods: use Linux -> linxu system programming development -> driver development and analysis of Linux kernel.
after reading several times.
look at the scenario analysis, compare and see deeply, the two books intersect, Depth is the key, emotion is the goal.
analysis is version 0.11.
it is suitable for learning,Finally, I will go deep into the code.
main books: complete analysis of Linux kernel, advanced programming in UNIX environment, in-depth understanding of Linux kernel, scenario analysis and source generation.
3 The purpose of learning embedded Linux is to master embedded processor and its system.
methods: (1) embedded microprocessor structure and application: arm principle and assembly can be used directly.
do not repeat x86.
(2) embedded operating system class: UCOS / II is simple.
open source, (3) you must have a development board (ARM9 or above).
you can take part in the training if you have the conditions (make rapid progress and get to know some friends). Main books: Mao's embedded system and other ARM9 manuals and arm assembly instructions, etc.
4. In depth study of a and digital image compression technology: you should master MPEG, MP3 and other encoding and decoding algorithms and technologies.
B Communication protocol and programming technology: TCP / IP protocol, 802.11.
Bluetooth, GPRS, GSM, CDM a, etc.
C. network and information security technology: such as encryption technology.
digital certificate Ca, etc.
D DSP Technology: digitalsignalprocess.
DSP processor implements digital signal processing algorithm by hardware.
Description: too many details are not explained.
it can be adjusted according to the actual situation.
the key points are 1 and 3.
it is not necessary to do it completely in sequence.
for learning C + +.
the reason is that C + + is not only a language, a tool, but also an art, a culture, a philosophy, a culture But it's not something to show offFor Linux kernel,
learning programming, it is necessary to read some excellent code.
note: to learn how to use one to counter many.
have a strong foundation, many things can be easily seen.
to become a qualified programmer.
the prerequisite is to be proficient in at least one programming language, And have a good logical thinking.
we must combine theory with practice.
don't blindly study technology.
although it's difficult to squeeze out time, we still need to leave some room to improve other hobbies, such as universe, sketch, machinery, management, psychology, games, science fiction movies.
there are still some things we don't want to do but must do! Never dream of stepping up to the sky.
don't be impetuous, don't feel that the road is too long.
when the opportunity comes, start a business (don't believe that miracles happen.
it's hard to succeed blindly, even if it's successful, the development space is not necessarily very large).
) B5 n.] 8 B4 Y / J    w.
thank you for sharing!! I've been looking for embedded system for a long time.
.
.
.
.
for a long time
Related topics