当前位置:网站首页>Embedded general learning route arrangement
Embedded general learning route arrangement
2022-07-26 05:30:00 【Uncle wheat】
Hello everyone , I'm wheat .
Engaged in embedded related industries , Almost soon 10 Years time. , Go a lot of detours , Stepped on many pits .
A lot of people will ask , Does embedded really have no future ? In fact, I can't answer this . From the perspective of development , Everything has a cycle .
This has nothing to do with embedded , Industry related , The growth of an industry , Related to capital , It is related to Guo Jia's development . Therefore, only the right time, place and people , And this man and , It's your choice .
This is my view , You are also welcome to express your views .
If you plan to get started with embedded learning , Let's talk about the embedded learning route .
What is embedded ?
Embedded is embedded system ,IEEE( Institute of electrical and Electronics Engineers ) It is defined to control 、 A device for monitoring or assisting in the operation of machines and equipment , It's a kind of A dedicated computer system .
The commonly accepted definition of embedded system in China is Application centric , With Based on computer technology , Software and hardware can be tailored , Adapt application system to function 、 reliability 、 cost 、 Volume 、 Special computer system with strict requirements on power consumption .
Embedded is a comprehensive direction of many disciplines , There are many subdivisions . In fact, it can directly cut into a specific field , Then introduce the learning route , For example, MCU development ,Linux application development ,Linux Drive development .
But it's not hard to find , Although there are many subdivisions , But the knowledge that needs to be learned overlaps , Some are independent .

Embedded corresponding recruitment positions , The basic skill tree requirements are not much different , However, there are many jobs that are deeply bound to the industry , It will require industry experience and relevant skills precipitated in this industry ;
For example, automotive electronics requirements can,autosar;
Internet of things requires network protocols , Single chip microcomputer ,RTOS,WiFi,Bluetooth wait ;
BSP The engineer requires to master Linux Kernel and various subsystems ;
Robot related requirements ROS;
There are many more positions , Here are just a few more , Now I'd like to share what I think is the best way to learn .
Here is my mind map . To put it simply, the traditional learning route .

Programming based

C Language
This must be mastered .C The language is very flexible , It can be used to develop single chip computers , Drive development , Firmware development , Kernel development , application development , Almost can be used .
For example, the famous operating system Linux, Mainly C The realization of language , Of course, there are many others based on C Language project , I won't introduce them here .
Study C Language , I prefer the courses of Weng Kai from Zhejiang University .
C++
C++ In embedded, it is more about application development , Because of C Good compatibility , So it is still used in hardware C Programming , And the more complex business logic part , Object oriented C++ Encapsulate and implement .
C++ and C Is also very practical .
Data structure and algorithm
Use data structures rationally , It will get twice the result with half the effort , Commonly used data structures , Like queues , Linked lists are actually very common in embedded development , Of course, hashmap, Binary trees and so on .
If programming languages are weapons , So data structure is a move . What kind of scene , What kind of moves to use , It is roughly written in the data structure .
Other programming languages
There are many other programming languages , Here are a few .
shell
This is a scripting language , stay Linux It is quite common in , Generally speaking , master shell, Can greatly improve work efficiency , This is highly recommended to master , You can read more if you don't understand man page;
python
Very convenient , Greatly improved efficiency . Used to verify some algorithm functions , Or office automation .
Hardware knowledge
The hardware knowledge here is not for the route of pure hardware development , But do embedded software development , What hardware knowledge is needed , Let's talk about it in detail ;

Hardware foundation
Have the most basic hardware knowledge , If it is Do driver development , such as BSP The engineer , There must be two key points , Can understand the chip Datasheet, Can understand the schematic diagram , Because we need to develop the board machine .
Common communication protocols
such as UART,I2C,SPI Protocol, etc , These three are relatively common , It's relatively simple . There are many other communication protocols , I won't go into it here .
Common on-chip peripherals
such as gpio,adc,dac,watchdog,timer,pwm these , The principle is the same , But in general SOC Basically, they are all similar peripherals .
Use of common tools
Oscilloscope , A multimeter , The use of power , At least don't often connect the positive and negative poles wrong . The oscilloscope is convenient for checking the timing , It is convenient to troubleshoot problems during development .
Embedded system
Embedded operating system , It is usually divided according to specific requirements , Common real-time systems are ucos,freertos,rtthread,vxworks wait , and Linux The system is also very commonly used ;
Real time systems
Generally speaking , Real time systems are mostly used in control situations , such as ucos,freertos,rtthread,vxworks wait , Are real-time systems .
Linux System
Linux The system is widely used , Smart hardware , Monitoring equipment , Router , mobile phone , Cars, etc. , All have its figure . The general direction is mainly divided into Linux Drive and Linux application , The boundary between the two has been blurred . The technical architecture is divided into user space and kernel space , As shown in the figure below ;

If it's application development , In fact, it is similar to pure software development .
Basic content , In fact, there is also a part mentioned above ,Linux System programming , Multithreading , Basic knowledge at the operating system level , Mutually exclusive , Semaphore , Network programming and so on .
Specific application , For example, the development of audio and video , Motion control , Robot development and so on ;
Recommend 《Unix Environment advanced programming 》, This is the foundation. .
drive
The requirements for mastering the underlying knowledge are relatively high , At least trigger Linux Compilation of , Tailoring , Transplant and so on .
According to specific hardware requirements , Add the corresponding driver to the system , Because the system has specified the corresponding drive framework , Therefore, we need to understand various kernel subsystems and various types of drivers . For example, character device driver , Block device driver , The use of the device tree .
Deep learning subsystem is also a difficulty , Can help better understand Linux, For example, process scheduling (SCHED)、 memory management (MM)、 Virtual file system (VFS)、 Network interface (NET) And interprocess communication (IPC).
Compare the recommended learning resources , Teacher songbaohua Linux kernel 4.0 Drive books , Teacher weidongshan's driving video , Internet age , Just search it and you'll have .
All in all , Technology lies in accumulation .
other
So much for that , If you want to keep the technology refined , Need to ensure continuous learning , See more excellent source code , Find excellent open source projects .
Unconventional learning route
After mastering some basic knowledge , You can also try this learning route , Study in the form of projects .
Set a target project , for example ;
stay Linux Implement a program on the system , If you have to deal with hardware , For example, make a face recognition access control system ;
For example, it should be transplanted on a board Linux System , And add drivers ;
Using SCM to develop a small project , Complete the design of software and hardware ;
These are three different directions , Because everyone's specific situation is different , You can do it according to your own technology stack and hobbies , I can't think of doing anything , Find some open source projects , Engrave it yourself , It's also very good .
With a goal , Disassemble the task , There will be many knowledge blind spots in this process , I will use a lot of knowledge I mentioned above , At this time, you have to study , To absorb , Study and practice with purpose , The effect will be better .
summary
This article generally introduces the embedded learning route , Relatively broad and brief , Because the embedded knowledge system is really huge , Write purely from a personal perspective , There are many unilateral and limited places .
Hope to help some students who want to join this direction , If there are errors or improvements in this article , Your suggestions are welcome .
边栏推荐
- FTP实验及概述
- 循环结构 practice
- Okaleido launched the fusion mining mode, which is the only way for Oka to verify the current output
- [personal summary] end of July 24, 2022
- Knowledge points of Polymer Physics
- Dynamic memory management and flexible array
- Shell process control (emphasis), if judgment, case statement, let usage, for ((initial value; loop control condition; variable change)) and for variable in value 1 value 2 value 3..., while loop
- Recommended reading: how can testers get familiar with new businesses quickly?
- TZC 1283: simple sort - select sort
- 轻量级单片机命令行交互项目,全部开源
猜你喜欢

NetCore MySql The user specified as a definer (‘admin‘@‘%‘) does not exist

OD-Paper【1】:Rich feature hierarchies for accurate object detection and semantic segmentation
C language explanation series -- understanding of functions (3) formal parameters, arguments, nested calls and chain access

Hack the box -sql injection fundamentals module detailed Chinese tutorial

高分子物理试题库

LNMP架构

kubernetes install completed

Reason for pilot importerror: cannot import name 'pilot_ Version 'from' PIL ', how to install pilot < 7.0.0

Week 6 Learning Representation: Word Embedding (symbolic →numeric)

MongoDB 常用命令
随机推荐
Leetcode linked list problem - 203. remove the linked list elements (learn the linked list by one question and one article)
高分子物理试题库
Redis 官方可视化工具,高颜值,功能真心强大!
Okaleido launched the fusion mining mode, which is the only way for Oka to verify the current output
数仓搭建-DIM层
mysql如果计算本月变动/本月增幅/同比变动/同比增幅?
LAMP架构
NetCore MySql The user specified as a definer (‘admin‘@‘%‘) does not exist
高手是怎样炼成的?
Jupiter notebook shortcut key
【STM32系列汇总】博主的STM32实战快速进阶之路(持续更新)
Polymer physics test question bank
Day011 一维数组
提升命令行效率的 Bash 快捷键 [完整版]
FTP experiment and overview
kubernetes install completed
Hack The Box -SQL Injection Fundamentals Module详细讲解中文教程
no networks found in /etc/cni/net.d
Application and value of IVR in VoIP telephone system
517. 超级洗衣机