内核对设备树的处理
内核对设备树的处理
Linux uses DT data for three major purposes:
1) platform identification,
2) runtime configuration, and
3) device population.
第 01 节_从源头分析_内核 head.S 对 dtb 的简单处理
bootloader 启动内核时,会设置 r0,r1,r2 三个寄存器,
r0 一般设置为 0;
r1 一般设置为 machine id (在使用设备树时该参数没有被使用);
r2 一般设置 ATAGS 或 DTB 的开始地址
bootloader 给内核传递的参数时有 2 种方法:
ATAGS 或 DTB
对于 ATAGS 传参方法, 可以参考我们的"毕业班视频-自己写 bootloader"
从 www.100ask.net 下载页面打开百度网盘,
100ask 分享的所有文件
006_u-boot_内核_根文件系统(新 1 期_2 期间的衔接)视频
第 002 课_从 0 写 bootloader_更深刻理解 bootloader
a. __lookup_processor_type : 使用汇编指令读取 CPU ID, 根据该 ID 找到对应的 proc_info_list 结构体(里面含有这类 CPU 的初始化函数、信息)
b. __vet_atags : 判断是否存在可用的 ATAGS 或 DTB
c. __create_page_tables : 创建页表, 即创建虚拟地址和物理地址的映射关系
d. __enable_mmu : 使能 MMU, 以后就要使用虚拟地址了
e. __mmap_switched : 上述函数里将会调用__mmap_switched
f. 把 bootloader 传入的 r2 参数, 保存到变量__atags_pointer 中
g. 调用 C 函数 start_kernel
head.S/head-common.S :
把 bootloader 传来的 r1 值, 赋给了 C 变量: _
评论