当前位置:网站首页>How are masters refined?
How are masters refined?
2022-07-26 05:29:00 【Uncle wheat】
Hello everyone , I'm wheat .
Many college students 、 Beginners always like to ask a question : How can I get there ?
The following is a personal experience shared by an embedded expert , Look at how steel is made , I believe it will help .
Stage 1
From freshman to junior year, I am the same as most students :
Learn the professional knowledge (EE major ),
Learn the computer courses required for embedded software development ( Assembly principle , The principle of computer organization , operating system ,C Language, etc. ),
Learn Embedded projects ( From the laboratory project , The events I think of and all kinds of competitions ).
About how to learn Embedded Software Development :
① Study 51 Single chip microcomputer .
At this stage, you just need to follow Guo Tianxiang's video to learn , Only functions are required , natural .
But suggestions can raise questions , such as “ Why go to IO The control register can be lit by writing a specific value LED The lamp ?”
“IO What is the circuit structure of the port ?”
“ What is pull-up and pull-down , Fill current, pull current ?”,
This stage is mainly familiar with the use of MCU , And think and find problems in use , Also familiar with some basic concepts .
② Start looking up information and reading .
Look at analog circuits, digital circuits, etc , Start to figure it out 1 Questions raised in . At this time, the problem mainly focuses on the circuit .
③ Begin to learn STM32.
Buy any board , Read atomic books and do it step by step .
At this time, you will encounter many computer problems , This is the time to learn the tutorial , Learn the language : Microcomputer principle , Compiler principle , operating system .
You have to find out ARM framework , Find out CPU How to pick a finger , decoding , perform , Know address bus , Control bus , How does the data bus work .
Find out what the files produced by each stage of your compilation are , What is distributed loading , What is relocation , What is a code snippet , What is a data segment , wait .
Find out CPU How to start , How the program image is laid out in memory .
Know how interrupts work , And site protection, etc . Finally, after you know all the knowledge points , to turn to GCC Development STM32, At this time, if you have good knowledge , You should be able to quickly learn to write linker scripts and understand the meaning of each statement .
④ Start enhancement C Language .
Dig deep C The dead corners of language .
It's best to know what the compiler will do when you write a statement .
You also need data structures and software engineering , It's best to learn design patterns .
Start learning to develop a good code style , Start thinking about the structure of your code .
It can be said that if you can learn design patterns well , Learn later LINUX The kernel is of great benefit .
You'll find that LINUX The input subsystem of is a bit like the responsibility chain mode , Will find ASOC The audio system is a bit like template method mode .
Private opinion , If you can examine the same programming idea in more than two different aspects , You will get a deeper understanding , Better understand its essence. .
⑤ Read it carefully OS A book on .
All knowledge points should be understood , What is the process , What is the procedure , What is a thread , Contention deadlock priority inversion , Virtual address space physical address space , User space, kernel space, etc .
Begin to learn ucos, There's nothing to say about this , If in 2 Be able to master all kinds of knowledge points , know CPU How to interrupt, how to protect and restore the site , So read ucos When the source code , In principle, there will be no doubt .
If you can 4 Develop the ability to grasp the overall structure of the code, and learn the data structure and basic algorithms , There is no obstacle to reading the source code .
Once the principle is understood , The source code can also be read , So thoroughly ucos It's a matter of course .
⑥ Imitate yourself ucos Write a stm32 Real time on os come out .
⑦ March LINUX.
Study LINUX Basic use of , Look at Zhao Jiong's book , chew LINUX Kernel design and implementation , Grasp the overall kernel architecture .
Then you can learn to drive , Read the book suggested by teacher Chen Xuesong , Understand the basic driver architecture and how to write simple drivers , take sth. seriously , Here's an emphasis on the device driven model .
Last bite LINUX Kernel source code scenario analysis , Read two volumes carefully , Here, I'd like to emphasize... In the kernel VFS part .
Then I read Mr. Song Baohua's book , Further learning driven development .
Last , Look at the kernel source code, look at the kernel source code, look at the kernel source code .
⑧ What else SPI,IIC, what DMA, It's just a matter of skills , As long as knowledge is good , You can do whatever you want .
Stage 2
From junior year to graduate school, I was very tangled between work and postgraduate entrance examination , During this period, I often think about what embedded development is , How to do embedded development well , What career path should I choose in the future .
So , Like a lot of people , I have consulted the predecessors of embedded development on the Internet for many times .
At this stage , I learned Linux Drive development , And gradually realize , Embedded development is a more software oriented position ( I think most students do embedded software development , Not hardware development ),
You should study computer architecture deeply , Instead of doing boring embedded related projects over and over ( Especially less participation in messy competitions ).
Final , I chose graduate school , Want to stand a little higher and see this thing .
Stage 3
Graduate student stage (2018), When everyone is eager to join AI When your camp , I still love deeply .
Course selection , I chose the embedded real-time operating system , Courses related to computing architecture , I also read a lot of related books , Remain embedded weekly Linux Learning from .
When not with me , Mingming chose to be the mentor at the bottom , As a result, the tutor turned to deep learning , Fortunately, it's a terminal +AI Related directions , It's not a complete deviation , This is somewhat comforting ( After all, I still can't let go of the embedded ).
At this stage , Because of contact with a lot of people and things , I realize more and more , Embedded is just a platform , Don't think of embedded as a specific position , No matter hardware or software .
therefore , I have a further understanding of this position and the current employment situation of the industry .
Stage 4
Study two to study three at this stage , I'm right in the narrow sense ( drive , application development ) Completely relieved ,
I don't think the embedded system that many people like is driver or application development , But a curiosity about the underlying system and the pleasure of control .
Rather than like embedded , I prefer computer architecture .
therefore , As long as it involves hardware software development , I like them all , I also define them as embedded .
Because embedded software development is based on the underlying language , The principle of computer organization , A kind of software development based on knowledge such as operating system ,
If you want to do embedded development well , You have to learn these courses well , If you learn these courses well , You should be qualified for all the positions in the underlying software development .
therefore , Why narrow the definition of embedded development to driver development ,XX Protocol development and so on ?
Final , I resolutely gave up at this stage Linux Driven learning , Put in Python In the arms of deep learning .
I don't care if what I do is embedded development , Only focus on whether it has anything to do with the embedded platform .
My research is how to deploy a deep learning model to the embedded platform .
Some may wonder , What does this have to do with embedded development ? Why doesn't it matter ? On embedded platform C Language to write forward reasoning of neural network model , This is not our C Has the knowledge of language and composition principles been brought into play ?
When the performance of the image processing program is insufficient , View the generated assembler , When assembly efficiency is not high , take C Language is replaced by assembly code written by ourselves , Isn't that enough ?
Actually , When we relax our thinking , Embedded is no longer a specific position ,
It could be AI Algorithm engineer ,AI Compiler development engineer ,FPGA Acceleration Engineer , High performance engineer, etc .
Original address :https://www.zhihu.com/question/370606355/answer/1865920389
author : The dreamer is also cold
Copyright notice : Source network of this paper , The copyright belongs to the original author . Copyright issues , Please contact to delete .
Previous recommendation
Chip refurbishment and counterfeiting , People are numb
The perfect combination of Tetris and dot matrix clock
This kind of project , You'd better not answer !
C The advanced use of language , object-oriented
Debugging tools ! A lightweight log Library log.c
Magical double pendulum system
边栏推荐
- Princeton calculus reader 02 Chapter 1 -- composition of functions, odd and even functions, function images
- jupyter notebook快捷键
- 517. 超级洗衣机
- OD-Paper【2】:Fast R-CNN
- 《MongoDB入门教程》第08篇 比较运算符
- TZC 1283: simple sort - select sort
- Hack The Box - Introduction to Networking Module详细讲解中文教程
- SSTI payload and various bypass methods
- No background, no education? Is it really hopeless for specialist testers to enter Internet factories?
- Real scientific weight loss
猜你喜欢

LNMP架构

kubernetes install completed

Usage and common problems of SIP softphone registered with SIP account

学生如何申请免费IDEA

嵌入式通用学习路线整理

Yolov3 preparatory work

How students apply for free idea
![提升命令行效率的 Bash 快捷键 [完整版]](/img/ec/f0dd2fbfac6853ae60d7cf52d8f3e1.png)
提升命令行效率的 Bash 快捷键 [完整版]

Uniapp applet framework - a set of code, multi segment coverage

Application and value of IVR in VoIP telephone system
随机推荐
High frequency electronic circuit review examination questions and answers
FPGA刷题——序列检测
我又发现了超赞的软硬件项目,全部开源
高效,可靠,安全的串口通讯开源方案
嵌入式开发小记,实用小知识分享
Lesson 2 getting to know slam for the first time
高频电子线路复习考试题及答案
Recommend 12 academic websites for free literature search, and suggest to like and collect!
Ansible中常用的模块
SIP账号注册的SIP软电话的使用和常见问题
Leetcode linked list problem - 203. remove the linked list elements (learn the linked list by one question and one article)
Redis official visualization tool, with high appearance value and powerful functions!
Getaverse,走向Web3的远方桥梁
Webassembly 01 basic information
How students apply for free idea
DOM operation -- operation node
Chinese character style transfer --- learn the conversion and generation of one to many programmed Chinese characters through generation confrontation network
Week 6 Learning Representation: Word Embedding (symbolic →numeric)
调试利器!一款轻量级日志库 log.c
517. Super washing machine