start.S解析1
2016-04-21 17:44
645 查看
《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
先来个引子,又因为引子比较短,就直接放下面了,#include <config.h>
#include <version.h>
#if defined(CONFIG_ENABLE_MMU)
#include <asm/proc/domain.h>
#endif
#include<config.h>,
config.h在include目录下,
这个文件是在配置中自动生成的(详见mkconfig脚本文件)的文件,
config.h又包含一个头文件,#include<configs/x210_sd.h>,
start.S包含的“第一个”头文件是config.h,
因为再次包含的缘故,其实包含第一个头文件是include/configs/x210_sd,
x210_sd这个文件是整个uboot移植时的配置文件,里面有好多宏,
宏中为移植进行了很多判断,
突然一看x210_sd,我想大多数人以为我们用的是sd呢,
其实就是因为uboot配置所致,至少在这里不是因为这,
#include<version.h>,本身没什么东西,
这个头文件里面包含了一个include/version_autogenerated.h,
这个头文件就是配置过程中自动生成,里面只包含了一个关于版本号宏,
内容是#define U_BOOT_VERSION “U-Boot 1.3.4",
这个版本信息来自于Makefile中的配置值,还记得之前不久对这个版本的分析吗?
这个版本号的值是有好几个变量结合起来的,不是直接就这样一个变量就定了的,
这个版本信息在启动uboot打印的那串信息中,可以体现出来,
#if defined(CONFIG_ENABLE_MMU)
#include <asm/proc/domain.h>
#endif
这个宏怎么看呢?
在IS中点击这句代码,会提示它的出处,
if判断为真后,
将会包含中间那个头文件<asm/proc/domain.h>,
这个目录不是uboot中的原生目录,
是配置的时候创建的一个符号链接,
实际指向的是asm-arm(详见mkconfig那节),
即include/asm-arm/proc/domain.h,
干嘛要通过符号链接来绕一圈,好急人~
其实这是为了可移植性,要说的是,联系越紧密,可移植性就越差,
比如我们要移植到mips架构,则start.S源代码中所有的头文件就全部要修改,
用了符号链接之后,则start.S中的不用修改,
只需要在配置时修改就可以了,
还记得之前配置中有部分代码是关于不同架构的配置设置了吗?
学习地址:www.zhulaoshi.org
先来个引子,又因为引子比较短,就直接放下面了,#include <config.h>
#include <version.h>
#if defined(CONFIG_ENABLE_MMU)
#include <asm/proc/domain.h>
#endif
#include<config.h>,
config.h在include目录下,
这个文件是在配置中自动生成的(详见mkconfig脚本文件)的文件,
config.h又包含一个头文件,#include<configs/x210_sd.h>,
start.S包含的“第一个”头文件是config.h,
因为再次包含的缘故,其实包含第一个头文件是include/configs/x210_sd,
x210_sd这个文件是整个uboot移植时的配置文件,里面有好多宏,
宏中为移植进行了很多判断,
突然一看x210_sd,我想大多数人以为我们用的是sd呢,
其实就是因为uboot配置所致,至少在这里不是因为这,
#include<version.h>,本身没什么东西,
这个头文件里面包含了一个include/version_autogenerated.h,
这个头文件就是配置过程中自动生成,里面只包含了一个关于版本号宏,
内容是#define U_BOOT_VERSION “U-Boot 1.3.4",
这个版本信息来自于Makefile中的配置值,还记得之前不久对这个版本的分析吗?
这个版本号的值是有好几个变量结合起来的,不是直接就这样一个变量就定了的,
这个版本信息在启动uboot打印的那串信息中,可以体现出来,
#if defined(CONFIG_ENABLE_MMU)
#include <asm/proc/domain.h>
#endif
这个宏怎么看呢?
在IS中点击这句代码,会提示它的出处,
if判断为真后,
将会包含中间那个头文件<asm/proc/domain.h>,
这个目录不是uboot中的原生目录,
是配置的时候创建的一个符号链接,
实际指向的是asm-arm(详见mkconfig那节),
即include/asm-arm/proc/domain.h,
干嘛要通过符号链接来绕一圈,好急人~
其实这是为了可移植性,要说的是,联系越紧密,可移植性就越差,
比如我们要移植到mips架构,则start.S源代码中所有的头文件就全部要修改,
用了符号链接之后,则start.S中的不用修改,
只需要在配置时修改就可以了,
还记得之前配置中有部分代码是关于不同架构的配置设置了吗?
相关文章推荐
- 我的 ARM+Linux 学习路线
- 开发学习记录之看门狗驱动
- 时钟+温度+遥控设置,综合时钟例子
- Linux下运行openwebos- -(转)
- Linux下运行openwebos- -(转)
- BusyBox 简化嵌入式 Linux 系统
- EGL 学习
- 嵌入式开发设计方法变化的背景
- 嵌入式人才的发展方向
- 汇编调用c函数为什么要设置栈
- 三角函数的实现
- 嵌入式桌面操作系统使用与制作攻略
- 嵌入式系统烧写uboot/bootloader/kernel的一般方法
- 甲骨文收购Sleepycat 丰富嵌入式产品线
- 嵌入式Linux操作系统学习规划
- 基于嵌入式多芯片模组的微机保护平台
- 嵌入式系统中常用文件系统的制作总结
- 嵌入式C语言基础教程一
- 汇总Dotfuscator自定义规则中的元素选择
- 3. 类型限定符