大四毕业了,签了一份嵌入式开发的工作,现在准备入门了,搜集一些要学习的内容。
嵌入式开发学习路线
51单片机,arm,stm32在单片机上
在单片机上编程c语言和在嵌入式系统写c语言,有很大不同
gcc又与我们普通的c语言有所不同。
难的学不会是因为简单的没学好!
c语言,必须精通,主攻结构体,链表,指针,数组,与或,位操作
arm汇编,认识,可以自己做一些简单的修改,没有必要精通
linux + 好看的衣服(界面) = android
知识在我头脑中变为解决问题的能力
数电、模电、c语言
Linux与单片机的入门必看
linux与单片机
成为一名嵌入式Linux开发工程师需要学习哪些知识? - 知乎 (zhihu.com)
(4 封私信 / 19 条消息) 怎样学会单片机? - 知乎 (zhihu.com)
单片机的程序中的函数,基本上都是操作寄存器, 单片机项目严重依赖于硬件,换一个芯片后就得重写一套代码 。
单片机的基础就是看电路图、看芯片手册,然后在这些函数里读写寄存器
用linux是不可以直接访问寄存器的,需要借助驱动程序,将参数传给驱动程序,它会帮我们访问寄存器。
在学习的过程中可以“不求甚解”,抱着疑问慢慢学下去,这些问题自然就解决了,不要打破砂锅问到底。
对于驱动程序:作为初学者,懂几个简单的驱动程序,有利于工作交流;理解中断、进程、线程的概念,无论是对驱动开发、应用程序开发,都是很有好处的。所以对于初学者,建议前期只学习这几个驱动:LED、按键、中断。
linux系统编程、windows系统编程,核心就是学习这些系统给的接口函数,然后用C语言调用这些函数,以完成我们写的程序顺利在linux上运行。
C语言(是吃饭的家伙,占了工作的80%)
数组,结构体,指针,C标准库
数据结构
数组,链表,队列,树 、图
驱动编写
给你一个芯片,你要很快地把它驱动起来,比如说一个音频编解码芯片,用IIS协议把它驱动起来,我得去写这个驱动;给我一个外部的额ADC芯片,通过SPI我要去写驱动。
协议
IIS协议、SPI协议、model bus协议、can协议,高级一点的USB协议,8080总线
完成以上这些就可以开始裸机开发了
操作系统
uclinux、FreeTROS、首先操作系统有两种:一种是用MMU(Memory
Managenent Unit ,即存储管理单元)的,另一种是不用MMU的。
用MMU的是Windows、 MacOS、 Linux 、Android;
不用MMU的是FreeRTOS 、VxWorks 、 ucLinux、uc/OS.
其次CPU也有有两种 :带MMU的和不带MMU的。
带MMU的有 Cortex-A、ARM9 、ARM11系列。不带MMU的有 Cortex-M系列
GUI
一些开源的GUI,一些常见的比如说,emwin、STemwin、LVGL、TouchGFX。
网络协议
uIP、LWIP、
linux和电路基础
用电路基础要看懂硬件工程师的原理图,
认知
在公司,你对行业和业务了解的越深刻,你就有越多的话语权