在嵌入式开发中,一般要制作内核映像和文件系统,同时须将可执行程序放置到文件系统中,并配置好相应的环境变。最后将内核和文件系统一起烧写到开发板上。
嵌入式系统的概念:
以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式系统与普通PC机的对比:
软件上的对比:
名称 |
嵌入式系统 |
PC |
引导代码 |
Bootloader引导,针对不同电路进行移植 |
主板的BIOS引导,无须改动 |
操作系统 |
Linux、WinCE、VxWorks等,需要移植 |
Windows、Linux等,无需移植 |
驱动程序 |
每个设备驱动针对电路板进行开发或移植,一般不能直接下载使用 |
操作系统含有大多数驱动程序,或下载直接使用 |
开发环境 |
交叉编译 |
本机编译 |
仿真器 |
需要 |
不需要 |
协议栈 |
需要移植 |
操作系统或第三方提供 |
硬件上的对比:
设备名称 |
嵌入式系统 |
PC |
CPU |
嵌入式处理器(ARM,MIPS,Score+) |
CPU(Intel、AMD等) |
内存 |
SDRAM芯片 |
SDRAM或DDR内存条 |
存储设备 |
Flash芯片 |
硬盘 |
输入设备 |
触摸屏,按键 |
鼠标、键盘、麦克等 |
输出设备 |
LCD |
显示器 |
接口 |
MAX232等芯片 |
主板集成 |
其它设备 |
音频芯片、USB芯片、网卡芯片等 |
主板集成或外接卡 |
嵌入式系统的开机顺序:
Bootloader----kernel----rootfs
PC机的开机顺序:
BIOS----GRUB---kernel----rootfs
嵌入式系统的开发流程:
1、 开发目标硬件系统
选择微处理器、Flash等。
2、 建立交叉开发环境
安装交叉编译工具链(如arm-linux-gcc)、设置好环境变量、配置串口通信工具(如超级终端、SecureCRT等)、配置网络通信工具(如NFS)等
3、 开发Bootloader:
移植Bootloader,如vivi
4、 移植Linux内核
如Linux2.4.18内核的移植
5、 开发根文件系统
如cramfs文件系统的制作
6、 开发相关的硬件驱动程序
如LCD、网卡、GPIO等
7、 开发上层的应用程序
如网络、GUI开发
在第7步中,一般现在PC机上进行开发调试,然后通过交叉编译将代码编程成目标开发板可执行的程序。
接下来我们先不直接烧写内核和根文件系统,而是将内核和文件系统放在PC中,在uboot中分别设置TFTP和NFS,
这样uboot在运行时便可以通过TFTP将内核从PC机读入开发板ROM中,同时通过NFS访问PC机上设置的根文件系统。
当程序运行无误时,再将内核和文件系统烧写到目标开发板。