Linux内核6.6 内存管理(14)代码导读——内存初始化

总:kernel启动

https://elixir.bootlin.com/linux/v6.6/source/init/main.c#L870

(按照数字大小是代码顺序,2.1是指2代表的函数里面,我想提到的第一个函数)

1.打印Kernel信息

https://elixir.bootlin.com/linux/v6.11/source/init/main.c#L924

其中linux_banner如下定义如下:

https://elixir.bootlin.com/linux/v6.6/source/init/version-timestamp.c#L28

实际打印信息如下

2.setup_arch

https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L278

2.1 其中设置了cmdline参数

2.2 设备树初始化 setup_machine_fdt

https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L169

2.2.1 dt memory和代码的匹配

setup_machine_fdt

early_init_dt_scan

early_init_dt_scan_nodes

early_init_dt_scan_memory

此时我们可以看到它就是按照设备树的memory关键字进行匹配,比如

不过这里只是指定了起始地址,但是并未指定memory大小

下面还有根据设备树添加具体

2.2.2 dt compatible/model 和 代码 匹配

https://elixir.bootlin.com/linux/v6.11/source/arch/arm64/kernel/setup.c#L197

同样我们看一下设备树:

#C++##嵌入式##嵌入式软开##牛客创作赏金赛#
全部评论

相关推荐

评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务