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パーティションを解析するコードを読み、これがベンダーのパーティション検索と解析コードのバグであることがわかりました。バグを修正すると、期待どおりに動作します。

おすすめ記事