1.关于嵌入式入门知识
嵌入式是一门综合性较强的领域, 涉及的内容也是比较多,一般分为嵌入式软件与嵌入式硬件,软件部分主要包含计算机语言、数据结构、操作系统原理、硬件接口编程、Linux 内核驱动编程等。
对于程序员方向来说,一般分为专业领域、操作系统领域、业务领域,具体如下:
(1)专业领域: 主要是包含语音、图像处理、人工智能,一般对理论知识要求较高,尤其是数学,适合做学术研究。
(2)操作系统领域: 以操作系统为基础,将上层应用与底层硬件衔接起来,对知识要求比较全面,侧重于整个体系,同时需要通操作系统内核的任务调度、内存管理、设备管理、更多研究的是操作系统内核的原理,一般要求对操作系统原理熟悉,特别是Linux 以及部分实时操作系统。
(3)业务领域:这里是指上层业务逻辑实现,一般是侧重于应用层 app 的开发,更加强调业务实现过程,也是目前大部分程序员所做的事情,这里强调对业务逻辑本身熟悉。
2.嵌入式应用层入门
嵌入式应用层首先要有较好的语言基础,主要是以c/c++ 语言为基础,其次是需要有很好的数据结构基础,主要包括顺序表、链表、队列与栈、二叉树、平衡树,常见的算法也需要懂,包括 查找算法与排序算法。
除了上述入门基础之外,还需要学习系统编程、网络编程,特别是网络编程非常重要,包含了网络基础部分,与操作系统网络接口的使用。
3.嵌入式底层入门
对于嵌入式底层入门的话,就相对要复杂一些,首先具备基本的模拟电子技术与数字电子技术基础,熟悉相应的硬件工作原理, 包含 gpio、uart、iic、spi 等,当然到了后面还需要学习高级的知识包括 usb、camera 、audio 等 ,同时也需要熟悉 操作系统原理,要学习实时与非实时操作系统,实时操作系统比较典型的为 rt-thread 、freertos,非实时的则需要重点学习Linux 内核,包括Linux 内核字符设备驱动框架、Linux 设备模型 、gpio 子系统、input 子系统、framebuffer 子系统等。
在学习Linux 内核时,同时也需要关注 u-boot、Linux 内核移植方面的内容,能够针对不同平台进行 u-boot 、Linux 内核移植。
写在最后,嵌入式学习是一个长期的学习过程,在学习的过程需要不断去实践,要多做项目,才能不断提高自身的水平。