こんにちは、NXPの専門家
私の開発ボードで使用されているチップは S32G274A と bsp38 です。現在、DDRを元の4GBから2GBに変更したいと考えています。次の図に示すように、S32G メモリ構成およびテスト マニュアルに従って S32DS を介して DDR を構成し、検証して ATF ソース コードをエクスポートしました。
ZHANGBOWEN_0-1770004963054.png
次に、「S32G RDB2 Linux ボードレベル開発キット ATF カスタマイズ」マニュアルと「S32G RDB2 Linux ボードレベル開発キット Uboot カスタマイズ」の DDR 変更セクションを参照して、対応する ddr ファイルを置き換えました。今はいくつかの現象が起きています。
(1)/ホーム/ZBW/workspace/s32g/Arm -trusted- ファームウェア -NXP/FDTS/s32g2 dtsi を変更していない場合、メモリノードの内容は以下のように維持されますが、uboot は正常に起動できますが、カーネルを起動するとエラーが発生し、次の図にエラーメッセージが表示されます。
ZHANGBOWEN_1-1770005329238.png
エラーログ:
=> boot
switch to partitions #0, OK
mmc0(part 0) is current device
18864640 bytes read in 234 ms (76.9 MiB/s)
Booting from mmc ...
56397 bytes read in 10 ms (5.4 MiB/s)
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 0000000083000000, end 0000000083010c4c
fixup: pfe0 set to 00:01:be:be:ef:11
fixup: pfe0: Update fixed-link speed to 1000Mbps
fixup: pfe1 set to 00:01:be:be:ef:22
fixup: pfe2 set to 00:01:be:be:ef:33
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 5.15.119-rt65+gd6fac1c66 (oe-user@oe-host) (aarch64-fsl-linux-gcc (GCC) 11.3.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT Thu Oct 30 12:05:44 CST 2025
[ 0.000000] Machine model: GRCE DOCAP-BAS
[ 0.000000] earlycon: linflex0 at MMIO 0x00000000401c8000 (options '115200n8')
[ 0.000000] printk: bootconsole [linflex0] enabled
[ 0.000000] efi: UEFI not found.
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000083200000, size 3 MiB
[ 0.000000] OF: reserved mem: initialized node pfebufs@83200000, compatible id shared-dma-pool
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000080000000-0x00000000ffffffff]
[ 0.000000] DMA32 empty
[ 0.000000] Normal [mem 0x0000000100000000-0x00000008ffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080000000-0x00000000831fffff]
[ 0.000000] node 0: [mem 0x0000000083200000-0x00000000835dffff]
[ 0.000000] node 0: [mem 0x00000000835e0000-0x0000000083ffffff]
[ 0.000000] node 0: [mem 0x0000000084000000-0x00000000843fffff]
[ 0.000000] node 0: [mem 0x0000000084400000-0x0000000084ffffff]
[ 0.000000] node 0: [mem 0x0000000085000000-0x0000000085000fff]
[ 0.000000] node 0: [mem 0x0000000085001000-0x00000000bfffffff]
[ 0.000000] node 0: [mem 0x00000000c0000000-0x00000000c07fffff]
[ 0.000000] node 0: [mem 0x00000000c0800000-0x00000000cfffffff]
[ 0.000000] node 0: [mem 0x00000000d0001000-0x00000000efffffff]
[ 0.000000] node 0: [mem 0x0000000880000000-0x00000008ffffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
[ 0.000000] On node 0, zone DMA: 1 pages in unavailable ranges
[ 0.000000] cma: Reserved 256 MiB at 0x00000000e0000000
[ 0.000000] psci: probing for conduit method from DT.(2)デバイスツリーを修正してメモリノードのmemory@880000000をコメントアウトし、U-bootを再コンパイルして焼き込むと、NOTICE: Reset status: Power-On Resetの1行だけが表示されます。
こんにちは、 @chenyin_h
ECCを有効にしました。設定の一部を次の図に示します。
ZHANGBOWEN_0-1770098956280.png
こんにちは、 @ZHANGBOWEN
ご投稿ありがとうございます。
DDR ツールの設定中に ECC を有効にしたかどうかを教えていただけますか?
BR
チェイン
補足情報:DDR TOOL構成図、検証成功
ZHANGBOWEN_0-1770016757261.png
U-Bootに入ることができる最初の状況では、U-Bootのコマンドラインでmemのサイズを手動で設定しました。
setenv mmcargs 'run finduuid;setenv bootargs console=${console},${baudrate} mem=2G root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype} earlycon nohz=off coherent_pool=64M'この現象は矛盾している
注意: リセット状態: パワーオンリセット
お知らせ: BL2: v2.5(リリース):bsp38.0-2.5-dirty
通知: BL2: 構築日時: 2026年2月2日 06:47:45
お知らせ: BL2: BL31 を起動しています
U-Boot 2020.04-00006-g2560e070-ダーティ(2026年2月2日 - 14:47:43 +0800)
SoC: NXP S32G274A rev.2.0
CPU: ARM Cortex-A53 r0p4(最大1000MHz)
モデル: NXP S32G274A-RDB2
DRAM: 3.8 GiB
MMC: FSL_SDHC: 0
SPIフラッシュから環境をロード中... SF: ページサイズ256バイト、消去サイズ64 KiB、合計64 MiBのmx25uw51245gを検出しました
わかりました
PCIe0 を RootComplex として構成する
PCIe0: リンクアップ!X1、Gen3
デバイス 'pcie@44100000': seq 1 は 'pci_0:0.0' によって使用されています
PCIe1 を RootComplex として構成する
PCIe1: リンクアップに失敗しました
PCI: 自動構成バー 20 に失敗しました
PCI: 自動構成バー 24 に失敗しました
BusDevFun VendorId DeviceId デバイスクラスサブクラス
______________________________________________________________________
pcie@40400000 ルートコンプレックス
| `-- 00:00.00 0x1957 0x4002 ブリッジデバイス 0x04
| `-- 01:00.000x1e4b 0x1202 マスストレージコントローラ 0x08
入力: serial@401c8000
出力: serial@401c8000
エラー: serial@401c8000
ボードリビジョン: RDB2/GLDBOX リビジョン D
ネット: EQOS phy: rgmii @ 1
警告: eth_eqos (eth0) はランダムな MAC アドレスを使用しています - 12:ec:d2:dd:91:c8
eth0: eth_eqos emac0_xpcs の XPCS の速度を取得できませんでした PFE: emac0: sgmii emac1: none emac2: rgmii
SF: ページサイズ 256 バイト、消去サイズ 64 KiB、合計 64 MiB の mx25uw51245g を検出しました
## アドレス 0xefdc6a78 に ELF イメージがありません
PFEngファームウェアファイル '
セルラーモジュールの電源オン
自動起動を停止するには任意のキーを押してください: 0
=>
=> printenv mmc
mmcargs mmcboot mmcdev mmcpart mmcroot mmcrootfstype
=> printenv mmcargs
mmcargs=run finduuid;setenv bootargs console= ${console} , ${baudrate} root=PARTUUID= ${uuid} rw rootfstype= ${mmcrootfstype} Earlycon nohz=off coherent_pool=64M
=> bdinfo
アーキテクチャ番号 = 0x00000000000000000
ブートパラメータ = 0x0000000080000100
DRAMバンク = 0x00000000000000000
-> 開始 = 0x0000000080000000
-> サイズ = 0x0000000070000000
DRAMバンク = 0x00000000000000001
-> 開始 = 0x0000000880000000
-> サイズ = 0x0000000080000000
ボーレート = 115200 bps
TLBアドレス = 0x00000000efff0000
再配置アドレス = 0x00000000efff0000
再配置オフ = 0x00000000000000000
irq_sp = 0x00000000efdc6b70
sp 開始 = 0x00000000efdc6b70
初期のmalloc使用量: 193d0 / 20000
fdt_blob = 0x00000000ffa97000
=> setenv mmcargs 'run finduuid;setenv bootargs console= ${console} , ${baudrate} mem=2G root=PARTUUID= ${uuid} rw rootfstype= ${mmcrootfstype} earlycon nohz=off coherent_pool=64M'
=> ブート
パーティション #0 に切り替えます。OK
mmc0(パート0)は現在のデバイスです
18864640バイトを234ミリ秒で読み取りました(76.9 MiB/秒)
mmc から起動しています...
10 ミリ秒で 56397 バイトを読み取りました (5.4 MiB/秒)
## 83000000 のフラット化されたデバイス ツリー blob
0x83000000のfdt blobを使用して起動する
0000000083000000、終了 0000000083010c4c にあるデバイスツリーを使用しています
修正: pfe0 を 00:01:be:be:ef:11 に設定
修正: pfe0: 固定リンク速度を1000Mbpsに更新
修正: pfe1 を 00:01:be:be:ef:22 に設定
修正: pfe2 を 00:01:be:be:ef:33
カーネルを起動中…
[ 0.000000] 物理CPU 0x0000000000 [0x410fd034]でLinuxを起動しています
[ 0.000000] Linux バージョン 5.15.119-rt65+gd6fac1c66 (oe-user@oe-host) (aarch64-fsl-linux-gcc (GCC) 11.3.0、GNU ld (GNU Binutils) 2.38.20220708) #1 SMP PREEMPT 2025年10月30日(木) 12:05:44 CST
[ 0.000000] マシン モデル: GRCE DOCAP-BAS
[ 0.000000] メモリは2048MBに制限されています
[ 0.000000] earlycon: linflex0 at MMIO 0x00000000401c8000 (オプション '115200n8')
[ 0.000000] printk: bootconsole [linflex0] が有効
[ 0.000000] efi: UEFI が見つかりません。
[ 0.000000] 予約メモリ: 0x0000000083200000 に DMA メモリプールを作成しました。サイズは 3 MiB です。
[ 0.000000] OF: 予約済みメモリ: 初期化されたノード pfebufs@83200000、互換性のある ID 共有 DMA プール
[ 0.000000] ゾーン範囲:
[ 0.000000] DMA [メモリ 0x0000000080000000-0x00000000ffffffff]
[ 0.000000] DMA32 空
[ 0.000000] 正常 [メモリ 0x0000000100000000-0x000000088fffffff]
[ 0.000000] 各ノードの移動可能ゾーンの開始
[ 0.000000] 初期メモリノード範囲
[ 0.000000] ノード 0: [メモリ 0x0000000080000000-0x00000000831fffff]
[ 0.000000] ノード 0: [メモリ 0x0000000083200000-0x00000000835dffff]
[ 0.000000] ノード 0: [メモリ 0x00000000835e0000-0x0000000083ffffff]
[ 0.000000] ノード 0: [メモリ 0x0000000084000000-0x00000000843ffffff]
[ 0.000000] ノード 0: [メモリ 0x0000000084400000-0x0000000084ffffff]
[ 0.000000] ノード 0: [メモリ 0x0000000085000000-0x0000000085000fff]
[ 0.000000] ノード 0: [メモリ 0x0000000085001000-0x00000000bfffffff]
[ 0.000000] ノード 0: [メモリ 0x00000000c0000000-0x00000000c07fffff]
[ 0.000000] ノード 0: [メモリ 0x00000000c0800000-0x00000000cfffffff]
[ 0.000000] ノード 0: [メモリ 0x00000000d0001000-0x00000000efffffff]
[ 0.000000] ノード 0: [メモリ 0x0000000880000000-0x000000088ffffffff]
[ 0.000000] 初期化メモリ セットアップ ノード 0 [メモリ 0x0000000080000000-0x000000088ffffffff]
[ 0.000000] ノード0のゾーンDMA: 使用できない範囲に1ページあります
[ 0.000000] cma: 0x00000000e0000000 に 256 MiB が予約されています
[ 0.000000] psci: DT からコンジット 方法をプローブしています。
[ 0.000000] psci: ファームウェアで PSCIv1.1 が検出されました。
[ 0.000000] psci: 標準PSCI v0.2関数IDを使用
[ 0.000000] psci: MIGRATE_INFO_TYPE はサポートされていません。
[ 0.000000] psci: SMC呼び出し規約 v1.2
[ 0.000000] percpu: 組み込み 27ページ/CPU s71000 r8192 d31400 u110592
[ 0.000000] pcpu割り当て: s71000 r8192 d31400 u110592 割り当て=27*4096
[ 0.000000] pcpu割り当て: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] SError CPU0 の割り込み、コード 0x00000000bf000002 -- SError
[ 0.000000] CPU: 0 PID: 0 通信: スワッパー 汚染されていない 5.15.119-rt65+gd6fac1c66 #1
[ 0.000000] ハードウェア名: GRCE DOCAP-BAS (DT)
[ 0.000000] pstate: 400000c5 (nZcv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 0.000000] pc : __next_mem_range_rev+0xd8/0x1fc
[ 0.000000] lr : __next_mem_range_rev+0x90/0x1fc
[ 0.000000] sp : ffffffc0090c3ab0
[ 0.000000] x29: ffffffc0090c3ab0 x28: 0000000000001000 x27: ffffffc00913e158
[ 0.000000] x26: 000000000000001c x25: ffffffc00913e130 x24: 00000000000000000
[ 0.000000] x23: ffffffc0090c3b70 x22: ffffffc0090c3b78 x21: 0000000000000000
[ 0.000000] x20: ffffffc0090c3b80 x19: ffffffc00913e158 x18: ffffffffffffffff
[ 0.000000] x17: 000000000000002c x16: 0000000000001b000 x15: 00000000000000000
[ 0.000000] x14: 0000000000000018 x13: 0000000000000000b x12: 00000000ffffffff
[ 0.000000] x11: 000000000000002c x10: 000000088fbb20a8 x9: ffffffc00921f818
[ 0.000000] x8 : 000000000000001c x7 : 0000000880000000 x6 : 0000000890000000
[ 0.000000] x5 : 000000000000002c x4 : 0000000000000001c x3 : 00000000000000000
[ 0.000000] x2 : 0000000000000000 x1 : ffffffc00921ea80 x0 : 0000000000000000
[ 0.000000] カーネルパニック - 同期していません:
[ 0.000000] 非同期SError割り込み
[ 0.000000] CPU: 0 PID: 0 通信: スワッパー 汚染されていない 5.15.119-rt65+gd6fac1c66 #1
[ 0.000000] ハードウェア名: GRCE DOCAP-BAS (DT)
[ 0.000000] 通話トレース:
[ 0.000000] ダンプバックトレース+0x0/0x1b0
[ 0.000000] show_stack+0x18/0x24
[ 0.000000] ダンプスタックレベル+0x68/0x84
[ 0.000000] ダンプスタック+0x18/0x34
[ 0.000000] パニック+0xb8/0x378
[ 0.000000] add_taint+0x0/0xc0
[ 0.000000] arm64_serror_panic+0x64/0x74
[ 0.000000] do_serror+0x58/0x60
[ 0.000000] el1h_64_error_handler+0x30/0x50
[ 0.000000] el1h_64_error+0x78/0x7c
[ 0.000000] __next_mem_range_rev+0xd8/0x1fc
[ 0.000000] memblock_find_in_range_node+0x228/0x240
[ 0.000000] memblock_alloc_range_nid+0xac/0x14c
[ 0.000000] memblock_alloc_internal+0x80/0xe0
[ 0.000000] memblock_alloc_try_nid+0xb8/0xe4
[ 0.000000] pcpu_alloc_first_chunk+0x13c/0x250
[ 0.000000] pcpu_setup_first_chunk+0x7d8/0x8c0
[ 0.000000] pcpu_embed_first_chunk+0x6c4/0x774
[ 0.000000] セットアップ_per_cpu_areas+0x3c/0xc4
[ 0.000000] スタート_カーネル+0x194/0x6bc
[ 0.000000] __primary_switched+0xa0/0xa8
[ 0.000000] 10秒後に再起動します。
注意: リセット状態: 破壊的リセット (RUN)
お知らせ: BL2: v2.5(リリース):bsp38.0-2.5-dirty
こんにちは、 @ZHANGBOWEN
ご返信ありがとうございます。
DDR ECC を有効にすると、DDR 容量の最後の 1/8 が ECC チェックサム値の保存に使用されます。したがって、ECC 対応 DDR を正常に動作させるには、いくつかの変更が必要になる場合があります。
1. s32g_platform_def.h を通じて ATF 構成を更新します。次のように。
#BL33_BASE (S32G_DDR0_END - (256 * SIZE_1M) - S32G_BL33_IMAGE_SIZE - \ を定義します
サイズ_1M + 1)
2. BSP UM に従って menuconfig を呼び出し、U-Boot の次の特定の構成を設定します。
CONFIG_SYS_TEXT_BASE=0xefaa0000
CONFIG_SYS_DATA_BASE=0xefa00000
3. 2番目のメモリマッピングをコメントアウトします。
次に、TFA/uboot を再構築してテストします。
BR
チェイン
こんにちは@chenyin_h
ご返信ありがとうございます。
ご指導のとおり、
(1)については、
ZHANGBOWEN_1-1770117024567.png
(2)について
ZHANGBOWEN_0-1770116949209.png
(3)について
ZHANGBOWEN_2-1770117066092.png
正しく理解して修正できましたか?
その後、TFA/ubootを再構築してテストしましたが、結果はNOTICE: Reset status: Power-On Resetの1行だけが表示されます。
こんにちは、 @ZHANGBOWEN
ご返信ありがとうございます。
1 & 2:
DDR ECC の機能はメモリ エラーを検出して修正することであり、通常は信頼性の高いシステムに使用されます。ECC を使用するかどうかは、実際のシステム要件によって異なります。
3. 申し訳ありませんが、あなたのケースには正式なパッチがありません。RDB のデフォルト設定は 4G なので、経験から役立つかもしれないヒントをいくつか提供しました。あなたの問題の確認を続けさせてください。
BR
チェイン
こんにちは、 @chenyin_h
テストしたところ、ECC を無効にすると、システムが正常に起動して実行されることがわかりました。
そこで、(1) ECC が必要かどうか、(2) ECC を有効にしない場合はどのような影響があるかを知りたいです。
(3)ECCが有効になっている場合、どのように適応的に変更すればよいでしょうか?
こんにちは、 @chenyin_h
ご返信ありがとうございます。
ECC を有効にしたい場合、システムを正常に起動させる他の方法はありますか?
こんにちは、 @ZHANGBOWEN
ご返信ありがとうございます。
DDR ツールで使用したパラメータを再度確認し、さらに以下の変更を提案します。
u-boot menuconfig -> General setup で、「DRAM バンクの数」を「 1 」に設定します。
次に、画像を再構築してもう一度試します。
BR
チェイン
こんにちは、 @chenyin_h
ご指導に従って、以下の変更を行いました
1. s32g_platform_def.h を通じて ATF 構成を更新します。次のように。
#BL33_BASE (S32G_DDR0_END - (256 * SIZE_1M) - S32G_BL33_IMAGE_SIZE - \ を定義します
サイズ_1M + 1)
2. BSP UM に従って menuconfig を呼び出し、U-Boot の次の特定の構成を設定します。
CONFIG_SYS_TEXT_BASE=0xefaa0000
CONFIG_SYS_DATA_BASE=0xefa00000
3. 2番目のメモリマッピングをコメントアウトします。
4. u-boot menuconfig -> General setup で、「DRAM バンクの数」を「 1 」に設定します。
その後、ubootを再構築しましたが、結果は1行だけ 注意: リセットステータス: パワーオンリセットが表示されます
こんにちは、 @ZHANGBOWEN
ご返信ありがとうございます。
TFA にデバッグ オプションを追加し (ビルディング中に「DEBUG=1」を追加)、さらにデバッグを行うためにより多くの情報を共有するために再構築していただけますか?
BR
チェイン