本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果。其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发板上运行的uboot的方法步骤。
说明:笔者使用的开发平台---RetHat linux系统,开发板---Friendly mini2440
在开始讲述系统移植的具体方法之前,先大致了解一下嵌入式系统的软件组成:
从上面这个图可以看出,嵌入式系统的软件组成主要包括bootloader、内核以及根文件系统。当然还有bootloader传给内核的参数列表以及没画出来的应用软件。其中bootloader在开发板一上电就会被硬件自动载入内存并最先获得CPU的使用权。bootloader完成一些列的初始化工作,包括加载剩余的bootloader到内存中、初始化CPU(设置CPU各个功能模块到一个合适的状态,比如工作模式、关闭看门狗、设置向量表、设置堆栈等等)、初始化板载硬件资源如内存、串口、网卡、usb等等。当bootloader顺利完成以上工作以后,它就会将内核加载到内存中,并且传递启动的参数给内核,最后启动内核。
内核的工作就相对复杂得多了,不过基本上都是初始化硬件以及内核使用到的各种列表,并且启动相应的进程完成相应的工作,这里就不详细介绍。日后再撰文详细介绍内核启动过程都完成了哪些工作。不过这里需要了解的是内核在启动中会挂载一个根文件系统,作为后续系统各种文件系统的挂载点。
uboot的编译事实上很简单,大致可以分为两步:
1、配置uboot:此步骤是为了能够配置出适合在开发板使用的代码以便进行编译,进入uboot顶层目录使用如下命令:
make mini2440_config
2、编译uboot:此步骤编译出uboot的二进制可执行文件,使用如下命令:
make ARCH=arm CROSS_COMPILE=arm-linux-
完成上面两个步骤之后可以在顶层目录中找到可执行代码:u-boot.bin,这就是烧写到开发板的二进制映像。