CAN LX2160 BootROM は、RCW + PBI を I²C からロードし、BL2 を QSPI からロードできますか? こんにちは、 私は LX2160A ブート フローを使用していますが、PBIブロック読み取り命令の制限に関して質問があります。リファレンスマニュアルには、次の注記があります。 「SRC の値は cfg_rcw_src と同じか 0x00 である必要があります。」 私の理解では、これは PBIブロック読み取りが、 cfg_rcw_src (PBI を提供したデバイス) で指定されたデバイスと同じデバイス、または RCW イメージ自体 (src=0x00) からのみデータを取得できることを意味します。 シナリオ例: RCW+PBIをI²C EEPROMに保存する 同時にBL2(TF-A)をQSPI NORフラッシュに保存する 質問: BootROM が I²C から RCW をフェッチし、次に PBI ブロック読み取りを介して QSPI から BL2 をフェッチすることは可能ですか? それとも、BL2 は RCW (このCASEは I²C EEPROM) と同じデバイスに存在する必要があるのでしょうか? ご説明をよろしくお願いいたします。 Re: Can LX2160 BootROM load RCW+PBI from I²C but BL2 from QSPI? >実際、ATF ビルディングでは、 PBI と BL2 を 1 つのイメージにビルドする必要があります。 これが私が必要としていた答えです。ありがとう。 Re: Can LX2160 BootROM load RCW+PBI from I²C but BL2 from QSPI? 必要な例がありません。
実際、ATF ビルディングでは、 PBI と BL2 を 1 つのイメージにビルドする必要があります。
さらに、デフォルトでは、このソースは I2C EEPROM からの RCW の読み取りをサポートしていないため、ドライバ/nxp/dcfg/dcfg.c の PORSR1 を変更する必要があり、read_reg_porsr1() が必要です。 Re: Can LX2160 BootROM load RCW+PBI from I²C but BL2 from QSPI? こんにちは、イーピンワンさん PBI と BL2 が同じ I2C デバイス上にあるブート構成の例を提供していただきありがとうございます。PBI と BL2 が異なるデバイス上にある例はありますか? ありがとうございました。 Re: Can LX2160 BootROM load RCW+PBI from I²C but BL2 from QSPI? LS1028ARDB に関する次の手順を参照してください。
I2C は Flexspi に比べて低いため、スイッチ設定を変更して数秒待ちます。 更新された手順は次のとおりです。 1. rcw_1500_gpu600.rcwファイルの末尾に以下のコマンドを追加します。 .pbi 0x01e00400,0x1800d000を書き込む ブロックコピー 0xa,0x400,0x1800d000,0x9435 。終わり CCSR書き込みコマンド: DCFG にあるブート ロケーション ポインター下位アドレス (BOOTLOCPTRL) レジスタでブート ロケーション ポインターを 0x1800d000 に設定します。 ブロックコピーコマンド: ブロックコピー 0x0a,0x400,0x00100000,0x9400 ソース: I2C EEPROM = 0xa 送信元アドレス: 0x400 宛先アドレス: OCRAM (0x100000) ブロックサイズ: BL2バイナリのサイズ(バイト単位) 2. それぞれの場所にファイルとプログラムを生成します。 3. RCW+PBIバイナリ - 0x0のI2C EEPROM(rcw_1500_gpu600.bin) nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108/components/firmware/rcw/ls1028ardb$ メイク python3 ../rcw.py -i R_SQPP_0x85bb/rcw_1500_gpu600.rcw -o R_SQPP_0x85bb/rcw_1500_gpu600.bin (flexbuildバージョン2108以前: /パッケージ/firmware/rcw/ls1028ardb/ R_SQPP_0x85bb/) 4. BL2バイナリ - 0x400のI2C EEPROM nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108/components/firmware/atf$ エクスポート ARCH=arm64 nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108/components/firmware/atf$ エクスポート CROSS_COMPILE=aarch64-Linux-gnu- nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108/components/firmware/atf$ ディストリビューションを作成 リアルクリーン nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108/components/firmware/atf$ PLAT=ls1028ardb BOOT_MODE=flexspi_nor pbl RCW=/ホーム/nxf65210/data/work/ls_series/flexbuild_lsdk2108/components/firmware/rcw/ls1028ardb/R_SQPP_0x85bb/rcw_1500_gpu600.bin を実行します。 bl2.bin は /flexbuild_lsdk2108/components/firmware/atf/build/ls1028ardb/release/bl2.bin にあります (flexbuildバージョン2108以前: /パッケージ/firmware/atf/build/ls1028ardb/release) 5. FIPバイナリ - 0x100000のNORフラッシュ nxf65210@lsv03611:~/data/work/ls_series/flexbuild_lsdk2108$ flex-builder -c atf -m ls1028ardb -b xspi (flexbuild_lsdk2004_update_290520/build/firmware/atf/ls1028ardb/fip_uboot.bin) (flexbuildバージョン2108より前の場合: fip.binは /build/firmware/atf/ls1028ardb/にあります) LS1028ARDBのU-BootでI2Cを使用してEEPROMをプログラミングする => i2cプローブ 有効なチップアドレス: 00 50 52 53 57 66 67 77 7C => i2c 書き込み 0xa0000000 0x50 0.2 0x11c => i2c 読み取り 0x50 0.2 0x114 0xc0000000 => i2c 書き込み 0xa0000000 0x50 0x400.2
View full article