i.MX6 DDR压力测试工具V1.0.3 请注意,本页面中描述的工具已弃用且不再维护。有关最新维护的 i.MX 6/7 系列 DDR 工具,用户可以在此处找到:
i.MX 6/7 系列 DDR 工具发布
大家好,
DDR_Stress_Tester 是一款用于微调 DDR 参数并验证 i.MX6 开发板上 DDR 性能的软件应用。
i.MX6 板卡的性能。它执行写入均衡、DQS 门控和读/写延迟
该工具可在目标开发板上执行写均衡、DQS 选通、读写延迟校准,以匹配开发板的布局并实现最佳的 DDR 性能。
此外,压力测试还可以帮助用户验证其电路板上的DDR性能。
该工具支持以下功能:
• 支持 i.MX6Q、i.MX6D、i.MX6DL、iMX6S、i.MX6SL 和 i.MX6SX 的 DDR 校准。
• 支持 DDR3 写均衡、DQS 选通、读写延迟自动校准。
• 支持 LPDDR2 读/写延迟自动校准。
• 支持 16 位、32 位和 64 位数据总线。
• 支持固定映射的2通道 LPDDR2。
• 支持在 135MHz 至 672MHz 频率范围内进行 DDR 压力测试
如果客户开发板上没有 USB OTG 端口,请使用 DDR_Stress_Tester_V1.0.3_UART1_for_SDboot&JTAG.zip 中的镜像文件。
压缩包中的 bin 文件可通过 U-Boot 加载,elf 文件则用于 JTAG 加载。请注意,当镜像由 u-boot 加载时,DDR 将由 u-boot 进行初始化(参考 flash_header.S)。
要在 U-Boot 中运行 DDR 压力测试,必须在 U-Boot 中禁用 CONFIG_SPLASH_SCREEN。因为在 DDR 压力测试进入自刷新模式时,DRAM 的访问将被阻塞。如果 u-boot 中的启动画面功能已启用,IPU( 将持续访问 DRAM,这将导致系统挂起。
如果您在 u-boot 中有其他 DMA 访问权限,则必须将其禁用。
如果客户为 UART 使用了不同的 RX/TX 引脚,请联系 FAE。
UART1
6DQ
6DL
6SL
6SX
TX
CSI0_DAT10/ALT3
CSI0_DAT10/ALT3
UART1_TXD/ALT0
GPIO1_IO04/ALT0
RX
CSI0_DAT11/ALT3
CSI0_DAT11/ALT3
UART1_RXD/ALT0
GPIO1_IO05/ALT0
在 i.MX6Q 的 U-Boot 中运行 DDR 测试的命令:
U-Boot > fatload mmc 2:1 0x907000 ddr-stress-test-mx6dq.bin
U-Boot > go 0x907000
对于 i.MX6Q/6D 4K 交错 LPDDR2,请使用版本 v1.0.3.1。
适用于 LPDDR2 4K 交错模式的 i.MX6 DDR 压力测试工具 V1.0.3.1
对于带有 GUI 的 i.MX6/i.MX7 DDR 压力测试工具,请使用 V2.x 版本:
i.MX6/7 DDR压力测试工具V2.10
历史版本更新记录
V1.0.3:支持i.MX6SoloX。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
不建议在 i.MX6 上使用 V0.042 版本。V0.042 版本与 V1.0.x 版本之间存在诸多差异。 内存特性不同。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我更详细地查看了,实际的区别不是 USB OTG 和 SDBoot,而是 DDRStressTester 的版本。 我们最初测试的是 OSB OTG 启动方式下的 DDRStressTester v0.042 版本,对于 2GB 的 DDR 内存,测试耗时 3 分钟。而当我们开始使用 SDBoot 启动方式时,我们测试的是 v1.0.2 版本,对于 2GB 的 DDR 内存,测试耗时 8 分钟。当我重新用 v1.0.2 版本进行 USB OTG 启动方式测试时,对于 2GB 的 DDR 内存,同样耗时 8 分钟。而针对 512MB 内存重新测试时,耗时确实如你所说为 2 分钟。 在 v1.0.2 版本中,以下主要项目的执行时间显著延长:t0.1 数据地址测试、t1 memcpy8 SSN x64 测试、t3 memcpy11 随机模式测试。是什么导致了 v0.042 和 v1.0.2 版本之间性能的剧烈变化? 谢谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,马克, 我没看到你描述的那种差异。 i.MX6Q:L3.0.35_4.1.0 版本的 u-boot(修改内容:在 common/stdio.c 文件中注释掉 drv_lcd_init() 函数) 选择的DDR密度(MB):512 通过 USB OTG 运行一个循环和通过 u-boot 加载运行一个循环,所需时间没有差异,都是大约 2 分钟。 你可以尝试按照我的修改来更改 u-boot。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace Si, 我们正在通过 USB OTG 以及使用 SDBoot 版本通过 uboot 加载的方式,来使用 imx6 DDR 压力测试工具。 我们注意到,使用 USB OTG 时,完成一轮测试大约需要 3 分钟,而使用 SDboot 版本时,完成一轮测试大约需要 8 分钟。 这是预期的吗?是什么导致了这个时间差异? 谢谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Casper, 请联系您的 FAE 或市场部。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,格蕾丝 有没有办法支持我们创建那种测试模式呢? 我们愿意为整套解决方案付费! 或者我应该联系谁? 谢谢您 ^^ 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我们没有这方面的计划。 Grace 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好 是否可以在压力测试中添加预充电断电测试? 谢谢^^ 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好 是否可以在压力测试中添加预充电断电测试? 谢谢^^ 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我之前居然没意识到这点,要是早知道能从 U-Boot 启动 DDR 压力测试工具,就能给我们省下不少时间。
GraceSi写道:
在我下面的日志中,你可以看到 ddr-stress-test-mx6dq.bin 的加载大小为 87520,而你的是 96660。
v1.0.2 或 v1.0.3 ZIP 文件中的二进制文件大小没有一个是 87520 字节的。 我的 ddr-stress-test-mx6dq.bin (v1.0.3) 副本大小是 96660 字节。
另外一点就是我之前提到的,你板子上的 UART1 的 RX/TX 引脚是否与 i.MX6DQ EVK 相同?
如果没有,请联系您的FAE。
i.MX6DQ UART1 :
/* UART1 TXD */
writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT10);
/* UART1 RXD */
writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT11);
// 菊链设置
writel(0x1, IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT);
如果你能通过 UART1 成功与 U-Boot 通信,那么它很可能已经正确配置好了 :-)。 目前正在观察该工具在 DDR3 时钟频率间循环切换…… 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我尝试仅在 CS0 上测试 4GB DDR3,并使用选项 “9”(支持的最大密度)获取了校准数据。然而,当我将 MMDC0_MDASP 设置为 0x7F 时,出现了错误,t0.1 阶段的失败地址为:0x10000000,当时的数据为:0x90000000。而当我将 MMDC0_MDASP 设置为 0x5F 时,也出现了错误,t0.1 阶段的失败地址为:0xc0000000,当时的数据为:0xffffffc0。 这是硬件限制还是软件限制? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
hi Azlum 关于性能检查,我们建议至少进行 500 次循环。 Casper 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
亲爱的 Casper, 需要完成多少个 RAM 测试循环? 当我运行 RAM 压力测试时,它运行了大约 470 个循环。那么,我是否可以认为这算通过了测试? 此致, Azlum 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好 Grace 我尝试进行如下修改: setmem /32 0x021b000c = 0x3F433F13 // MMDC0_MDCFG0 对于 txpdll,我给 DDR3 设置了一个不合理值,但测试仍然通过了。 这是否意味着 DDR3 压力测试中并未涉及与 tXPDLL 相关的测试? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
请前往 Freescale i.MX6 DRAM端口应用指南-DDR3 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,格蕾丝 假设在压力测试辅助工具中没有对其进行修改。 假设 txpdll 在 DDR3 初始化时已设置!那么如何在初始化之前修改它? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,Grace 但如果我想在 iMX6 Solo 上对DDR3 的 tXPDLL 参数进行调优,该怎么操作呢? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
txpdll 应遵循你 DDR3 芯片数据手册中的数值。该参数无需进行测试。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好 我们在 IMx6 Solo 上测试 DDR3。 我们想知道 DDR3 压力测试是否可以包含 txpdll 测试? 如果有任何解决方案或建议,我们将不胜感激。 感谢您的热心帮助^^ 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Patrick, 您是否在使用该二进制文件 DDR_Stress_Tester_V1.0.3_UART1_for_SDboot&JTAG.zip or DDR_Stress_Tester_V1.0.2_UART1_for_SDboot&JTAG.zip. 即使名称相同,但 DDR_Stress_Tester_UART1_for_SDboot&JTAG.zip 和 DDR_Stress_Tester.zip 这两个包中的二进制文件是不一样的。 在我下面的日志中,你可以看到 ddr-stress-test-mx6dq.bin 的加载大小为 87520,而你的是 96660。 另外一点就是我之前提到的,你板子上的 UART1 的 RX/TX 引脚是否与 i.MX6DQ EVK 相同? 如果没有,请联系您的FAE。 i.MX6DQ UART1 : /* UART1 TXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT10); /* UART1 RXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT11); // 菊链设置 writel(0x1, IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT); 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好, 我在我的开发板上使用的是 i.MX6Q 芯片,而且没有 OTG 功能,所以我按照你的指示,尝试通过 u-boot 或 JTAG 加载程序。 JTAG 方式我试了,没成功,所以我想改用 u-boot。 U-Boot > ext2load mmc 0:1 0x907000 ddr-stress-test-mx6dq.bin 已读取 96660 字节,耗时 43 毫秒 (2.1 MiB/s) U-Boot > go 0x907000 ## Starting application at 0x00907000 ... 然后程序就卡在那里,没有进一步加载任何内容…… 您有什么想法吗? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Leo, 请检查 UART1 的 RX/TX 引脚是否与 i.MX6DL EVK 相同,如果不同,DDR_Stress_Tester_V1.0.3_UART1_for_SDboot&JTAG.zip 或 DDR_Stress_Tester_V1.0.2_UART1_for_SDboot&JTAG.zip 将无法正常工作。 请联系你的 FAE 来构建能配置正确 UART 设置的软件。 i.MX6DL UART1 : /* UART1 TXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT10); /* UART1 RXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT11); // 菊链设置 writel(0x1, IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT); 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
碰撞。 我们即将把新开发板的时序调整到 1 GHz,我希望能够顺利搞定这个问题。 DDR3 脚本辅助工具非常有用,但最终我还是想使用压力测试工具来精确调整时序参数。 到目前为止,我还没有明显成功地仅使用 JTAG 运行压力测试工具。这很可能是因为我没有正确使用 JTAG。是否有常见问题解答(FAQ)或操作指南(HOWTO)可以指引我找到正确的方向? 另外:设置 DDR3 时序是否也会同时设置核心时钟? 我们也希望 ARM 核心能以 1 GHz 运行;使用脚本辅助工具的输出结果时,能否“自动”实现这一点? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Steve, 请联系您的 FAE。 Grace 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
GraceSi, 我们主板上的控制台端口是 UART4。您能否发布一个从SD卡启动的二进制文件,以支持UART4控制台?或者您能否将源代码提供给我们,以便我们自行修改?谢谢。 Steve 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
请始终使用 WALAT=1,你可以参考下面的辅助资料。 i.Mx6DQSDL DDR3 Script Aid https://community.freescale.com/docs/DOC-94917 当然,flash_header.s应与您的测试脚本保持一致。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace, 我们开发板的写均衡校准结果如下: MMDC_MPWLDECTRL0 ch0 写入级别校准后:0x00270021 MMDC_MPWLDECTRL1 ch0 写入级别校准后:0x0030002C MMDC_MPWLDECTRL0 ch1 写入级别校准后:0x001F0030 MMDC_MPWLDECTRL1 ch1 写入级别校准后:0x000F0026 我不确定如何判断值是否大于0x2f,正如用户指南所述: 注意 如果写入延迟大于 0x2f,建议 建议在初始化脚本中将 MMDCx_MDMISC 寄存器的 WALAT 值设置为 1, 初始化脚本并重新运行 DDR_Stress_Tester。 另外,如果我要在脚本中将 WALAT 设置为 1,我是否应该在 flash_header.S 中将其设置为 1?换句话说,如果我校准出了一组令人满意的参数,且压力测试也通过了,我是否应该保持 flash_header.S 中的每个寄存器值与 test script.inc 中的值一致? 非常感谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,Petr,关于 Vybrid 处理器,目前没有这款工具,但在基于 Processor Expert 和 Eclipse 的产品驱动套件 (DS) v10.4.1中提供了 DDRV(即 DDR 验证)工具。您必须先安装 DS v10.4,然后再安装包含支持 Vybrid 处理器的 DDRV 工具的更新 1。 您可以在此处找到有关驱动套件的更多信息 - http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=PE_DRIVER_SUITE。这里需要说明一点,DDRV 工具是一款需要授权许可的工具,因此您需要获得相应的许可证才能运行该软件。我不确定应该联系谁来获取 Vybrid 的 DDRV 授权许可,但您可以尝试联系您当地的 FSL 代表获取评估密钥。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
从文件名来看,我猜 “DDR_Stress_Tester_V1.0.3_UART1_for_SDboot&JTAG.zip” 包含的镜像文件是打算通过 JTAG 加载并通过 UART1 进行交互的。不过,我一直没能成功实现。我总体上对 JTAG 比较陌生,特别是对 OpenOCD,所以操作失误的可能性很大。 我们的开发板基于 i.MX6DL。我使用的是 OpenOCD 0.8.0 版本,搭配一个 Olimex USB-TINY-H.TRST。JTAG 接口上的 TRST 引脚连接到 JTAG_TRST;SRST 引脚连接到 POR。因此,我将 reset_config 设置如下: reset_config trst_and_srst srst_pulls_trst 这似乎(大部分)有效: >reset halt
适配器速度:1000 kHz
JTAG 扫描链检测失败:全零
请检查 JTAG 接口、时序、目标电源等。
仍尝试使用已配置的扫描链……
imx6.dap: IR 捕获错误;看到 0x00 而非 0x01
由于错误,绕过 JTAG 设置事件首次锁定调试访问失败,但第二次尝试成功。错误:无法仅断言SRST
首次锁定调试访问失败,但第二次尝试成功。
imx6.cpu.0: 在复位后、暂停前运行……
一级缓存数量
imx6.cpu.0 集群 0 核心 0 多核
目标状态:已暂停
目标因调试请求在 Thumb 状态下暂停,当前模式:管理模式
cpsr: 0x400001f3 pc: 0x00001080
MMU:已禁用,D-Cache:已禁用,I-Cache:已启用
我似乎也能够加载图像: > load_image /home/ewhac/devel/iMX6/DDR_Stress_Tester_V1.0.3_UART1/ddr-stress-test-mx6dl.elf
82226 bytes written at address 0x00907000
downloaded 82226 bytes in 4.802489s (16.720 KiB/s)
然而,在这一点之后,我无法让任何事情正常运作。“resume 0x907000”似乎没有任何作用,随后输入“halt”命令也无效;我不得不重置。当我从 0x907000 反汇编加载的图像时,我看到的是: > arm disassemble 0x907000 32
0x00907000 0xe59ff018 LDR r15, [r15, #0x18]
0x00907004 0xe59ff018 LDR r15, [r15, #0x18]
0x00907008 0xe59ff018 LDR r15, [r15, #0x18]
0x0090700c 0xe59ff018 LDR r15, [r15, #0x18]
0x00907010 0xe59ff018 LDR r15, [r15, #0x18]
0x00907014 0xe1a00000 NOP
0x00907018 0xe59ff014 LDR r15, [r15, #0x14]
0x0090701c 0xe59ff014 LDR r15, [r15, #0x14]
0x00907020 0x00907054 ADDEQS r7, r0, r4, ASR r0
0x00907024 0x0090703c ADDEQS r7, r0, r12, LSR r0
0x00907028 0x00907040 ADDEQS r7, r0, r0, ASR #0x20
0x0090702c 0x00907044 ADDEQS r7, r0, r4, ASR #0x20
0x00907030 0x00907048 ADDEQS r7, r0, r8, ASR #0x20
0x00907034 0x0090704c ADDEQS r7, r0, r12, ASR #0x20
0x00907038 0x00907050 ADDEQS r7, r0, r0, ASR r0
0x0090703c 0xeafffffe B 0x0090703c
0x00907040 0xeafffffe B 0x00907040
0x00907044 0xeafffffe B 0x00907044
0x00907048 0xeafffffe B 0x00907048
0x0090704c 0xeafffffe B 0x0090704c
0x00907050 0xeafffffe B 0x00907050
0x00907054 0xeb000054 BL 0x009071ac
0x00907058 0xeb00007d BL 0x00907254
0x0090705c 0xeb00001b BL 0x009070d0
0x00907060 0xeb00004a BL 0x00907190
0x00907064 0xeb00005d BL 0x009071e0
0x00907068 0xe59f02e4 LDR r0, [r15, #0x2e4]
0x0090706c 0xe321f0d1 MSR CPSR_c, 0x000000d1
0x00907070 0xe240d000 SUB r13, r0, #0x0
0x00907074 0xe321f0d2 MSR CPSR_c, 0x000000d2
0x00907078 0xe240d000 SUB r13, r0, #0x0
0x0090707c 0xe321f0d7 MSR CPSR_c, 0x000000d7
所以很明显,0x907000 并不是入口点。 ELF 文件显示入口点是 0x907054,反汇编结果也倾向于支持这一点。 然而,使用 “resume 0x907054” 命令得到的结果是一样的(没有输出,执行 “halt” 后无响应)。 为了好玩,我尝试了 “resume 0x90703c”,期望 CPU 进入无限循环。但并没有,甚至这也不起作用。就好像它无视了我试图更改程序计数器的操作一样。 我错过了什么?我确信这一定是非常显而易见的事情…… 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Immanuel, 请联系您的 FAE 或市场部。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hello GraceSi, 我们正在为 i.MX6 开发测试软件,希望将 DDR3 压力测试工具中的部分测试用例集成到其中。请问我们能否获取 DDR_Stress_Tester_V1.0.3 工具的源代码? Immanuel 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
好的,我们没有 Fly-by 布局,但在 Excel 表格中写电平校准数据的红色单元格部分,我该填写什么内容呢? 此致 Marcel 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
不,我们没有采用 Fly-by 布局,我们采用的是T型布线…… 此致 Marcel 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
对于 Fly-by 布局,需要进行写入电平校准。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
如果我没有 Fly-by 布局配置,是否必须进行写入调平校准? 因为我之前遇到过以下情况: 是否要运行 DQS 选通、读写延迟校准?(y/n) 开始 DQS 选通校准…… . . . . . . . . . . . . . . 发现错误,无法获取合适值!!!! 所有值的 dram 测试均失败。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi, 我试图在 TechNexion 公司生产的 EDM-IMX6 开发板(以及一块 Wandboard 开发板)上运行压力测试工具,以尝试解决我们在使用这些开发板时遇到的一些间歇性内存损坏问题。 当我运行写电平校准时,MMDC_MPWLDECTRL1 的值总是返回不正确的值(见下文输出)。 我的问题是:这是压力测试校准工具的问题,还是表明电路板设计存在问题? 供您参考,我无法让这块主板通过475MHz的压力测试(每次几乎立即失败),尽管在其他频率下(无论是更高还是更低的频率)都能通过。 谢谢! Tony 您是否想运行写入调平校准?(是/否) 请在初始化脚本中输入MR1的值 这将在写入调平校准后重新编程到 MR1 中 以 4 位十六进制值输入,例如 0004,然后按回车键 0004 您输入的是:0x0004 开始写入电平校准 写入电平校准完成 MMDC_MPWLDECTRL0 ch0 写入级别校准后:0x00130017 MMDC_MPWLDECTRL1 ch0 写入级别校准后:0x0017000E MMDC_MPWLDECTRL0 ch1 写入级别校准后:0x000F001D MMDC_MPWLDECTRL1 ch1 写入级别校准后:0x017A0013 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
是否有适用于 Vybrid 处理器的该工具或其替代工具? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2 结果发现代码本身没问题,只是 ARM DSTREAM 调试器会自行引发问题。 真奇怪。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2 Hi Grace, 我猜测这个压力测试是在 OCRAM 中运行的,对吗? 如果是这样,你能告诉我从 OCRAM 代码访问 DDR RAM 的关键是什么吗? 我每次尝试都会崩溃——调试器完全卡住,不提供任何数据。 例如,我是否还需要在链接脚本中为 DDR 保留一些挂钩? 我正在构建一个精简版的平台 SDK,所以我认为 DCD 及所有相关设置都应该是正确的。除了这个外部 DDR 访问问题外,其他运行都正常。 只是想找一些关于一个令人困惑的问题的提示。谢谢。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Patrick, 如果你只是想进行压力测试,可以跳过校准步骤。 写入校平校准得到一致的值,这是正常现象。要了解写入校平,你可以参考参考手册中 45.11.6 节“写入校平校准”的内容。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
感谢 Grace 的快速回复。 嗯,我明白压力测试程序的结果需要用来更新 DDR3 初始化流程。但实际上,我问的问题并非完全如此,因为我不使用初始化脚本,而只使用 U-BOOT(我没有 JTAG 访问权限,所以通过 TFTP 上传你的二进制文件)。以下是我的操作步骤: - 我拥有针对我的开发板定制的 U-BOOT - 开发板从 SD 卡启动 - 我进入 U-BOOT 命令行提示符 - 我通过 tftp 将 DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip 二进制程序(在我的情况下是 DL)传输到 RAM(0x907000,正如您在上文中提到的) - 跳转到该地址执行 - 获取我之前提到的那些值 我注意到的是,无论我在 U-BOOT 文件 (flash_header.s)中写入 MDMISC 的值为多少(比如 0x00001740 或0x00011740),写均衡过程中的值总是高于 0x2F,所以我想知道 DDR 压力测试二进制程序是否在自行启动测试之前修改了我在 flash_header.s 中写入的 MDMISC 值,这或许可以解释为什么我总是得到相同的值。 顺祝商祺! Patrick. 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hello, 有人能给我解释一下如何通过 U-Boot 加载 DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip 的二进制文件吗?有没有从 SD 卡加载该文件的用户指南?我想运行 DDR 压力测试以获取最佳的 DDR 配置。 任何帮助都将不胜感激。 Yijun 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
在《i.MX6 DDR 压力测试工具用户指南》第 5 章常见问题解答中: 运行校准后,我是否需要更新 DDR 初始化脚本? 是的。校准结果仅在测试期间存储在 MMDC 寄存器中。建议 更新初始化脚本,并在不同开发板上重新运行测试, 以确认 DDR 性能,并确保 MMDC 寄存器设置已正确移植到固件中。 移植到固件中。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace, 根据我的设计,我运行了您提供的 DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip 文件,该程序在我这里正常工作(仅用于确认从 U-BOOT 获取的初始值,因为我复制了 Sabre SD 板的布局),但观察到所有 SW 电平值均高于 0x2F: MMDC_MPWLDECTRL0 ch0 写入级别校准后:0x0046004B MMDC_MPWLDECTRL1 ch0 写入级别校准后:0x003C0043 MMDC_MPWLDECTRL0 ch1 写入级别校准后:0x002B002B MMDC_MPWLDECTRL1 ch1 写入级别校准后:0x0029003F 如文档中所告知的,我在 U-BOOT 文件中修改了 MDMISC 值(从 0x00001740 改为 0x00011740),但没有任何变化。请问你们的程序是否会用自己的值覆盖我设置的值?如果是的话,你们使用的值是多少?另外,我们能否保留当前的写入电平校准结果? Patrick. 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Ariel, 要在 U-Boot 中运行 DDR 压力测试,必须禁用 U-Boot 中的 CONFIG_SPLASH_SCREEN。 因为在 DDR 压力测试进入自刷新模式时,DRAM 的访问将被阻塞。如果 u-boot 中的启动画面功能已启用,IPU( 将持续访问 DRAM,这将导致系统挂起。 请确保在 u-boot 中没有正在运行的 DMA 操作来访问 DRAM。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,Grace!你还好吗?我使用了来自 “DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip” 的二进制文件,但在程序校准内存时出现卡死现象。我使用的是 Freescale Sabre SD 开发板。 -----> MX6Q SABRESD U-Boot > go 0x907000 ## Starting application at 0x00907000 ... ****************************** MX6DQ 的 DDR压力测试 (1.0.2) Build: Dec 10 2013, 14:26:05 Freescale Semiconductor, Inc. ****************************** =======DDR 配置========== BOOT_CFG3[5-4]:0x00,单DDR通道。 DDR类型是DDR3 数据宽度:64,存储体数:8 行大小:14,列大小:10 使用片选信号 CSD0 每个芯片选择的密度:1024MB ================================== 你希望以哪个 ARM 核心速度运行? Type 0 for 650MHz, 1 for 800MHz, 2 for 1GHz, 3 for 1.2GHz ARM设置为800MHz 请选择板子上每个片选信号对应的 DDR 密度(单位:字节) 输入 0 表示 2GB;输入 1 表示 1GB;输入 2 表示 512MB;输入 3 表示 256MB;输入 4 表示 128MB;输入 5 表示 64MB;输入 6 表示 32MB 对于支持的最大密度 (4GB),我们最多只能访问 3.75GB。 输入 9 来选择此项 选择的 DDR 密度 (MB):1024 校准将在 DDR 频率 528MHz 下运行。输入‘y’以继续。 如果您想以其他 DDR 频率运行。输入 “n” <----- 您有什么建议吗? 谢谢!! Ariel. 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我成功让压力测试从 u-boot 启动运行起来了。 我必须确保 IPU 没有被初始化。 但现在我在校准测试上卡住了,出现错误提示:发现错误,无法获取合适值!!!! 您有什么建议吗? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace. 对我来说,它之后就挂起了; 校准将在 DDR 频率 528MHz 下运行。输入‘y’以继续。 如果您想以其他 DDR 频率运行。输入 “n” 这会不会是因为我本应禁用但未禁用 CONFIG_SPLASH_SCREEN 配置项导致的? 或者,在启动 U-Boot时,我们是否还需要根据 .inc 文件(来自 Excel 文档的参数)初始化寄存器? 如果我需要初始化寄存器,在运行压力测试之前,我是否应该从 Excel 文档中初始化所有寄存器?(我注意到有些被初始化为2,例如 0x21b0004) 谢谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Michael, 该 Excel 表格生成的是用于 JTAG 模式的 .inc 文件。对于 USB 下载模式,你需要注释掉 “setmem /16 0x020bc000 = 0x30” 这一行。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我的情况和你一样。当我用 Excel 表格自动为我的开发板设置生成 .inc 文件时,里面有一行代码: //============================================================================= // 禁用 WDOG //============================================================================= setmem /16 0x020bc000 = 0x30 我注意到,在一个示例文件中,这行代码是被注释掉的。 当我把它注释掉后,测试似乎运行得很好。我只是想知道这行代码原本的作用是什么,以及为什么压力测试工具会报错。如果我没理解错的话,它应该只是禁用看门狗定时器,但我不太确定。我应该把这行代码注释掉吗? 谢谢 Michael 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,Grace, 感谢你的回复。 在我使用的搭载 iMX6 solo(非 solo-lite)处理器的开发板上,调试控制台设置在 CSI0_DAT10和CSI0_DAT11 上;因此,它与 .bin 格式的测试不兼容…… 我尝试使用了 USB 版本的测试,但在我的电脑上,我遇到了与 Gevorg Sargsyan 在 2014 年 1 月 22 日 21:47 提到的一样的问题…… 毫无办法…… 此致 Andrea 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您可以检查客户板的UART是否与6SL EVK板相同。 /* UART1 TXD */ writel(ALT0, IOMUXC_SW_MUX_CTL_PAD_UART1_TXD); /* UART1 RXD */ writel(ALT0, IOMUXC_SW_MUX_CTL_PAD_UART1_RXD); // 菊链设置 writel(0x0, IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT); 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,Grace, 我使用了 “DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip” 中包含的二进制文件,来对我定制的 mx6 开发板上的 DDR3 内存进行校准和测试。 对于我的四核开发板,我将入口点设置为 0x907000,程序正确执行了。 对于我的单核开发板,我设置了相同的入口点,但程序无法运行…… 请问,你能帮帮我吗? 非常感谢。 此致 Andrea 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,Tim 在《i.MX 6Dual/6Quad 参考手册》的第 2 章“内存映射”中,你可以看到有效的 MMDC 地址范围是从 0x021B0000 到 0x021B7FFF。所以,你给出的地址 0x020bc000 超出了这个范围。 021B_0000 021B_3FFF MMDC (port 0) 16 KB 021B_4000 021B_7FFF MMDC (port 1) 16 KB 您可以联系您的FAE或市场部以获取源代码。 此致, Grace 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这可能是由硬件布局引起的。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace, 感谢您的回复。 不幸的是,我已按照如下方式将 MMDCx_MDMISC 寄存器中的 WALAT 位设置为 “1”。 setmem /32 0x021b0018 = 0x00011740 // MMDC0_MDMISC 还有其他需要我检查的地方吗? 或者这个问题是硬件布局导致的? 顺祝商祺! Mar 17, 2014, Satoshi Shimoda 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
请在初始化脚本中将MMDCx_MDMISC寄存器的WALAT值设置为1,然后重新运行DDR_Stress_Tester。 Grace 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
格蕾丝, 我使用该工具的 v1.02 版本时运气不佳。通过此处提供的 i.Mx6DQSDL DDR3 脚本辅助工具(电子表格)生成的测试脚本,一开始会执行 “setmem /16 0x020bc000 = 0x30” 来禁用看门狗,但压力测试工具会对此报错: .\DDR_Stress_Tester_V1.0.2\Binary>DDR_Stress_Tester.exe -t mx6x -df mt41k128m16-125_1066mhz_4x128x16.inc MX6DQ 已打开。 DCD 地址 0x020bc000 超出有效范围。 地址超出有效范围。 我注意到,在一些提供的示例脚本中,这条特定的写入指令已被注释掉,因此我也在我的脚本中将其注释掉,工具确实能继续运行了,但似乎在 30 秒内就会卡死。这给我的感觉就像是开发板可能因看门狗超时而复位了? 工具并没有卡在某个特定的位置……它只是在 30 秒内就卡死了。我手速不够快,无法在输入 MR1 进行写入电平校准测试之前完成操作。 您有什么想法吗? 这个工具的源代码在某个地方有提供吗? 这看起来是个很棒的工具,但令人遗憾的是,它没有附带源代码,这样人们就无法解决上述的一些问题了。 谢谢! Tim KevinWong arpan_chakravarty 合作伙伴 i.MX6 Gateworks 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi 我在我们的定制板上使用了这个压力测试。 然而,输出了以下错误日志。 ===== 是否要运行 DQS 选通、读写延迟校准?(y/n) 开始 DQS 选通校准…… . . . . . . . . . . . . . . 发现错误,无法获取合适值!!!! 所有值的 dram 测试均失败。 ===== 你能告诉我这种情况下是哪里出问题了吗? (例如:电路设计太差、.inc 文件中的设置值不正确,等等……) 顺祝商祺! 2014 年 3 月 14 日 Satoshi Shimoda 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Grace - 您能告诉我 1.0.2 版本的源代码在内部的什么位置吗?我们之前收到的链接指向的是1.0版本,并没有更高版本。谢谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这工具很棒,在我的 Nitrogen6 开发板上运行良好!我想知道未来版本是否有可能,比如,在压力测试期间读取 CPU 的温度? 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi, 主机 USB 驱动现在支持 64 位版本的 Windows 吗? 您好 Andreas 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi. 我正在尝试在SabreSD Board上运行该工具。 启动工具后,它卡在了 “Downloading image to IRAM ok” 这一步。 此时,设备管理器中的 HID 设备消失了,出现了一个 USB 输入设备,并显示 “Failed to start (code 10)”。 一段时间后,Stress Tool 超时并退出。 我使用的是 64 位 Windows 7 SP1 系统。 您有什么想法吗? 谢谢。 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
要在 U-Boot 中运行 DDR 压力测试,必须禁用 U-Boot 中的 CONFIG_SPLASH_SCREEN。 因为在 DDR 压力测试进入自刷新模式时,DRAM 的访问将被阻塞。如果 u-boot 中的启动画面功能已启用,IPU( 将持续访问 DRAM,这将导致系统挂起。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,Thierry: 我们不希望在此处发布针对特定客户的二进制文件。请联系您的FAE并将您的请求发送至FSL。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
你好,我正在使用的开发板既没有 USB OTG 功能,也没有使用 UART 端口 1,而是使用了端口 3 和端口 4。 有没有办法访问源代码或获取使用其他 UART 端口的 ELF 文件? 谢谢! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
谢谢您,Grace。 今天真是我的幸运日,因为我一直在使用DAT10/11作为SPI2,但这两个焊盘上有测试点,所以我暂时用它们来测试UART。 它正常工作(o;不需要提交FSL CRM请求。 非常感谢您! Brent 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好 Brent,MX6Q SabraSD 板的 tx/rx 引脚是 CSI0_DAT10 和 CSI0_DAT11。 /* UART1 TXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT10); /* UART1 RXD */ writel(ALT3, IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT11); 我们理解客户可能会使用不同的RX/TX引脚进行UART通信,这就是为什么我们只发布了使用USB端口进行用户输入和输出的DDR压力测试工具,以便于通用发布。 请将您的请求提交至FSL CRM系统。 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Grace... 它加载良好,我当然可以与u-boot进行交互,但无法与此应用程序进行交互。 我在 u-boot 中的 rx/tx 设置如下: /* UART1 TXD */ mxc_iomux_v3_setup_pad(MX6Q_PAD_SD3_DAT6__UART1_RXD); /* UART1 RXD */ mxc_iomux_v3_setup_pad(MX6Q_PAD_SD3_DAT7__UART1_TXD); 这个压力测试工具是开源的吗? ****************************** DDR Stress Test (1.0.1) for MX6DQ Build: Oct 21 2013, 14:05:09 Freescale Semiconductor, Inc. ***************************** =======DDR 配置========== BOOT_CFG3[5-4]: 0x00, 单 DDR 通道。 DDR 类型为 DDR3 数据位宽:64, bank 数量:8 行大小:15, 列大小:10 使用片选信号 CSD0 每个片选信号的密度:2048MB ================================== 你希望以哪个 ARM 核心速度运行? 输入 0 选择 650MHz,输入 1 选择 800MHz,输入 2 选择1GHz,输入 3 选择 1.2GHz --> 系统在此处对我的输入没有响应。 谢谢! Brent 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
如果有人需要,入口点是 0x907000。 (o: 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
谢谢你,Grace,这太棒了!非常感谢你的帮助!我会反馈使用效果的。 祝好 Brent 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hi Brent, DDR_Stress_Tester_V1.0.1.zip 中的镜像无法通过 SD 卡加载。我已附上镜像 DDR_Stress_Tester_V1.0.1_UART1_for_SDboot&JTAG.zip。 压缩包中的 bin 文件可通过 U-Boot 加载,elf 文件则用于 JTAG 加载。请注意,当通过 U-Boot 加载镜像时,DDR 由 U-Boot 初始化。 此致, 优雅 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hello, 我的自定义主板上没有USB OTG接口,是否可以通过SD卡和U-Boot直接加载这个压力测试应用程序? 谢谢! Brent 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我们已经成功运行了压力测试工具。要是给它输入了错误的文件,这工具可“不买账” 要是给它输入了错误的文件,这工具可“不买账” 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Hello, 我尝试运行 DDR3 压力测试工具,但该应用程序在打印出下面一行后就崩溃了: MX6DQ 已打开。 我们使用的是i.MX6D7CVT08AC(工业级,800MHz)处理器,电脑运行的是 Windows 7 家庭高级版 SP1 64 位系统。 在 Linux 系统下,我能够运行 imx_usb_loader 应用程序并下载一个镜像,该镜像可以切换连接到 GPIO2[4] 的 LED 灯的状态。 此致 马蒂亚斯·曼 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
程序现在已经正常运行了,非常感谢您! 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
您好,Emil Myhrman, 请使用 1.0.1 版本。 对于 i.MX6DQ,DDR 映射起始地址的配置请参照《i.MX 6 双核/四核应用参考手册》中的第 2.3 章 “DDR 映射到 MMDC 控制器端口”。 Grace 回复:i.MX6 DDR 压力测试工具 V1.0.3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
我们使用的是 i.Mx6DL 芯片和单通道 LPDDR2 内存,起始地址为 0x10000000(DDR 内存映射配置 = “00”)。此版本是否会针对我们的配置选择正确的地址(即不是 0x80000000)? 我之所以这么问,是因为该工具会自动显示 “CHANNEL0 is selected”。而在之前的 0.042 版本中,我们必须手动选择通道1,才能“哄骗”压力测试工具使用起始地址 0x10000000。
查看全文