こんにちは、
私は 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) と同じデバイスに存在する必要があるのでしょうか?
ご説明をよろしくお願いいたします。
>実際、ATF ビルディングでは、 PBI と BL2 を 1 つのイメージにビルドする必要があります。
これが私が必要としていた答えです。ありがとう。
必要な例がありません。
実際、ATF ビルディングでは、 PBI と BL2 を 1 つのイメージにビルドする必要があります。
さらに、デフォルトでは、このソースは I2C EEPROM からの RCW の読み取りをサポートしていないため、ドライバ/nxp/dcfg/dcfg.c の PORSR1 を変更する必要があり、read_reg_porsr1() が必要です。
こんにちは、イーピンワンさん
PBI と BL2 が同じ I2C デバイス上にあるブート構成の例を提供していただきありがとうございます。PBI と BL2 が異なるデバイス上にある例はありますか?
ありがとうございました。
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以前:
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以前:
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は
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