Platform: RK3399
OS: Android 7.1
Kernel: 4.4
UBOOT-VERSION = 2014
工具
- Source Insight 阅读源码工具
- 通过编译时产生的 System.sym 查看
- 通过反汇编生成的可执行文件来查看
我们分析 u-boot 分为六个阶段:
一、Makefile 与 lds
从认识内存分配开始,链接脚本,*.lds。从Makefile与config.mk中的变量,得到对应的脚本的位置,根据链接脚本,画出内存分配图。
主要得到信息:
1、开始进入点命令(ENTRY),得到程序的开始点。
2、程序的内存开始地址
3、程序的内存分段信息与对齐方式、对应的功能。
二、汇编部分 start.S
uboot 的第一阶段,汇编部分,主要完成处理器的初始化(工作模式、缓存、配置协处理器)与内存的初始化流程,内存的初步分配(用于为c语言的实现提供对应的运行环境)
附:c语言的运行环境有哪些?答:一个堆栈用于实现函数调用,因为c语言的汇编过程实现函数都用相同的过程,必须设置一个堆栈。
1、处理器初始化,熟悉对应的处理器构架,知道对应的寄存器的作用:
设置主要寄存器的值,清除缓存,设置为平坦模式(直接从内存中读取指令),设置协处理器,配置相关的内存控制方式