Linux에서 MTD 파티션 레이아웃을 감지/파싱하는 방법은 무엇입니까?

Linux에서 MTD 파티션 레이아웃을 감지/파싱하는 방법은 무엇입니까?

저는 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 파티션을 구문 분석하는 코드를 읽으면서 이것이 공급업체의 파티션 검색 및 구문 분석 코드에 있는 버그라는 것을 발견했습니다. 버그를 수정하면 예상대로 작동합니다.

관련 정보