写点什么

内核对设备树的处理

作者:贾献华
  • 2022 年 7 月 31 日
  • 本文字数:567 字

    阅读完需:约 2 分钟

内核对设备树的处理

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 变量: _

用户头像

贾献华

关注

及时当勉励 岁月不待人 2018.06.04 加入

https://2022.iosdevlog.com

评论

发布
暂无评论
内核对设备树的处理_贾献华_InfoQ写作社区