![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
嵌入式系统原理及应用开发教程
嵌入式系统是以嵌入式处理器为核心部件的,用于执行独立功能的专用计算机系统。嵌入式系统原理及应用开发教程:
一、嵌入式系统原理
1、ARM 微处理器支持两种指令集 ARM 和 Thumb 。
2、ARM 处理器正常的程序执行状态是在 用户 模式下。
3、ARM 处理器中 R13 寄存器 用作程序计数器。 R15 寄 存 器 用作堆栈指针。
4、当异常发生时,寄存器 SPSR 存 、用于保存 CPSR 的当前值,从异常复 退出时则可由它来恢复 CPSR 。
5、Flash 芯片在写入操作时需要先进行 擦除 操作。
二、开发流程
1、建立开发环境
安装操作系统与交叉编译器,操作系统一般使用RedhatLinux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,armn-1inux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器。
2、配置开发主机的参数
配置MNICOM参数,MNICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。一般情况下的参数为波特率115200 Baud/s,数据位8位,停止位为1,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。配置网络主要是配置NFS网络文件系统,需要关闭防火墙以简化嵌入式网络调试环境设置过程。
3、建立引导装载程序BOOTLOADER
从网络上下载一些公开源代码的BOOTL0ADER,如U-BOOT、BLOB、VIVI、LILO、ARM-Boot、RED-Boot等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,这样就需要编写开发板上FLASH的烧写程序,也可以在网上下载相应的烧写程序。果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。
4、下载已经移植好的Linux操作系统内核
如MCLiunx、ARM_Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。
5、建立根文件系统
下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。
由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包:/etc/init.drc.S、/etc/profile、/etc/.profile及自动挂装文件系统的配置文件/etc/fstab等,具体情况会随系统不同而不同。
根文件系统在嵌入式系统中-般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。
6、建立应用程序的FLASH磁盘分区
一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动。有的系统使用一个线性FLASHNOR型)512KB~32MB,有的系统使用非线性FLASHNAND型)8MB~512MB,有的系统两种同时使用,需要根据应用规划FLASH的分区方案。
7、开发应用程序
根据需要开发应用程序,把开发成功的应用程序可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于uC/OS-II的方式。