bootloader移植

来源:互联网 发布:js定时弹出遮罩层 编辑:程序博客网 时间:2024/05/16 17:45

1.为什么进行移植

不同的cpu结构,板级设备的不同,即硬件资源和配置不同。

 

2.bootloader流程

一般为两个阶段:stage1和stage2,stage1运行在flash中,汇编语言;stage2运行在内存中,C语言程序。

 

stage1完成硬件初始化;(cpu内部寄存器,内存等)

为加载stage2准备RAM空间;

拷贝stage2的内容到RAM空间;

设置好堆栈;

跳转到stage2的C入口处。

 

stage2初始化本阶段使用到的硬件设备;(板级硬件串口、网卡)

将内核映像和根文件系统映像从flash映射到内存RAM中;

调用内核。

 

3.U-BOOT 目录结构

|-- board
|-- common
|-- cpu
|-- disk
|-- doc
|-- drivers
|-- dtt
|-- examples
|-- fs
|-- include
|-- lib_arm
|-- lib_generic
|-- lib_i386
|-- lib_m68k
|-- lib_microblaze
|-- lib_mips
|-- lib_nios
|-- lib_nios2
|-- lib_ppc
|-- net
|-- post
|-- rtc
`-- tools

board:和一些已有开发板有关的文件.  每一个开发板都以一个子目录出现在当前目录中,
比如说:SMDK2410,子目录中存放与开发板相关的配置文件.
common:实现  U-BOOT 命令行下支持的命令,每一条命令都对应一个文件。例如  bootm 命令对应就是cmd_bootm.c。
cpu:与特定  CPU  架构相关目录,每一款  U-BOOT 下支持的  CPU  在该目录下对应一个子目录,比如有子目录arm920t 等。
disk:对磁盘的支持。
doc:文档目录。U-BOOT 有非常完善的文档,推荐大家参考阅读。
drivers:U-BOOT支持的设备驱动程序都放在该目录,比如各种网卡、支持  CFI的  Flash、串口和  USB等。
fs:  支持的文件系统,U-BOOT 现在支持  cramfs、fat、fdos、jffs2  和  registerfs 。
include:U-BOOT  使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件 和对文件系统支持的 文件。该目录下  configs 目录有与开发板相关的配置头文件,如 smdk2410.h。该目录下的  asm 目录有与  CPU 体 系结构相关的头文件,asm  对应的是  asm-arm.
lib_xxxx:  与体系结构相关的库文件。如与  ARM 相关的库放在  lib_arm 中。
net:与网络协议栈相关的代码,BOOTP  协议、TFTP  协议、RARP  协议和  NFS 文件系统 的实现。
tools:生成  U-BOOT的工具,如:mkimage, crc  等等。

 

4.uboot的makefile编译

(1)执行每种board相关的配置

(2)编译生成uboot.bin文件

 

原创粉丝点击