uboot移植一uboot架构分析

时间:2022-04-05 16:34:58

开发环境:

  1 .开发板mini2440

  2. u-boot-2010.12

参考i资料:https://blog.csdn.net/androidbbc/article/details/50961163

      http://www.cnblogs.com/kele-dad/p/8969174.html

一、下载u-boot- 2010.12,并且解压

二、分析u-boor-2010.12

uboot移植一uboot架构分析

api:      存放uboot提供的接口函数

config.mk:   根据不同开发板定制的代码,代码也不少

drivers:    驱动,很丰富,每种类型的设备驱动占用一个子目录

MAINTAINERS:

net:      网络相关代码,小型的协议栈

snapshot.commit

arch      与体系结构相关的代码,uboot的重头戏

COPYING

examples    示例程序

MAKEALL

onenand_ipl

tools      辅助程序,用于编译和检查uboot目标文件
board       根据不同开发板定制的代码,代码也不少

CREDITS

fs       文件系统,支持嵌入式开发板常见的文件系统

Makefile

post      加电自检程序

boards.cfg

disk      磁盘分区相关代码

include    头文件,已通用的头文件为主

mkconfig

README
common     通用的代码,涵盖各个方面,已命令行处理为主

doc      文档,一堆README开头的文件

lib        通用库文件

nand_spl    NAND存储器相关代码

rules.mk

> 移植的主要相关的目录为arch、board目录

arm目录

uboot移植一uboot架构分析

cpu arm920t目录:

uboot移植一uboot架构分析

vi u-boot.lds  

uboot移植一uboot架构分析

可以看到第一个执行的程序是start.s

>cd board/samsung/smdk2410/   进入和单板相关的目录

uboot移植一uboot架构分析

lowlevel_init.s :和内存控制初始化相关的函数

smdk2410.c是和单板初始化相关的函数

 

三、分析u-boot编译流程

一般我们编译u-boot的流程为:

1. 配置 make xxx_config

2. 编译 make

> make xxx_config 分析

当这个命令执行时,它会根据 kconfig 及 xx_defconfig 来生成 .config 文件

  • Makefiles 有 5 个部分:
    • Makefile:顶层 Makefile,提供针对各种目标的接口,一般和实现无关。当我们要针对某个目标进行分析时,作为起点,总是尝试在此文件中找到对应的目标定义,然后沿着该定义深入挖掘。
    • .config:uboot 配置文件,如果是内核,就是内核的配置文件,在配置 uboot时候生成,所有的 Makefile 文件(包括顶层目录及各级子目录)都是根据 .config 来决定使用哪些文件。
    • arch/$(ARCH)/Makefile:平台相关 Makefile,提供针对不同架构的目标,变量和规则定义。文件位置比较固定
    • scripts/Makefile.*:Makefile 共用的通用规则、脚本等
    • kbuild Makefiles:各级子目录下的  Makefile,相对简单,被上一层 Makefile 调用来编译当前目录下的文件。

  顶层 Makefiles 读取从uboot 配置程序中生成的 .config 文件