在这篇文章中、我们使 DDR 配置成功引导 am62
但有时它引导失败。
我们的电路板和 EVM 之间存在一些差异:
板上的 DDR 芯片










This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在这篇文章中、我们使 DDR 配置成功引导 am62
但有时它引导失败。
我们的电路板和 EVM 之间存在一些差异:
板上的 DDR 芯片










一些引导日志:
MSC Firmware Version 9.1.8--v09.01.08 (Kool Koala) DMSC Firmware revision 0x9 DMSC ABI revision 3.1 [BOOTLOADER_PROFILE] Boot Media : eMMC [BOOTLOADER_PROFILE] Boot Media Clock : 200.000 MHz [BOOTLOADER_PROFILE] Boot Image Size : 160 KB [BOOTLOADER_PROFILE] Cores present : mcu-r5f0-0 r5f0-0 [BOOTLOADER PROFILE] System_init : 36510us [BOOTLOADER PROFILE] Board_init : 0us [BOOTLOADER PROFILE] Drivers_open : 45240us [BOOTLOADER PROFILE] Board_driversOpen : 0us [BOOTLOADER PROFILE] Sciclient Get Version : 9896us [BOOTLOADER PROFILE] App_loadImages : 22021us [BOOTLOADER PROFILE] App_loadSelfcoreImage : 23554us [BOOTLOADER_PROFILE] SBL Total Time Taken : 137224us Image loading done, switching to application ... Starting MCU-r5f and 2nd stage bootloader DMSC Firmware Version 9.1.8--v09.01.08 (Kool Koala) DMSC Firmware revision 0x9 DMSC ABI revision 3.1 [BOOTLOADER_PROFILE] Boot Media : eMMC [BOOTLOADER_PROFILE] Boot Media Clock : 200.000 MHz [BOOTLOADER_PROFILE] Boot Image Size : 1102 KB [BOOTLOADER_PROFILE] Cores present : hsm-m4f0-0 r5f0-0 a530-0 c75ss0 [BOOTLOADER PROFILE] System_init : 1782us [BOOTLOADER PROFILE] Board_init : 0us [BOOTLOADER PROFILE] Drivers_open : 19530us [BOOTLOADER PROFILE] Board_driversOpen : 0us [BOOTLOADER PROFILE] Sciclient Get Version : 9978us [BOOTLOADER PROFILE] App_loadImages : 21197us [BOOTLOADER PROFILE] App_loadSelfcoreImage : 23975us [BOOTLOADER PROFILE] App_loadLinuxImages : 37461us [BOOTLOADER PROFILE] App_loadDSPImages : 23894us [BOOTLOADER_PROFILE] SBL Total Time Taken : 137822us Image loading done, switching to application ... Starting linux and RTOS/Baremetal applications NOTICE: BL31: v2.9(release):v2.9.0-614-gd7a7135d32-dirty NOTICE: BL31: Built : 09:34:15, Aug 24 2023 U-Boot SPL 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000) SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)') am62a_init: board_init_f done am62a_init: spl_boot_device: devstat = 0x4b bootmedia = 0x9 bootindex = 0 Trying to boot from MMC1 ti_sci system-controller@44043000: Message not acknowledgedAuthentication failed! ### ERROR ### Please RESET the board ###
那么、现在全部三个电路板是否都出现了类似的故障? 引导似乎已经远远超过了 DDR 初始化、因此这可能是一个更大的软件问题。
如果您可以成功进入内核提示符、请尝试运行 Linux memtester (在提示符处键入 memtester 以获取帮助菜单)、并发布测试的几个循环的日志。 这将运行一些存储器测试以查看接口是否稳定。 在您的3块板上运行它。
如果出现任何故障、则必须调试 DDR。 如果你没有得到任何故障,那么它很可能是软件问题。
此致、
James
存储器速率为8Gb 每个通道、但所有配置均将 DRAM 密度设置为16GB。 需要解决此问题。
此外、您是否执行过任何电路板仿真? 建议这样做以确保适当的信号完整性、还可用于获得理想的驱动强度和终端配置设置
由于您在降低界面速度方面取得了一些成功、我甚至建议您向下访问800MHz、看看这是否会进一步改善情况。 这至少会在调试更高频率时让您的软件团队解除停滞。
您是否有 JTAG 接口? 如果是、请通过运行以下 GEL 脚本执行 DDR 寄存器转储: Scripts->AM62A_DDRSS Memory debug->AM62A_DDRSS_CTL_PI_PHY_RegDump ()
此致、
James
这是我们的硬件工程师提供的布局说明。 请帮助我们仔细检查它。
感谢布局信息。 布局似乎执行正确、但没有迹象表明 T 分支的阻抗是中继分支的一半。 您能否确认每个分支的布线阻抗是多少?
此外、您是否可以应用以下补丁、重新构建并运行代码。 此补丁将在 DDR 初始化后立即执行寄存器转储到控制台。 如果您可以发布寄存器转储的结果、我可以分析是否有任何培训问题。
您应该能够使用以下命令将补丁应用到 u-boot 的基本目录:
Git apply -v 0001-adding-ddr-regdump-code.patch
此致、
James
以下是有关布局的详细信息:

我发现我使用的 u-boot-spl img 是路径下的预编译1:ti-processor-sdk-linux-edgeai-am62axx-evm-09_01_00_07/board-support/prebuild-images/u-boot-spl.bin-am62axx-evm
由于我为 R5..appimage 重建 u-boot、我应该使用哪个映像来生成 Linux.appimage?
firmware_builder_am62a/ti-firmware-builder-am62axx-evm-09_01_00_07/mcu_plus_sdk_am62ax_09_01_00_39/tools/boot/linuxAppimageGen/makefile
$(IMAGE_ELF): $(LD) -b binary -A aarch64 --oformat elf64-littleaarch64 --section-start=.data=$(IMAGE_LOAD_ADDR) -e $(IMAGE_LOAD_ADDR) $(PSDK_LINUX_PREBUILT_IMAGES)/$(IMAGE_BIN_NAME) -o $(IMAGE_ELF)
"对不起,我以为你赢了。" 我不知道您使用的是混合引导方法。 似乎您正在使用 MCU+ SDK 执行 DDR 初始化。 如果是这种情况、您需要按照此处的说明进行操作:
这将向您展示如何获取 DDR 配置头文件.h 并构建到您的代码中。
我认为可能会发生的情况是您使用的是默认 DDR 配置、这就是您遇到错误的原因。 请确保您生成的配置文件内置于项目中
如果 MCU+ SDK 正在初始化 DDR、我提供的补丁就不相关。
此致、
James
我确信我的配置文件已内置到我的 prj 中。
每次生成配置文件后。 我已将 prj 和闪存重建到电路板。
除差异外、还可在不同的频率配置中找到。
引用了这些文档。 我想知道如果以混合方法启动、是否必须启用 ECC。
您是否能够尝试这些步骤? 从 pic 来看、它看起来是您具有 JTAG 连接的。 必须创建新的目标配置才能加载正确的 GEL、才能加载 regdump 脚本:
此致、
James
您好!
感谢寄存器转储。 它基本上看起来很好,但有几件事吸引了我的眼睛:
1. CS0/2的 VREFca 训练值约为185mv、CS1/3约为290mV。 这不一定是错误的,但奇怪的是,他们是如此的不同。 这也与您在通道 B 中看到的误差相关。 根据您发送的布局信息、我不明白这些误差为何如此不同。
2.数据字节0和3的写入矫正结果与字节1和2大不相同。 从您发送的布局信息来看、这一点也有相关性、因为在考虑字节交换的情况下、字节0和3的长度比1和2长得多。 因此、这里的培训似乎工作正常。
对于第1点、是否也可以检查 CS 信号的路由? 从长度匹配报告中可以看出、这些结果似乎与 CA 匹配、这很好、但一些内容似乎不同、从而导致培训差异。
当您启动电路板时、您是完全对电路板进行下电上电还是执行某种类型的复位(如果是、是何种类型的复位)?
如果您要执行下电上电、是否可以尝试对板进行热复位(可能通过按钮)以查看是否仍然出现故障。 由于您遇到间歇性故障、我怀疑存在电源问题。 热复位将有助于确保电源稳定。
如果将 DDR 频率降低到足够低、是否每次都能成功引导?
引导失败或引导成功后执行的 regdump?
此致、
James
您好!
该工具的新版本默认启用所有4个字节的 WDQS 控制。 这可以扩展写入前导码、详细信息可以在 JEDEC 规范或您的存储器器件数据表中找到。 这是最近的一项发现、对于某些存储器供应商的器件而言是必须启用的、它决定默认启用、以便在多个供应商之间实现更广泛的兼容性。 有趣的是、我们到目前为止还没有看到 Micron 器件需要这样做
这对您的调试来说是个好消息! 继续测试、如果还有其他问题、请告诉我。
此致、
James
坏消息!
我发现不同的硬件板具有不同的性能。 使用相同的 DDR 配置参数、某些电路板每次都可以成功引导并通过 memtester 例程、一些电路板引导几乎每次都失败。
这是两个电路板 DDR 寄存器转储:
e2e.ti.com/.../ddr_5F00_reg_5F00_dump_5F00_failed.txt
e2e.ti.com/.../ddr_5F00_reg_5F00_dump_5F00_success.txt
引导失败日志:
######Compile time May 22 2024 07:44:08 DMSC Firmware Version 9.1.8--v09.01.08 (Kool Koala) DMSC Firmware revision 0x9 DMSC ABI revision 3.1 [BOOTLOADER_PROFILE] Boot Media : eMMC [BOOTLOADER_PROFILE] Boot Media Clock : 200.000 MHz [BOOTLOADER_PROFILE] Boot Image Size : 161 KB [BOOTLOADER_PROFILE] Cores present : mcu-r5f0-0 r5f0-0 [BOOTLOADER PROFILE] System_init : 34784us [BOOTLOADER PROFILE] Board_init : 0us [BOOTLOADER PROFILE] Drivers_open : 19513us [BOOTLOADER PROFILE] Board_driversOpen : 0us [BOOTLOADER PROFILE] Sciclient Get Version : 13639us [BOOTLOADER PROFILE] App_loadImages : 22056us [BOOTLOADER PROFILE] App_loadSelfcoreImage : 23515us [BOOTLOADER_PROFILE] SBL Total Time Taken : 113510us Image loading done, switching to application ... Starting MCU-r5f and 2nd stage bootloader ######Compile time May 22 2024 07:44:08 DMSC Firmware Version 9.1.8--v09.01.08 (Kool Koala) DMSC Firmware revision 0x9 DMSC ABI revision 3.1 ERROR: Bootloader_verifyMulticoreImage:655: Failed to authenticate Image ERROR: Bootloader_socCpuResetRelease:861: CPU set boot address failed for a530-0 ERROR: Bootloader_socCpuRelease:496: CPU release failed for a530-0 Some tests have failed!!
我认为这里有一些参数需要调整。
是否提供了任何调优工具或调优方法?
您好!
它一直出现在字节1和3上、这两个字节对应于信号 CS1_A 和 CS1_B 您能否展示这两个信号的布线方式以及它们之间是否存在任何差异? 它们是否具有相同的参考平面?
您是否还可以尝试对 DDR 配置工具进行以下更改:
端接:CA ODT (FSP1)= RZQ/4 (60 Ω)
端接:CA ODT (FSP2)= RZQ/4 (60 Ω)
此致、
James
这是 DDR 布局的详细说明。 请帮助我们仔细检查它。
e2e.ti.com/.../6431.DDR-Layout.pdf
修改后的命令。 故障电路板可以成功引导。 我会进行更多测试来确认它。
大家好、regdump 看起来不错、只是 rank1通道与 rank0的经过训练的 VREF 值差别很大
CS0_A 0x19 (20.0%VDDQ = 220mV)(RNG 0) 
CS1_A 0x32 (30.0%VDDQ = 330mV)(RNG 0)
CS0_B 0x18 (19.6%VDDQ = 216mV)(RNG 0)
CS1_B 0x32 (30.0%VDDQ = 330mV)(RNG 0)
如何连接存储器上的 ODT_CA_A 和 ODT_CA_B?
此致、
James