第01节_从源头分析_内核head.S对dtb的简单处理_P.zip

内核的第1个文件 head.s
1, 每1个单板 都对应 1个 machine_desc, 里面有对应的初始化函数

                                                                  有nr =xxxx ,与uboot传过来的进行对比

使用设备树的话,这个参数 r 1 就不需要设置了

R2 :一般设置ATAGS或DTB的开始地址

 

2: 分析head.s

1,查找处理器类型 ,使用某汇编指令,读出CPU ID。看看你的内核是否支持这款CPU,不支持的话 就出错

如果支持的话,以后会调用这款CPU所对应的初始化函数

2.判断一下ATAGS和DTB是否有效 ,DTB里面有1个头部,头部里面有个MAGIC NUMBER,它去判断1下,R2所指的地方里面

,有没有这个MAGIC NUMBER。有的话 ,就说明你确实传入了一个有效的DTB文件

ATAGS 也是一样的。ATAGS也有头部信息

3:创建页表,内核是运行与虚拟地址

4:启动MMU 。启用虚拟地址后,它最终会跳到__mmap_switched

5: 把R2的地址写到一个C变量里面 _atags_pointer
head.s head-common.s 最终把bootloader传来的R2值付给了 C变量_atags_pointer //DTB首地址

head.s head-common.s 最终把bootloader传来的R1值付给了 C变量_machine_arch_type

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值