目录
一.嵌入式学习路线
对于计算机科学与技术嵌入式方向的学生,要学好嵌入式括软件和硬件。 大一时搜集有关嵌入式方面的介绍,分享一篇对我颇有启发的作者——小智学长嵌入式(微信公众号)。
截取文章【干货】关于嵌入式开发的经验之谈如下:
总结下来,需要掌握以下技能:
算法层:需要根据处理器的特性,选择最适合在该处理上运行的算法。例如两个实现相同功能的算法,一个适合并行,一个不适合并行,则优先选取适合并行的算法。再比如有些算法的实现,存在一些过设计(如太多的迭代次数),需要能及时识别出来。算法层的优化必须先做,在这一层可能能带来事半功倍的效果。所以嵌入式工程师需要懂相关算法的原理,否则容易被算法工程师唬住(大家别笑,这种事情其实经常发生)。并行层:识别出代码中可以并行加速的部分,根据所用处理器的并行处理单元(NEON, DSP, GPU) ,使用vectorC/intrinsic C/CUDA/openCL编写并行加速代码,最大限度提高并行运算单元利用率。处理器层:如果编译器做得比较好,经过第二层,会得到优化效率很高的代码。但目前大部分编译器仍旧与人工节写的汇编有一定差距。所以针对热点代码,可以采用手写汇编的方式进行优化。但这一步,是优化到最后仍旧差一点点万不得已的办法,写汇编会耗费大量的时间精力,日后换处理器时还需要重写。处理器层除了汇编优化,还包括cache,DMA等memory相关的优化。memory的优化是经常被忽视的地方,通过提升内存的cache友好性是一件事半功倍的工作。
语言基础:C/C++操作系统:RTOS、Linux、Android硬件:10、12C、SPI、SDIO、USB、内外部中断、定时器编程技能:数据结构、IPC、进程、线程、内存、文件、socket项目相关:wifi ble 摄像头 激光雷达 zigbee等,这个部分根据自己学校资源与身边资源去选择。但有一个点非常重要,比如说你做wifi相关的项目,不是去实现wifi的连接功能即可,而是针对实际的产品场景,去输出有价值的实现方案。举个例子,做智能家居的产品,部分同学都是把模块买回来,源码UI改下,连接到别人服务器,然后整个链路跑通就完了。但是如果你做了一个断网以及网络延时情况下方案的解决办法或者模块远程升级的方案,这部分的实现思想比起你跑通整个链路,其实是更有谈资的。
大学可以学习学习以下方面:C和汇编语言混合编程、c++->python->JAVA、MAKEFILE、Builtroot(Linux移植)、cpu架构 ARM DSP/GPU、操作系统、通信协议(驱动)、ros系统、协议栈。
还有有关硬件基础的内容,由于大一当时看不懂,就未截取。现在看来还是非常全面的。
大学的很多竞赛都可以打打,提升自己的技术,比如:数学竞赛、算法竞赛、嵌入式相关的一些比赛和项目、数学建模...
如果想在将来创业或者职业规划最后走向管理岗,可以多多了解一些项目管理的知识。
另外看到两段比较有感触的话:
12、输出个人价值:把自己对于项目、对于职场、对于专业技能的思考,转化为文字、语音或视频输出到互联网,能给你带来意想不到的收获。
13、不要给自己设限。工作十年后,你可以成为技术专家、项目经理,也可以成为售前技术、方案架构、专利顾问,可以开淘宝店卖开发板教程、出书、做培训机构老师,也可以给自己上下游厂家卖技术方案、开外包公司、建立自己品牌,甚至在自已小区楼下开小卖铺,一个月一万多生活没问题的。
二.学习实践
1.课内课程
高等数学、离散数学、概率论、大学物理;
电路基础、数字电路、模拟电路、计算机通信与网络、信号与系统、数字信号处理;
计算机组织与体系结构、微机原理;
计算机导论与程序设计、程序设计、数据结构、操作系统、python、数据库系统
学习记录
python爬虫学习笔记https://blog.csdn.net/qq_32971095/article/details/129629331?spm=1001.2014.3001.5502位图图像文件缩放-西安电子科技大学大一程序基础设计课程设计作业
https://blog.csdn.net/qq_32971095/article/details/124532108?spm=1001.2014.3001.5502简单文件数据库-模拟图书馆管理系统-西安电子科技大学大一程序基础设计课程设计作业
https://blog.csdn.net/qq_32971095/article/details/124508883?spm=1001.2014.3001.5502UVa232解答
https://blog.csdn.net/qq_32971095/article/details/124302787?spm=1001.2014.3001.5502【免费】西安电子科技大学计算机大类大一下程序设计基础课程设计大作业资源
https://download.csdn.net/download/qq_32971095/88221772?spm=1001.2014.3001.5503【免费】西安电子科技大学计算机大类大一上机代码及部分答案资源
https://download.csdn.net/download/qq_32971095/88221707?spm=1001.2014.3001.5503【免费】西安电子科技大学计算机科学与技术专业大二数据结构上机代码资源
https://download.csdn.net/download/qq_32971095/88221767?spm=1001.2014.3001.5503边缘检测——Matlab实现计算机视觉<1>
https://blog.csdn.net/qq_32971095/article/details/133420554
2.51单片机
推荐学习(结合开发板):【普中官方】51单片机手把手教学视频
学习收获:
对单片机、模块有相应概念,会通过寄存器操作的方式使用单片机;实现简单功能
3.stm32
推荐学习(结合核心板和模块):STM32入门教程-2023持续更新中
学习收获:
掌握单片机的库函数开发方式;熟悉模块互联通信;单片机系统程序设计;可制作稍复杂控制系统
学习记录
电赛备战:基于stm32的多功能巡线避障小车_stm32巡线小车原理详解资源https://download.csdn.net/download/qq_32971095/88226743?spm=1001.2014.3001.5503基于stm32的智能自行车尾灯_自行车尾灯资源
https://download.csdn.net/download/qq_32971095/88221917【免费】stm32测试平台,包含oled显示和蓝牙通讯功能资源
https://download.csdn.net/download/qq_32971095/88221914
4.FPGA
推荐学习:
学习收获:
Zynq 的 PS 部分就像 stm32 一样,本质都是配置外设的寄存器,利用开发商或者其他提供的友好接口的库函数对寄存器进行配置开发。 stm32 使用 ARM公司提供的cortex-M3内核,通过下载器将机器码下载至存储器代码段。
此时再回头看 stm32 的 SoC 架构和总线系统相比 Zynq 的也容易看了许多,之后再看stm32 的数据手册也多了一些理解。还有之后的 stm32 的学习,可以使用 keil5 的调试功能,检查各个寄存器的值和执行的汇编语言,从而更深层面了解微机原理和 CPU 的运作。
学习记录
5.操作系统
学习记录
FreeRTOS学习笔记(一)https://blog.csdn.net/qq_32971095/article/details/130351060?spm=1001.2014.3001.5502Linux系统——OS学习笔记<1>
https://blog.csdn.net/qq_32971095/article/details/133484963
三.其他学习资料
推荐学习:
学习记录
项目管理概述https://blog.csdn.net/qq_32971095/article/details/132343604?spm=1001.2014.3001.5501
四.总结
总结来说就是借鉴,思考,改进,创新!
做好生涯规划,不要蹉跎岁月