在嵌入式开发中,一般要制作内核映像和文件系统,同时须将可执行程序放置到文件系统中,并配置好相应的环境变。最后将内核和文件系统一起烧写到开发板上。
嵌入式系统的概念:
以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式系统与普通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机上设置的根文件系统。
当程序运行无误时,再将内核和文件系统烧写到目标开发板。