2416597_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2416597_ja-JP

2416597_ja-JP

LX2160ARDB: SDカードブート

こんにちは、


「DIMMスロットを備えた標準LX2160ARDBの場合、DDRレジスタは、TF-A BL2ステージ(ddr_init.c)によって処理される、インストールされているDIMMからSPDを読み取ることによって自動的に構成されます。」U-Bootではありません。LX2160ARDBでカスタムDIMMを使用する場合のみ、ATFソースを変更する必要があります。


私たちはRDBに付属のDIMMを使用しています。


SDカードからのブートのために、以下のコマンドを使用してbl2_sd.pblとfip.binというファイルを生成しました。

bl2_sd.pbl

$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-linux-gnu-

$ make PLAT=lx2160ardb bl2 BOOT_MODE=sd pbl RCW=../rcw/lx2160ardb_rev2/XGGFF_PP_HHHH_RR_19_5_2/rcw_2200_750_3200_19_5_2.bin



fip.bin

$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-linux-gnu-

$ make PLAT=lx2160ardb fip BOOT_MODE=sd BL33=u-boot/u-boot.bin


デフォルトの ddr_init.c を atf フォルダに生成し、ブート用に bl2_sd.pbl ファイルを SD カードの blk 8 に、fip.bin ファイルを blk 800 にロードしました。


ログは以下のとおりです。

=> qixis_reset sd
=> 注意: BL2: v2.4(リリース):LSDK-21.08-0-g340b20bcb
お知らせ:BL2:ビルド日時:2026年8月5日 11:29:23
注意:UDIMM 18ADF2G72AZ-3G2E1
注意:DDR PMUハードウェアバージョン-0x1210
エラー: ファームウェア33の読み込みに失敗しました。
エラー:ファームウェアの読み込みに失敗しました(エラーコード -2)
エラー: DDR PHYレジスタの計算に失敗しました。
PHYハンドシェイクタイムアウト、ddr_dsr2 = 0
エラー:トレーニングエラーを検出:0x100
エラー:エラー:タイムアウトD_INIT待っています。
エラー: DDRレジスタへの書き込みに失敗しました
エラー: DDRCプログラミングエラー
エラー: DDR初期化に失敗しました。
注意: platform_def.h で定義されている DRAM0 のサイズが間違っています。
エラー:BL2:画像ID 3(-2)の読み込みに失敗しました
認証失敗

DDR初期化のためにDDR関連のファームウェアファイルをロードしたり、bl2ソースに何らかの変更を加えたりする必要があるでしょうか?


どうぞご指導ください。

よろしくお願い申し上げます。


評価ボードRe: LX2160ARDB: SD Card Booting

fip_ddr_all.bin:8つのDDR4 PHYトレーニングバイナリ全てを含みます:UDIMM 1D/2D IMEM+DMEMおよびRDIMM 1D/2D IMEM+DMEM

fip_ddr.bin:UDIMM+RDIMMのフルコレクションではなく、より限定された/選択されたDDR PHYファームウェアセットを備えたDDR FIP。具体的な選択は、LSDK/TF-Aのビルド構成によって異なります。
 
カスタムボードの場合、DDR PHYファームウェアを再利用できますが、そのボードのメモリとレイアウトに合わせてDDRを設定する必要があります。
Re: LX2160ARDB: SD Card Booting

こんにちは、イーピンさん

ご指導ありがとうございます。DDR fipイメージをSDカードの0x4000番地に展開し、DDRの初期化が正常に完了しました。

LSDKには、 distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ddr-phy/の下にfip_ddr_binとfip_ddr_all.binというデフォルトイメージがあります。これらをロードしてDDR初期化が行われることを確認しました。

両方の画像の違いと、なぜそれが必要なのか説明していただけますか?

カスタムボードを使う場合、DDRの初期化に同じイメージを使うことはできますか?

Re: LX2160ARDB: SD Card Booting

DDR PHYファームウェアイメージをSDカードに展開してください。

まず、以下の手順に従ってPHYファームウェアイメージを生成してください。

$ cd atf/tools/fiptool

$ git clone https://github.com/NXP/ddr-phy-binary.git

$ cd ddr-phy-binary/
$ git checkout LSDK-21.08 -b LSDK-21.08
$ cd ..

$ ./fiptoolcreate --ddr-immem-udimm-1d ddr-phy-binary/lx2160a/ddr4_pmu_train_imem.bin --ddr-immem-udimm-2d ddr-phy-binary/lx2160a/ddr4_2d_pmu_train_imem.bin --ddr-dmmem-udimm-1d ddr-phy-binary/lx2160a/ddr4_pmu_train_dmem.bin --ddr-dmmem-udimm-2d ddr-phy-binary/lx2160a/ddr4_2d_pmu_train_dmem.bin --ddr-immem-rdimm-1d ddr-phy-binary/lx2160a/ddr4_rdimm_pmu_train_imem.bin --ddr-immem-rdimm-2d ddr-phy-binary/lx2160a/ddr4_rdimm2d_pmu_train_imem.bin --ddr-dmmem-rdimm-1d ddr-phy-binary/lx2160a/ddr4_rdimm_pmu_train_dmem.bin --ddr-dmmem-rdimm-2d ddr-phy-binary/lx2160a/ddr4_rdimm2d_pmu_train_dmem.bin fip_ddr_all.bin

DDR fipイメージであるfip_ddr_all.binはatf/tools/fiptoolに生成されます。

fip_ddr_all.bin を SD カードの u-boot ディレクトリに配置してください。

=> tftp 82000000 fip_ddr_all.bin
=> mmc write 82000000 0x04000

ここで、blk_cntは、ファイルサイズに応じて書き込む必要があるSDカード内のブロック数を指します。例えば、
TFTPサーバーからファイルをロードし、転送されたバイト数が1077157(106fa5 hex)の場合、blk_cntが計算されます。
1077157/512 = 2103 (837 16進数)

この例では、mmc write コマンドは次のようになります。=> mmc write 82000000 0x04000 837

Re: LX2160ARDB: SD Card Booting

こんにちは、イーピンさん


説明ありがとうございます。

LSDK 21.08をインストールしましたが、atf、rcw、u-boot、ddr-phyフォルダは既に存在しますが、ソースコードが利用できません。そこで、すべてのソースをgitでクローンしました。

SDカードの完全なブートのために、以下のファイルをデプロイしました。

1. bl2_sd.pbl       

2. fip.bin                                       - 0x800

3.fip_ddr_all.bin                      - 0x4000

4. mc_lx2160a_10.40.0.itb         - 0x5000

5. dpc-usxgmii.dtb- 0x7000

6. fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin-  0x8000

SDカード(64GB)に以下のようにパーティションを作成しました。

1. /dev/mmcblk0p1 - セクター 409600 からセクター 42352640

2. /dev/mmcblk0p2 - セクター 42352640 からセクター 121534463

そして、u-boot の bootargs コマンドを使用して、rootfs "fsl-image-networking-full-lx2160ardb-rev2-20260310091147.rootfs.tar.gz" を /dev/mmcblk0p1 パーティションにマウントします。

=> setenv bootcmd 'setenv bootargs root=/dev/mmcblk0p1 rw rootwait console=ttyAMA0,115200; mmc dev 0; mmc read 0x90000000 0x8000 0x14000; bootm 0x90000000'

これは正しいやり方でしょうか?もっと良い方法があれば教えてください。


また、LSDK では、カーネルと dtb 用の fitImage バイナリ ファイルを生成する方法、例えば distro/build_lx2160ardb-rev2/tmp/deploy/images/lx2160ardb-rev2/ ディレクトリにある fitImage のようなファイルを生成する方法、例えば fitImage--5.15.71+git0+95448dd0dc-r0-lx2160ardb-rev2-20260310070404.bin のようなファイルを生成する方法。



Re: LX2160ARDB: SD Card Booting

新しい質問については新しいスレッドでお答えいただけますか?

同僚は私の休暇のおかげで引き続きあなたをサポートします。

Re: LX2160ARDB: SD Card Booting

オーケーイーピン

サポートありがとうございます

Tags (1)
No ratings
Version history
Last update:
2m ago
Updated by: