第03节_对设备树中运行时配置信息的处理_P.zip

1,设备树文件里,运行时的信息有哪些?

在根节点里面有1个子节点 ,chosen {};里面设置了 bootargs,  内核启动时的,命令行参数
 

可以指定,根文件系统在哪里/, root = /dev/mtdblock4

第1个运行的应用程序是哪1个, init = /linuxrc 

内核的打印信息从哪个设备打印出来 。console = ttySAC0,115200

还有1个比较重要的信息,memory{};

不同的板子,内存的起始地址和大小可能不一样,需要在设备树里面,把内存的地址和大小 告诉内核

地址和大小放在memory节点里面的reg属性里。

地址和大小用多少个32Bit的地址来表示?是在根节点的#address-cells = <1 > ;和#size-cells =<1>;来指定

 

分析chosen节点, bootargs属性的值,存入全局变量,boot_command_line

在head.s里面它最终调用init /main.c里面的start_kernel,在start_kernel里,它会调用到setup_arch

在前面选择了 最合适的machine_desc之后,会调用到early_init_dt_scan_nodes();

里面有3个函数 ,做了3件事

第1件事:处理chosen节点,取出属性之后,存入boot_command_line这个字符数组里 char boot_command_line

第2件事:处理根节点中的 address size2个信息

第3件事 :就是设置内存,就是把根节点memory节点里,把reg里面的地址和大小 告诉内核。

boot_command_line 就是chosen节点里面的bootargs属性的值。

address size(也就是根节点里面的#address #cell)这个获取到的值 ,在分析第3件事的时候有用。

把地址和内存大小取出来后,会调用到memblock_add(base,size); 添加1个内存块。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值