bootloader介绍
软件层次---
嵌入式系统从软件的角度看
1--引导加载程序
包括固化在固件(firmware)中的boot程序(可选)和bootloader两个部分。
2--linux内核
3--文件系统
包括系统命令和应用程序
bootloader--boot parameters---kernel-----root filesystem
嵌入式系统通常没有像bios那样的固件程序,因此整个系统的加载启动任务就完全由bootloader来完成。
bootloader定义-------在操作系统运行之前的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。
工作流程---bootloader的启动过程可分为单阶段,多阶段两种。
从固态存储设备上启动的bootloader大多采用两阶段,stage1完成初始化硬件,为stage2准备内存空间,并将stage2复制到内存中,设置堆栈,然后跳转到stage2.
stage2--初始化本阶段要使用的硬件设备-将内核映像和根文件系统映像从flash上读到ram中。--调用内核。
uboot编译----
uboot的Makefile从功能上可分为两个部分:
1--执行每种board相关配置
2--编译生成uboot.bin文件--分两步
1--选择要使用的board----make mini2440_config
2--编译生成u-boot.bin---make CROSS_COMPILE=arm-linux-
uboot命令-------
设置自动启动---
setenv bootcmd tftp 31000000 uImage \; bootm 31000000
saveenv
bootloader工作模式---
启动模式--bootloader从目标机上的某个固态存储设备上将操作系统自动加载到ram中运行,整个过程并没有用户的介入。
下载模式--bootloader通过串口或网络等通信手段从主机(host)下载文件,然后控制启动流程。
uboot移植步骤---
1--在顶层Makefile中为开发板添加新的配置选项。
mini2440_config : unconfig
@./mkconfig $(@:_config=) arm arm920t mini2440 NULL s3c24x0
arm920t 对应cpu/arm920t目录
mini2440 对应board/mini2440目录
NULL 开发者
s3c24x0 片上系统(soc)
2--在board目录中创建一个属于新开发板的目录,向目录中添加文件,并修改:
mkdir -p board/mini2440
cp -rf board/smdk2410/* board/mini2440
3--为开发板添加新的配置文件,先复制参考开发板的配置文件,再修改。
cp include/configs/smdk2410.h include/configs/mini2440.h
4--选择板级配置
make mini2440_config
5--编译U-Boot
执行 make CROSS_COMPILE=arm-linux-命令,编译成功可以得到U-Boot映像。