bootloader移植

    技术2022-05-19  41

    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文件

     


    最新回复(0)