裸奔即不安装任何操作系统,直接使用汇编或C语言操纵开发板底层硬件。绝大部分的单片机由于片上资源相对较少,所以只好裸奔啦。现在流行的ARM系列CPU虽然性能和资源比较充足,但是通过裸奔我们可以更加深入地了解硬件的工作原理,为以后编写驱动或开发高性能应用打好基础。
我手上有一块mini2440的开发板跟一个OpenJTAG仿真器。
mini2440开发板使用S3c2440的CPU,为ARM920T内核。CPU自带4KB的内部存储器,可以存储少量代码和数据。板上提供64MB(2x32MB)SDRAM内存以及128MB(2x64MB)的Nand Flash。为了进行IIC总线的实验,开发板还提供了一个2MB的NOR Flash。开发板有Nand跟Nor两种启动模式,不同的启动模式下存储分配是不一样的。如图所示:
可以看到当系统从NAND启动时,0x0000 0000处默认为4KB的内部SRAM起始地址,0x0800 0000开始则为NAND Flash。而从Nor启动时,0x0000 0000为NOR FLASH的起始地址,CPU内部的4KB SRAM起始地址变为0x4000 0000。无论使用何种方式启动,SDRAM的起始地址都是0x3000 0000。当然这些地址的分配并不是固定的,每款开发板都有自己的存储器片选分配模式。
开发板必须有一个Jtag仿真器来进行初始Bootloader的烧写。现在流行的OpenJTAG价格非常便宜而且功能也相当不弱,OpenJTAG既可以作为仿真器进行CPU仿真调试及程序烧写,又可以进行USB接口与串口转换工作。对于使用笔记本进行嵌入式学习或开发的朋友们来说,OpenJTAG显然是不二之选。
我们看看怎么建立一个嵌入式开发的裸奔环境吧。主要从硬件与软件两个方面进行说明:
一、硬件环境的建立
首先将开发板与电源适配器连接好,并将开发板上的USB Slave接口与电脑的USB相连接。然后使用串口线将OpenJTAG与开发板连接起来,将OpenJtag的USB口与电脑的USB接口相连接。最后不要忘记OpenJTAG侧面还有一个非常重要的JTAG接口,将其接连到开发板的JTAG接口上。