做嵌入式已经有很多年了。做了很多的系统,苦没有少吃,回头看看过去感觉很多都是在做重复的工作,很是无奈。跟让我伤心的是很多东西做完就忘记了,没有很好地进行归纳总结,做完了就完了,过一段时间做类似的工作又累的跟狗似的,从头来过。我想不能这样了。必须要改变这种现实。所以我要对仅有的一些东西进行总结以告慰我已经逝去的青春。这篇文章以后可能经常会改动,改动说明我又进步了。哈哈。闲言少叙,现在开始。
首先是嵌入式处理器的核心的是什么呢?
我认为是处理器架构和指令集。就用ARM进行说明吧。譬如arm9的处理器架构就是很多的处理器模式,很多的寄存器和协处理器CP(这个东西要注意,很重要)。指令集就更好说了,从v4--V7指令集,经过各有不同大的,但是基本套路是一样的,譬如数据处理指令,寻址指令等等。大家只要知道了一个处理器是属于哪个版本的就基本掌握了它的变成方法。
可能你要说一个处理器就这两个主要么?其实还有一些譬如存储器控制机制,中断机制和内存管理机制。ram9和a8处理器的内存管理机机制就差很多。他们进本是这对不同的系统规模设计的,arm9一个bank是128MB,估计他永远也用不了ddr.呵呵。中断机制说明了系统处理各种异常的过程。内存管理就不用多少说了。上系统的话(应该说是上大系统譬如linux)的话是必须要用的。不然系统就玩不转了。,可能你要问不是还有很多的外设的么?咋不说说,这个还真不好说,因为各家的处理器寄存器和地址都不一样,从系统的角度来看,只要系统能玩转了,各种外设就是系统外部对一些寄存器的操作而已。
编译器。了解了一款处理器以后就可以给处理器编程了。我们给处理器编程要解决两个问题一个是如何将我们编程的高级语言转化成处理器能识别的机器语言,一个就是如何控制代码在什么地方执行。第一个问题我们就要有编译器。它的工作分为预编译,编译,汇编,链接四个过程。第二个问题技术就要有个控制编译器的东西了,在Linux中就是makefile文件了。当然makefile文件主要是控制文件包含问题,文件的链接问题是由链接文件来完成的。不同的编译器就本就是这些过程只是这些实现方法不太一样罢了。
BootLoader篇:可以给系统编程以后首先给系统要编写的就是BootLoader程序了,为什么呢?因为这个程序是我们做其他工作很方便的一个助手。
操作系统篇:如果想很规范地给系统进行编程,就要上一个系统这样使用系统统一的系统调用就可以规范软件层的东西了。呵呵