BootLoader简介
1 BootLoader的概念
提供最初的初始化代码,并检测和初始化单板,这样就可以执行其他的程序。它的主要工作就是引导操作系统,在定位、解压、加载操作系统到内存空间后,将相应的控制器移交给操作系统。当操作系统获取控制权后,嵌入式下的bootloader就不复存在了。
2 U-Boot
全称 Universal Boot Loader,是一款流行的功能强大的开源BootLoader项目。
U-boot优点
- 开放源码
- 支持多种嵌入式操作系统内核,如linux、NetBSD、VxWorks等
- 支持多种处理器系列,如PowerPC、ARM、x86、MIPS
- 有较高的可靠性和稳定性
- 有高度的灵活的功能设置,适合U-Boot调试、操作系统的不同引导要求、产品发布等
- 有丰富的设备驱动源码
- 有较为丰富的开发调试文档与强大的网络技术支持。
U-boot的目录结构
大致分为3类:
1、与处理器体系结构或开发板硬件直接相关
- arch:CPU结构相关代码,比如ARM、x86等
- board:目标板相关文件,主要包括SDRAM、PLASH驱动
- include:U-Boot头文件;尤其是configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件。
2、一些通用的函数或者驱动程序
- common: 独立于处理器利息结构的通用代码,如内存大小探测于故障检测。
- driver:通用设备驱动,如CFI FLASH 驱动。
- fs:包含文件系统代码。
- lib:与处理器体系无关的库文件,如MD5,CRC 等算法实现。
- net:与网络功能相关的文件目录,实现了一个4层网络协议栈,如 bootp、nfs、tftp、arp等。
- post:上电自检文件目录,这个目录里可以增加一些特定硬件的自检程序。
3、U-boot的应用程序、工具、测试程序或技术描述文档。
- api:API接口,为其他应用提供的与机器类型、系统结构无关的API。
- doc:U-Boot的说明文档,学习U-Boot的第一首资料。
- examples:可在U-Boot下运行的示例程序,如hello_world.c
- test:测试脚本和代码。
- tools:用于创建U-Boot S-RECORD和BIN镜像文件工具。
U-boot编译
- 首先是编译器的问题,如果使用GNU交叉编译工具链,要确保环境变量的设置生效。
- 为特定的开发板建立配置文件,输入make xxx_config
- 最后输入make命令即可得到U-boot的景象文件。其中的“u-boot.bin”是二进制文件,“u-boot”是elf格式文件。