boot 1.3.4源码分析详细教程(2)

board:存放文件夹的是具体开发板相关文件夹,有的目录是公司名,里面存放具体开发板的文件夹。有的直接开发板文件夹。其中存放的是板级相关文件。

common:通用文件,存放的是所有CPU共用的文件,大部分是u-boot命令支持文件。

像bootm, go,tftpboot ,help 等命令就是在这些文件中实现。

CPU:存放芯片构架相关的文件,一个文件夹代表一个类型的CPU核心。其中的文件夹存放整个核心通用的代码文件以及具体的SOC文件夹。

boot 1.3.4源码分析详细教程

Disk              :硬件相关的支持代码。不用修改。

Doc        :u-boot的使用说明书。不用修改。

Drivers  :u-boot设备驱动代码。

Fs          :文件系统代码,不用修改。

include:u-boot头文件,包含有公用头文件,设备驱动相关头文件,以及分体系构架相关的头文件。

boot 1.3.4源码分析详细教程

其中有一个文件夹是configs,比较重要,存放开发板配置头文件,每个开发板对应一个头文件,头文件的名字就是开发板的名字。

boot 1.3.4源码分析详细教程

lib_generic:通用库文件代码,整个u-boot共用文件。不用修改。

lib*:    其他以lib开头的是具体体系架构相关的库文件,整个个芯片构架共用的文件。不用修改。

nand_spl:nand 驱动。

net:网络协议代码,一般不用修改。

post:一些开发板上电检测代码,一般不用修改。

tool:编译u-boot需要的一些工具代码,不用修改。

README:文本文档,u-boot的编译,配置说明。

Makefile: 管理u-boot的Makefile文件—移植u-boot时候要在这个文件 添加一个自己的开发板配置选项。

boot 1.3.4源码分析详细教程

3. u-boot 的启动过程

3.1  u-boot 启动阶段

分两部分:

1)汇编部分—启动代码;入口: cpu/构架文件夹/start.S

2) C语言代码部分。u-boot复杂功能都是这个阶段实现。

入口:lib_*/board.c 中void start_armboot (void)函数。

任何一个开发板的u-boot都是从cpu/构架文件夹/start.S 文件开始执行。

start.S:启动代码,负责异常向量表定义,初始化CPU时钟,存储器配置,堆栈配置,复制代码到内存中,跳到到C代码阶段。

3.2 start.S分析

以xyd2440为例子分析

入口文件:start.S (cpu\arm920t)  。

工作内容:

1.        异常向量表定义

2.        关看门狗

3.        关中断

4.        配置时钟

5.        配置存储器控制器

6.        配置栈

7.        复制代码到内存

8.        清BSS段

9.        跳转到C代码执行。

3.2.1 补充:GNU 汇编知识

1)可以使用C的方法包含C语言头文件,例如:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13672.html