ImageState( slot=0, version='1.0.0', hash=HashBytes('00ECFDFD...'), bootable=True, pending=False, confirmed=True, active=True, permanent=False )
ImageState( slot=1, version='1.0.0', hash=HashBytes('2FD1F2FC...'), bootable=True, pending=True, confirmed=False, active=False, permanent=True )
リモートリセットコマンドを実行すると、ボードは正常にシステム再起動をトリガーしますが、MCUbootはセクターシャッフリングや遅延処理を実行しません。スロット 0 のまったく同じ HashBytes 00ECFDFD... に即座に起動します。
Flashレイアウト設定(.overlay)
&flexspi {
ステータス = "正常";
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
is25wp064: is25wp064@0 {
compatible = "nxp,imx-flexspi-nor";
サイズ = <67108864>;
reg = <0>;
spi-max-frequency = <133000000>;
ステータス = "正常";
jedec-id = [9d 70 17];
消去ブロックサイズ = <4096>;
書き込みブロックサイズ = <1>;
パーティション {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
/* ステップ 1: ベースボード dts から競合するすべてのストックパーティションを削除します */
/delete-node/ partition@0;
/delete-node/ partition@10000;
/delete-node/ partition@310000;
/delete-node/ partition@610000;
/delete-node/ partition@630000;
ブートパーティション: パーティション@0 {
ラベル = "mcuboot";
reg = <0x00000000 DT_SIZE_K(64)>;
};
/* slot0 のサイズを 3.5MB から 3.4MB (0x366000) に縮小しました */
slot0_partition: partition@10000 {
ラベル = "image-0";
reg = <0x00010000 0x366000>; /* 3.5MB */
};
slot1_partition: partition@390000 {
ラベル = "画像-1";
reg = <0x00376000 0x366000>; /* 3.5MB */
};
スクラッチパーティション: パーティション@710000 {
ラベル = "image-scratch";
reg = <0x00710000 DT_SIZE_K(128)>;
};
ストレージパーティション: パーティション@730000 {
ラベル = "ストレージ";
reg = <0x00730000 DT_SIZE_K(832)>;
};
};
};
};
app/prj.conf
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_XIP=y
CONFIG_MCUBOOT_BOOTLOADER_MODE_SWAP_WITHOUT_SCRATCH=y
CONFIG_USE_DT_CODE_PARTITION=y
app/sysbuild/mcuboot.conf
CONFIG_XIP=y
CONFIG_BOOT_SWAP_USING_MOVE=y
CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
CONFIG_BOOT_SIGNATURE_KEY_FILE="bootloader/mcuboot/root-rsa-2048.pem"
CONFIG_BOOT_VALIDATE_SLOT0=y
# Zephyr 3.5.0 用の RAM 機能分離フラグの試行
CONFIG_FLEXSPI_CONFIG_IN_RAM=y
こんにちは、 @Deepa-khatri2588 さん。
NXP MIMXRTシリーズにご関心をお寄せいただきありがとうございます!
KConfigファイルとDTSファイルを確認しましたが、いくつか問題があるようです。例えば、`CONFIG_FLEXSPI_CONFIG_IN_RAM` と `CONFIG_CODE_FLEXSPI_RAMFUNC` は Zephyr 3.5.0 には存在しません。
KConfigの設定については、こちらの公式ドキュメントをご確認ください。
https://docs.zephyrproject.org/3.5.0/kconfig.html
以下のKConfig設定に注意することをお勧めします。
CONFIG_CODE_FLEXSPI=y
CONFIG_XIP=y
CONFIG_FLASH_MCUX_FLEXSPI_XIP=y
CONFIG_FLASH_MCUX_FLEXSPI_XIP_MEM_ITCM=y
CONFIG_FLASH_MCUX_FLEXSPI_NOR_WRITE_BUFFER=y
CONFIG_FLASH_LOG_LEVEL_OFF=y
CONFIG_MEMC_LOG_LEVEL_OFF=y
CONFIG_MEMC=y
DTSでは、ノードIDとオフセットアドレスが一致しないという問題があり、これも確認する必要があるかもしれません。
slot1_partition: partition@390000 {
ラベル = "画像-1";
reg = < 0x00376000 0x366000>;
};
よろしくお願いします、
ギャビン