一个嵌入式系统(本文所说的嵌入式系统包括ARM,DSP,单片机等,不包括FPGA、CPLD等)的开发至少涉及到硬件和软件两个部分。
-
硬件之数字电路
首先硬件部分,一款嵌入式电路板上,绝大部分的数字电路,处理的也是数字信号,所以要有数字电路的基础,而电路理论又是数字电路的基础,所以电路理论和数字电路就成了学习嵌入式的基础,也是以后开发必备的技术。但是电路和数字电路都很简单,不需要刻意去学习,更不需要多深入。只需要认识高低电平即可。关于这部分硬件的设计几乎没有,举个例子,CPU的外围电路,晶振,复位,扩展的eeprom等等,都不需要我们设计,直接根据芯片手册上的典型应用连接即可,变化也很少。但是如果要让这些芯片工作起来,开发者需要读懂用户手册,重点看操作芯片的流程图和时序图。关于datasheet的阅读,我会在下一节详细介绍。
-
硬件之模拟电路
有了数字电路的基础,就可以设计一个微处理器的最小系统和驱动一些简单外设实现基本功能了,但这些还停留在初学者阶段,如果要成为高手,独立完成硬件的设计,模拟电子技术一定要好。一个嵌入式电路板需要采集外部的信号,做滤波和放大等处理,这就需要设计模拟电路。模拟电路离不开运放,电容……比数字电路复杂几万倍。不过现在也可以直接买回来组装,厂家也会提供典型应用:比如传感器,运放,AD单元。不过这写还是不够的,更多的场合需要自己设计。关于这部分内容,作者水平有限,无法做更多分析。
-
软件之C语言
C语言功底一定要好,结构体,指针等需要熟练使用。嵌入式说白了就是用C语言操作硬件,C语言的水平决定了程序的效率。无论如何,C语言一定要学好。且不推荐汇编语言。
-
软件之算法
算法是程序的灵魂,用C语言来实现。不同个功能是由算法来决定的。最常见的如按键扫描,数码港显示等。也包括时序图的实现。这些并不属于基本知识,对不同才场合需要不同的算法。