网站的信息量能做什么,wordpress大括号,电子商务网站建设题6,phpcms 怎么做网站阶段 1
大一到大三这个阶段我与大多数学生相同#xff1a;
学习本专业知识#xff08;EE专业#xff09;#xff0c;学习嵌入式软件开发需要的计算机课程#xff08;汇编原理#xff0c;计算机组成原理#xff0c;操作系统#xff0c;C语言等#xff09;#xff0c…
阶段 1
大一到大三这个阶段我与大多数学生相同
学习本专业知识EE专业学习嵌入式软件开发需要的计算机课程汇编原理计算机组成原理操作系统C语言等学习嵌入式项目来源于实验室项目自己想到的项目以及各种比赛。
关于如何学习嵌入式软件开发
① 学习51单片机。
这个阶段你只需要跟着郭天翔的视频去学只要求实现功能不求甚解。
但建议能够提出问题比如“为什么往IO控制寄存器写入特定值能点亮LED灯”
“IO口的电路结构是什么样子的”
“什么是上拉下拉灌电流拉电流”
这一阶段主要是熟悉单片机的使用并且在使用中思考发现问题还能熟悉一些基本概念。
② 开始查资料看书。
看模拟电路数字电路等等开始去弄明白1中所提出的问题。这时候问题主要集中在电路方面。
③ 开始学习STM32。
随便买个板子看原子的书跟着一步步去做。
这时候你会遇到很多计算机方面的问题这时候一边学习教程一边学习微机原理编译原理操作系统。
你要弄清楚 ARM 架构弄明白 CPU 如何取指译码执行知道地址总线控制总线数据总线如何工作。
要弄明白你编译各个阶段产生的各个文件是什么什么是分散加载什么是重定位什么是代码段什么是数据段等等。
弄明白 CPU 如何启动程序镜像在内存中如何布局。
要知道中断的原理以及现场保护等等。最后你了解了各个知识点之后转向 GCC 开发 STM32这时候你如果知识掌握得不错你应该可以很快地学会编写链接器脚本并且明白每一条语句所代表的含义。
④ 开始增强 C 语言。
深入挖掘C语言的各个死角。
最好可以做到当你写下一条语句的时候知道编译器会如何处理。
还需要数据结构和软件工程建议最好还要学习一下设计模式。
开始学习养成良好的代码风格开始思考代码的结构。
可以说设计模式如果能学好在往后学习 LINUX 内核时大有裨益。
你会发现 LINUX 的输入子系统有点像职责链模式会发现 ASOC 音频系统有点像模板方法模式。
私以为如果能在两个以上不同方面考察同一种编程思想你会得到更加深刻的理解更能领会其精华。
⑤ 认真研读 OS 方面的书。
各个知识点都要弄明白进程是什么程序是什么线程是什么竞争死锁优先级反转虚拟地址空间物理地址空间用户空间内核空间等等。
开始学习 ucos这个没什么可说的如果在 2 中能熟练掌握各种知识点知道 CPU 如何中断如何保护恢复现场那么读ucos 的源码时候在原理上就不会有什么疑惑。
如果能在 4 中养成把握代码整体结构的能力并且学习好数据结构和基本的算法读源码就没有什么障碍。
一旦原理弄通了源码也能读懂那么吃透 ucos 就是顺理成章的事情。
⑥ 自己仿照 ucos 写一个 stm32 上的实时 os 出来。
⑦ 进军 LINUX。
学习 LINUX 的基本使用看赵炯那本内核剖析啃 LINUX 内核设计与实现把握总体的内核架构。
之后可以学习驱动看建议陈学松老师的书弄明白基本的驱动架构和如何编写简单的驱动认真对待这里强调一下设备驱动模型。
最后啃 LINUX 内核源码情景分析上下两册用心读这里着重强调一下内核中的 VFS 部分。
之后就是看宋宝华老师的书进一步学习驱动开发。
最后看内核源码看内核源码看内核源码。
⑧ 其它的什么 SPIIIC什么 DMA都只是技能问题只要知识学的好技能想咋点就咋点。
阶段 2
大三到研究生入学前这个阶段我在工作与考研之间无比纠结并在此期间无数次常思考嵌入式开发到底是什么如何把嵌入式开发做好以后该选择怎样的一条职业道路。
为此像很多人一样在知乎上像做嵌入式开发的前辈们咨询过多次。
在这个阶段我学习了 Linux 驱动开发并渐渐认识到嵌入式开发是一个比较偏软件的岗位我认为大多数学生做的工作都是嵌入式软件开发而不是硬件开发
应该深入学习计算机体系结构的知识而不是把那些无聊的嵌入式相关项目翻来覆去的做尤其少参加乱七八糟的比赛。
最终我选择了读研想站的再高一点看这件事。
阶段 3
研一进入研究生阶段2018当大家都火急火燎的加入 AI 的阵营时我依然对嵌入式爱的深沉。
选课时我选择了嵌入式实时操作系统计算体系结构相关的课程还看了很多相关的书籍依然每周保持嵌入式 Linux 的学习。
时不与我明明选择了做底层的导师结果导师转做深度学习了还好是做终端AI相关的方向也不算完全偏离嵌入式这让人多少有点欣慰毕竟我还是放不下嵌入式的。
在这个阶段由于接触了不少的人和事我越来越认识到嵌入式只是一个平台切勿把嵌入式看作一个具体的岗位无论硬件还是软件。
因此我对这个岗位以及行业就业现状有了更进一步的认识。
阶段 4
研二到研三在这个阶段我对狭义嵌入式驱动应用开发完全释怀
我认为许多人喜欢的嵌入式并不是驱动或者应用等开发而是对底层系统的一种好奇心与掌控时的快感。
与其说喜欢嵌入式还不如说喜欢的是计算机体系结构。
因此只要是涉及到硬件的软件开发我都喜欢我也将其均定义为嵌入式。
因为嵌入式软件开发就是建立在底层语言计算机组成原理操作系统等知识上的一种软件开发
如果你想将嵌入式开发做好你就得学好这几门课程 如果你学好了这几门课程底层软件开发工作的岗位你应该都能胜任。
因此又何必将嵌入式开发狭义的划到驱动开发XX协议开发之类的呢
最终这个阶段我毅然放弃了 Linux 驱动的学习投入了 Python 深度学习的怀抱中。
我不再关注我到底做的是不是嵌入式开发只关注和嵌入式平台有没有关系。
我研究的是如何把一个深度学习模型部署到嵌入式平台上去。
有人可能会疑问这和嵌入式开发有什么关系为什么没有关系呢在嵌入式平台上用 C 语言编写神经网络模型的前向推理这不是把我们的C语言和组成原理的知识发挥出来了吗
当图像处理程序性能不足时查看生成的汇编程序当汇编效率不高时将 C 语言替换为我们自己写的汇编代码这还不够嵌入式吗
其实当我们把思路放宽后嵌入式就不再是某一个具体的岗位了
它有可能是 AI 算子工程师AI编译器开发工程师FPGA加速工程师高性能工程师等等。
这些岗位需要的技能与嵌入式工程师极为相似年薪却最低 30W 起。
为什么很简单供需关系决定价格嵌入式早已江河日下但嵌入式某一风口就能迈向高薪之路这个道理在任何技术领域都是通用的。
2018年-2021年嵌入式AI高薪未来嵌入式XX也可以。
至于未来的风口是什么就要靠我们自己去探索了。只要保证我们自己有核心的知识储备再学习一下风口相关的技术立马就能咸鱼翻身。
在视野拓宽后我去了 2 家大公司实习后续我陆续收到了很多公司的offer。
里面既有纯算法计算机视觉的岗位50-60W也有异构计算的岗位(45-55W)也有AI芯片工具链相关的岗位(45W-50W)。
回头看我好像已经荒废技术好久了但是好像依旧在嵌入式学习的路上。