构建嵌入式 linux 平台下的用户应用
1.引言
在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux
系统从软件的角度看通常可以分为四个层次,如图 1-1 所示:
(1)引导程序。包括固化在固件(rmware)中的 boot 代码(可选),和 Boot Loader
两大部分。
(2)Linux 内核。针对于嵌入式板子的定制内核以及内核的启动参数。
(3)文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram
disk 来作为根文件系统
(4)用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能
还会包括一个嵌入式图形用户界面。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI
。
下面就在 linux-2.4.x 内核上如何正确组织、连接这几个部分来自动运行用户应用程
序进行分析。
2.linux 的启动过程
在系统复位后首先远行的程序就是引导程序(Boot loader)。 引导程序可以放在专
用的 ROM 中,也可以和内核影像、文件系统影像共用闪存芯片或固态硬盘如下图所示。
引导程序首先负责初始化硬件设备、建立内存空间的映 射图,从而将系统的软硬件环境带
到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Uboot 是
Sourceforge 上的一个开源的引导 程序,提供了对
PowerPC(MPC5xx、MPC8xx、MPC82x、MPC7xx、MP74xx、4xx)、ARM(ARM7、
ARM9、 StrongArm、Xsacle)、MIPS、x86 等处理器的支持。下载站点
是 http://sourceforge.net/projects/u -boot
U-boot 在 ARM9 系统启动流程:
1、跳转到 reset 代码(将 CPU 设置成 SVC,ARM 工作模式,SDRAM 初始化)
2、将 U-boot 代码拷贝到 RAM 空间。可以调用 C 函数