저는 kernel-5.10.24를 사용하는 임베디드 Linux 시스템을 개발 중입니다.
시스템에는 스토리지로 NAND FLASH 조각이 있으며 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 FLASH의 MTD 파티션을 어떻게 알 수 있나요?
나의 주요 목표는 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>;
};
};
};
장치 트리에서 파티션 정보를 구문 분석/가져오도록 커널에 요청할 수 있습니까? 그렇다면 어떻게 해야 할까요?
장치 트리에 하드코딩된 파티션 정보를 사용하여 커널 부팅 속도를 높일 수 있습니까?
답변1
장치 트리를 통해 NAND 파티션을 구문 분석하는 코드를 읽으면서 이것이 공급업체의 파티션 검색 및 구문 분석 코드에 있는 버그라는 것을 발견했습니다. 버그를 수정하면 예상대로 작동합니다.