2394416_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2394416_ja-JP

2394416_ja-JP

i.MX 8M Plus LPDDR4 EVK - eMMC boot0/boot1 の有効化

ボード:i.MX 8M Plus LPDDR4 EVK(MIMX8ML8DVNLZAA年)、IMX8MPEVKHUG rev 0
HAB:融合オープン(SRKは意図的に燃焼せず、まだ評価中)

私はRAUCベースのA/B更新システム向けにブートローダーと更新の冗長性を実装しており、eMMCのハードウェアboot0/boot1パーティション(BOOT_PARTITION_ENABLE)を多くのi.MX8M設計のように使いたいと考えています。つまり、新しいブートローダーを非アクティブなブートパーティションに書き込み、どちらがアクティブかを反転させ、新たにアクティブなブートローダーが故障した場合はROMがもう一方にフォールバックする形です。私は特に、このためにBOOT_CFG/efuseを焼却することを避けたいのです。

EVK上で、poky/oe-core mmc-utilsレシピからビルドしたmmc-utilsを使用して観察した結果は以下のとおりです。

- mmc extcsd read /dev/mmcblk2 は PARTITION_CONFIG を報告し、BOOT_PARTITION_ENABLE は既に boot0 (値 0x08) に設定されています。
- boot0 (/dev/mmcblk2boot0) には有効なイメージ (オフセット 0 に正しい IVT タグ) が含まれていますが、現在デプロイされているブートローダーと一致しません。
- boot1 (/dev/mmcblk2boot1) は完全に空です (すべてゼロ)。
- バイト単位の正確な比較により、ボードは実際には標準の32 KiBオフセットで生のeMMCユーザーエリアから起動していることが確認できます(コンテンツは現在デプロイしているimx-bootと完全に一致します)。boot0から起動しているわけではありません。boot0が有効であることを示すPARTITION_CONFIGもあります。

このボードでは、EXT_CSDのBOOT_PARTITION_ENABLEはROMの実際のブートソースに影響を与えていないようです。IMX8MPEVKHUG 2.2節によると、EVKのSW4スイッチは粗いブートデバイスクラス(eMMC、SD、QSPI、NAND、ヒューズ、USBシリアルダウンロード)のみを選択し、eMMCブートパーティションサブモードのスイッチ位置は存在しません。

質問:

1. LPDDR4 EVK上で「eMMC boot0/boot1ハードウェアパーティションからのROMブート」を特に選択する方法は、BT_FUSE_SEL=1設定やBOOT_CFGエフューズの焼却なしに選択できるサポート方法はありますか?例えば、ジャンパー、抵抗オプション、またはrev 0に記載されていない代替のSW4/SW1101の組み合わせなどIMX8MPEVKHUG?それとも、このボードのPCBにハードストラップされていて、状態に関係なく常にeMMCユーザーエリアから起動するようにEXT_CSD?

2. BOOT_CFG efuseがeMMCブートパーティションモードを有効にする唯一の方法である場合、これを制御するBOOT_CFGヒューズバンクは、HABに使用されるSRKハッシュヒューズとは独立していますか?ヒューズを介してeMMCブートパーティションの冗長性を有効にすると、同時にHAB(SRK書き込み)を終了する必要が生じるのか、それともこれらは別々の決定事項なのかを理解したい。

3. i.MX 8M PlusとeMMCを使ったカスタムボード設計(EVKではありません)の場合、eMMCのboot0/boot1冗長性を最初の起動時から利用可能にする推奨方法は何でしょうか?つまり、BOOT_CFG GPIOのストラップやPCB設計において、後でヒューズのコミットメントを必要としないよう、初日の選択肢として何が真であるべきか?

また、eMMCブートパーティション選択のBOOT_CFGビット定義(IMX8MPEVKHUGで既に扱われているSW4デバイスクラスビット以外)を扱ったリファレンスマニュアルのセクションへの指し印も教えていただけると助かります。

ご回答をお待ちしています。

Re: i.MX 8M Plus LPDDR4 EVK - enabling eMMC boot0/boot1

i.Mx8 UMに関する参考までに、第5章の第5.8.2.2.1章「高レベルeMMCブートフロー」
SCU ROMは4つのeMMCブートシナリオをサポートします:
1.このシナリオでは、「eMMC高速ブート」ヒューズが切れています。一次および二次
イメージコンテナセットは両方ともブートパーティション内にあり、BOOT_PARTITION_ENABLE = 1 または 2 です。
2. このシナリオでは、「eMMC 高速ブート」ヒューズが切れています。小学校と中学校
イメージコンテナセットはどちらもユーザーエリアにあり、BOOT_PARTITION_ENABLE=7です。
3.このシナリオでは、「eMMC高速ブート」ヒューズは切れません。起動モードはノーマルです
Bootとプライマリおよびセカンダリイメージコンテナセットはどちらもユーザーエリアにあります。
4. この場合、「eMMCファストブート」ヒューズは 切れていません。起動モードは通常です
ブート、プライマリおよびセカンダリイメージコンテナセットは両方ともブート内にあります
パーティション、および BOOT_PARTITION_ENABLE = 1 または 2。

Re: i.MX 8M Plus LPDDR4 EVK - enabling eMMC boot0/boot1

アドバイスありがとうございます。ただ、第5.8.2.2.1章で別のチップファミリが説明されていると思います。「SCU ROM」eMMCブートフローは、専用のシステムコントローラユニット(Cortex-M4ブートサブシステム)を持つi.MX8QuadMax/QuadXPlus/DualXPlus専用です。i.MX8M PlusにはSCUがなく、起動ROMはCortex-A53上で直接動作するため、その章の BOOT_PARTITION_ENABLE=1/2/7 シナリオはここでは当てはまりません。

i.MX8M Plusの場合、冗長性はi.MX8M Plusリファレンスマニュアル(図6-1)のプライマリ/セカンダリイメージ機構で処理されているようです。ROMはBT_FUSE_SEL/BOOT_CFGで選択したデバイスから起動し、故障時には同じブートデバイス上でIMG_CNTN_SET1_OFFSETヒューズオフセットのセカンダリイメージにフォールバックします。 別々のboot0/boot1パーティションではありません。これはLPDDR4 EVKで見ているものと一致します。BOOT_PARTITION_ENABLE=1はEXT_CSDに設定されていますが、ROMはそれを無視し、生のユーザーエリアのオフセットから起動します。

そこで、私の質問はi.MX8M Plusに限定されました:

1. LPDDR4のEVK(ジャンパー、抵抗、または非公式のSW1101/SW4位置)でeMMC boot0/boot1をブートソースとして選択する方法はありますか?それとも純粋にストラップやBT_FUSE_SELの判断BOOT_CFGに過ぎませんか?
2. BOOT_CFGヒューズバンクはHABのSRKハッシュヒューズとは独立しているのか、それともBOOT_CFGヒューズ経由のコミットもHABのクロージングを強制するのか?
3.カスタムボード設計の場合、レイアウト時にハードウェアのブートパーティション冗長性を後でヒューズに縛り付けずに維持するために、どのようなBOOT_CFGものが必要ですか?

もし私が第5.8.2.2.1章のどの部分に適用されるのかを誤解しているようでしたら、ご指摘いただければ幸いです。

Re: i.MX 8M Plus LPDDR4 EVK - enabling eMMC boot0/boot1

Boot CFGとSRKハッシュ間のヒューズビットは分離可能です。SRKハッシュが書き込まれた場合、ブートイメージのハッシュ値と書き込まれたヒューズビットの値を比較するという追加のブート手順が必要になるようです。

Re: i.MX 8M Plus LPDDR4 EVK - enabling eMMC boot0/boot1

情報ありがとうございます。

8M Mini LPDDR4 EVKBボードハードウェアユーザーガイドIMX8MMEVKBHUG i.MX、ブートモードやブートデバイス構成の章などに役立つ情報はありますか?

Re: i.MX 8M Plus LPDDR4 EVK - enabling eMMC boot0/boot1

以下を参照してください。

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/iMX-secondary-boot-collection/ta-p/19169...

i.MX8MP eMMC セカンダリブート.zip

これらのデモや記事では、より高度なセカンダリブートのシナリオを取り上げていますが、ブートローダーをブート1またはブート2に書き込む方法や、ブート1またはブート2を有効にする方法といった基本事項も含まれています。これらはまさにあなたが必要としている情報でしょう。


i.MX8MP_emmc_boot_part_secondary_boot.uuu

FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} ${part} 0

ブート1
FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0
ブート2
FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 2 0


i.MX8MP_emmc_boot_part_secondary_boot.uuu

uuu_version 1.2.39

SDPS: boot -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v6.6.3-1.0.0
SDPV: delay 1000
SDPV: write -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v6.6.3-1.0.0 -skipspl
SDPV: jump

#FB: ucmd setenv emmc_dev 1 
FB: ucmd setenv part 1 
FB: ucmd setenv boot_offset 0x0 
FB: ucmd setenv fastboot_dev mmc 
FB: ucmd setenv mmcdev ${emmc_dev}  
FB: ucmd if test ${part} != 7; then mmc dev ${emmc_dev} ${part}; else mmc dev ${emmc_dev}; fi
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v5.15.71-2.2.0
#FB: download -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v6.6.3-1.0.0 
FB: ucmd echo    ${fastboot_bytes}
FB: ucmd setexpr blks ${fastboot_bytes} / 0x200; setexpr blks ${blks} + 1
FB: ucmd mmc write ${loadaddr} ${boot_offset} ${blks}
# Secondary boot 
FB: ucmd setenv part 2 
FB: ucmd if test ${part} != 7; then mmc dev ${emmc_dev} ${part}; else mmc dev ${emmc_dev}; fi
#FB: download -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v5.15.71-2.2.0
FB: download -f imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk-LF_v6.6.3-1.0.0 
FB: ucmd echo    ${fastboot_bytes}
FB: ucmd setexpr blks ${fastboot_bytes} / 0x200; setexpr blks ${blks} + 1
FB: ucmd mmc write ${loadaddr} ${boot_offset} ${blks}

FB: ucmd setenv part 1
FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi;
FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} ${part} 0
FB: done



タグ(1)
評価なし
バージョン履歴
最終更新日:
3 週間前
更新者: