嵌入式系统移植【6】——uboot源码结构

uboot源码获取

uboot 源码下载

        http://www.denx.de/wiki/U-Boot/

        历代版本:ftp://ftp.denx.de/pub/u-boot/

uboot 版本命名

        前期:uboot-1.2.3

        现在:uboot-2008.01

uboot 版本选择

        支持对应的硬件平台

        我们要选择相对成熟的版本(网上资料更多)

        下载版本不要图最新,新的uboot可能对老的芯片支持不太好。

uboot相比于其他BootLoadr的特点

n 代码结构清晰
n 支持丰富的处理器与开发板,易于移植
n 支持丰富的用户命令
n 支持丰富的网络协议
n 支持丰富的文件系统
n 支持丰富的设备驱动
n 更新活跃、用户较多、资料丰富
n 开放源代码
n 较高的稳定性
n 不具有通用性(不同的处理器、开发板 uboot 不可通用

uboot源码结构

平台相关代码

        即与CPU架构或开发板硬件相关的源码,硬件的改动对应的代码也需要进行修改

        arch:与CPU架构相关的源代码

        board:与开发板相关的源代码,包含各种官方评估板对应的源码

平台无关代码

  

    api:  应用接口

    common:  uboot命令源码

    disk:  对磁盘设备的支持

    drivers:  设备驱动源码

    fs:  对文件系统file system的支持 

    include:  头文件

    lib: 

    net:  网络协议的支持

    post:  上电自检程序

    ... ...

配置文件、帮助文档、示例程序、工具等:

   

    README:  说明文档

    doc:  帮助文档 (更细)

    Makefile:  编译管理

    CREDITS:  开发者

    COPYING:  版权

    examples:  提供参考的示例程序

    tools:  工具

    ... ...

uboot配置

1. 指定当前使用的硬件平台

        make <board_name>_config

        注1<board_name>为当前使用的开发板的名字

        注2:执行该命令的前提是uboot源码支持该开发板

        注3:该命令必须在uboot源码的顶层目录下执行

2. 指定编译 uboot 源码使用的编译器
Makefile中配置编译器

        在uboot源码顶层目录下的Makefile中指定(CROSS_COMPILE变量)

uboot编译

make生成的目标文件

1. 编译 uboot

        make

        注1:该命令必须在uboot源码的顶层目录下执行

        注2:该命令执行后在uboot源码顶层目录下生成u-boot.bin

2. 清除编译过程中生成的中间文件

        make clean

        make distclean

        注1:该命令必须在uboot源码的顶层目录下执行

生成开发板可以执行的uboot文件所需的命令:

./build.sh  //生成u-boot-origen.bin
sudo dd if=/dev/zero of=zero.bin count=1  //制作一个512Byte的空镜像
cat zero.bin u-boot-origen.bin > win-u-boot-origen.bin  //把空镜像追加在u-boot-origen.bin后面生成可以在开发板上运行的win-u-boot-origen.bin文件

更多移植细节请见我搬运的资源《华清FS4412开发板uboot源码移植》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
所有资料来源网上,与朋友分享 u-boot-1.1.6之cpu/arm920t/start.s分析 2 u-boot中.lds连接脚本文件的分析 12 分享一篇我总结的uboot学习笔记(转) 15 U-BOOT内存布局及启动过程浅析 22 u-boot中的命令实现 25 U-BOOT环境变量实现 28 1.相关文件 28 2.数据结构 28 3.ENV 的初始化 30 3.1env_init 30 3.2 env_relocate 30 3.3*env_relocate_spec 31 4. ENV 的保存 31 U-Boot环境变量 32 u-boot代码链接的问题 35 ldr和adr在使用标号表达式作为操作数的区别 40 start_armboot浅析 42 1.全局数据结构的初始化 42 2.调用通用初始化函数 43 3.初始化具体设备 44 4.初始化环境变量 44 5.进入主循环 44 u-boot编译过程 44 mkconfig文件的分析 47 从NAND闪存中启动U-BOOT的设计 50 引言 50 NAND闪存工作原理 51 从NAND闪存启动U-BOOT的设计思路 51 具体设计 51 支持NAND闪存的启动程序设计 51 支持U-BOOT命令设计 52 结语 53 参考文献 53 U-boot给kernel传参数和kernel读取参数—struct tag (以及补充) 53 1 、u-boot 给kernel 传RAM 参数 54 2 、Kernel 读取U-boot 传递的相关参数 56 3 、关于U-boot 中的bd 和gd 59 U-BOOT源码分析及移植 60 一、u-boot工程的总体结构: 61 1、源代码组织 61 2.makefile简要分析 61 3、u-boot的通用目录是怎么做到与平台无关的? 63 4、smkd2410其余重要的文件 : 63 二、u-boot的流程、主要的数据结构、内存分配 64 1、u-boot的启动流程: 64 2、u-boot主要的数据结构 66 3、u-boot重定位后的内存分布: 68 三、u-boot的重要细节 。 68 关于U-boot中命令相关的编程 : 73 四、U-boot在ST2410的移植,基于NOR FLASH和NAND FLASH启动。 76 1、从smdk2410到ST2410: 76 2、移植过程: 76 3、移植要考虑的问题: 77 4、SST39VF1601: 77 5、我实现的flash.c主要部分: 78 6、增加从Nand 启动的代码 : 82 7、添加网络命令。 87

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值