start.S解析1

1、不简单的头文件包含

(1)#include<config.h>。config.h是在include目录下的,这个文件不是源码中本身存在的文件,而是配置过程中自动生成的文件。(详见mkconfig脚本)。这个文件的内容其实包含了一个头文件:#include  <configs/x210_sd.h>

(2)经过分析后,发现start.S中包含的第一个头文件就是:inclinclude/configs/x210_sd.h,这个文件是整个uboot移植时的配置文件。这个文件是整个uboot移植时的配置文件。这里面是好多宏。因此这个头文件包含将include/configs/x210_sd.h文件和start.S文件关联了起来。因此之后在分析start.S文件时,主要要考虑的就是x210_sd.h文件。

(3)#include<version.h>中包含了include/version_autogenerated.h,这个头文件就是配置过程中自动生成的。里面就一行内容:#define U_BOOT_VERSION的值是一个字符串,字符串中的版本号信息来自Makefile中的配置值。这个宏在程序中会被调用,在uboot启动过程中会串口打印出uboot的版本号,那个版本号信息就是从这来的。

(4)#include<asm/proc/domain.h>。asm目录不是uboot中的原生目录,uboot中本来是没有这个目录的,asm目录是配置时创建的一个符号链接指向asm-arm,proc目录指向proc-armv。所以原生目录是#include<asm-arm/proc-armv/domain.h>

(5)从这可以看出配置时创建的符号链接的作用,如果没有这些符号链接,则编译时通不过,因为找不到头文件。

思考:为什么start.S不直接包含asm-arm/proc-armv/domain.h,而要用asm/proc/domain.h。这样的设计主要是为了移植性。因为如果直接包含,则start.S文件和CPU架构(和硬件)有关了。可移植性差了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值