我正在开发一个嵌入式Linux系统,它使用的是内核-5.10.24。
在系统中有一个NAND闪存作为存储,它有4个分区。当内核启动时,有4个分区,如下所示,
[ 0.499555] Creating 4 MTD partitions on "spi_nand":
[ 0.499564] 0x000000000000-0x000000080000 : "uboot"
[ 0.501099] 0x000000080000-0x000000900000 : "kernel"
[ 0.510556] 0x000000900000-0x000007000000 : "filesys"
[ 0.580413] 0x000007000000-0x000008000000 : "app"
内核如何知道NAND的MTD部分?
我发现在设备树中有NAND分区定义,但是布局与实际系统不同。
nandflash@0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* spi nand flash partition */
partition@0 {
label = "uboot";
reg = <0x0000000 0xE0000>;
/*read-only;*/
};
partition@E0000 {
label = "kernel";
reg = <0xE0000 0x900000>;
};
partition@900000 {
label = "filesys";
reg = <0x900000 0x8000000>;
};
};
};
是否可以要求内核从设备树中解析/获取分区?如果是的话,怎么做呢?
是否可以通过使用设备树中的硬编码分区信息来加速内核引导?
发布于 2023-05-09 08:29:45
通过阅读通过设备树解析NAND分区的代码,我发现在供应商的代码中进行分区探测和解析是一个缺陷。通过修复错误,它按预期的方式工作。
https://unix.stackexchange.com/questions/744208
复制相似问题