友善之臂---U-boot
1.嵌入式Linux系统
一个嵌入式系统从软件角度来看分为三个层次:
1)引导加载程序:
包括固话在固件(firmware)中的boot程序(可选)和BootLoader两大部分
2)Linux内核Kernel:
特定于嵌入式平台的定制内核
3)根文件系统:
包括系统命令和应用程序
2.嵌入式Linux系统中的典型分区结构
一个同时装有BootLoader、内核启动参数、内核映像和根文件系统映像的固态设备(比如Nand flash)的典型分配结构图:
3.建立交叉编译环境
X86 gcc
ARM arm-linux-gcc
4.u-boot介绍
1)U-boot,全称Universal Boot Loader,即通用BootLoader,是遵循GPL条款的开放代码项目。
2)U-boot是德国DENX小组开发的用于多种嵌入式SOC(MIPS、x86、ARM、XScale)的BootLoader程序
3)“通用”有两层含义:
a)可以引导多种操作系统
支持如下操作系统:Linux、NetBSD、VxWorks等
b)支持多种框架的CPU
支持如下框架的CPU:PowerPC、MIPS、x86、ARM、XScale等
5.获取U-boot源码:
ftp://ftp.denx.de/pub/u-boot/
6.U-boot的两种模式
1)下载模式
下载u-boot.bin、uImage、rootfs
2)引导模式
引导内核启动
7.U-boot初体验
1)编译
make distclean
make smdk2440a_config
make
U-boot.bin:二进制可执行文件,它就是可以直接少烧入Nand Flash、NOR Flash文件
8.启动过程
PC ----> BIOS ------> 可引导操作系统(windows) -----> 识别C、D盘 -----> 运行应用程序QQ、MSN
嵌入式系统 ----> BootLoader ------> Linux Kernel ----->挂载根文件系统 ----->应用程序
BootLoader最终目的:
启动内核:
a)从flash读出内核放到SDRAM
b)启动内核
U-boot要实现的功能:
1)读flash +(为了开发方便:写Flash、网卡、CPU)
2)初始化SDRAM、初始化时钟、初始化串口、
3)启动内核