DDR test Tool for imx9
- 1.安装软件
- 2.新建工程
- 3.配置DDR相关设置
- 4.生成代码
- 5.DDR测试
- 5.1验证基本功能:
- 5.2 Optimization test(优化测试)
- 5.3 VTSA(虚拟眼图测试)测试
- 5.4 DDR Stress test 压力测试
- 6.uboot中添加生成的代码
- 7.kernel中
- 8.常见问题
- 9.总结
1.安装软件
1.1在官网下载软件
Config Tools for i.MX Applications Processors | NXP Semiconductors
1.2 安装在win11上面
直接双击点点
2.新建工程
1.打开 “Config Tools for i.MX” 软件。
-
选择“Create a new standalone configuration for processor, board, or kit”,点击“Next”。
-
从“Processors”选项卡中选择“MIMX9352xxxxM“处理器。如有必要,可以选择不同的处理器,修改配置工程名称,选择对应封装等。点击”Finish“。
-
为了在工程中使能DDR工具,确保如下“DDR工具“处于打开状态
至此工程建立完成。用户可以点击”File->Save“保存工程配置,这样下次在使用时,在步骤2中可以点击“Open an existing configuration”直接打开保存的工程文件,而无需重新建立工程
3.配置DDR相关设置
i.MX93支持高达3个“Software Fast Frequency Change (SWFFC) setpoints”,1个“Hardware Fast Frequency Change (HWFFC -fixed to half the top selected frequency)”。这里修改“Frequency setpoints selections”为3,将对应生成3套DDR工作频点参数。
LPDDR4和LPDDR4X主要差异是DQ I/O电平从1.1V降低为0.6V。您需要仔细检查DRAM的datasheet手册,以确定所用的DRAM芯片只支持LPDDR4还是LPDDR4/LPDDR4X都支持。
DQ ODT 和驱动强度配置
工具显示的默认的ODT/driven strength,是开发板的仿真结果
如果设置的欧姆值过大会导致,测试的时候读写不通过
DQ Pin Mapping 配置
EVK板的原理图如下:
4.生成代码
直接点击代码预览,会自动生成代码
使用DDR工具导出向导将代码预览中的文件保存到磁盘上。导出来的文件“lpddr4x_timing.c“,可以覆盖u-boot目录下的原来的文件“board\freescale\imx93_evk\lpddr4x_timing.c”,然后就可以重新编译u-boot
5.DDR测试
DDR测试有4中场景
四项测试验证项目
• 在之前的DDR stress test工具里,只提供了两种功能:DDR calibration和stress test。
• 在新的Config tool 工具里,提供了更多的测试项目,便于客户debug DDR,共四项。
如下图:
连接开发板和设置启动
5.1验证基本功能:
进行固件初始化测试以及基本读写测试,包括读写比较、走1、走0等测试,
选择对应的测试场景,测试项,连接串口,点解开始即可
5.2 Optimization test(优化测试)
ODT(On-Die Termination)指的是内存芯片内部的终端电阻,用于减少信号反射和提高信号完整性
DQ ODT和驱动器强度测试,扫描所有的DQ IO配置组合,在每一个配置下面测试pass还是failed,最后生成读/写驱动强度与ODT配置映射图。
“Vref for DQ optimization”和“Vref for CA optimization “测试用于确定最佳的PHY和DRAM的Vref设置。
绿色格子表示通过测试。 可以选择一个居中的绿色格子,右键点击“Apply current selection in DDR configuration“,将相应的配置更新到配置文件和C源代码中。
5.3 VTSA(虚拟眼图测试)测试
Vtsa: Virtual Timing Signal Analysis.
• 通过运行一系列写/读操作来生成写入和读取数据眼图。(区别于用高速示波器来进行手动物理 TSA (pTSA)测量)。
• 使用DDR控制器本身来测试Margin,通过写入裕量(Diag Write Margin)/诊断读取裕量(Diag Read Margin)测试为每个DQ通道绘制虚拟数据眼图。
• 这个工具和实际的眼图结果是有差异的,仅供参考使用
我们可以借助vTSA测试,来协助选择最佳的ODT和驱动强度。可以通过如下两步来实现。
-
首先运行优化测试中的“Read/Write ODT and Driver”,获取到哪些ODT和驱动强度组合可以工作。
-
设置不同的Read/Write ODT and Driver数值,运行并观测和比较本节的虚拟数据眼图。最终选择最佳的ODT和驱动强度。
眼图的关键特性包括:
眼睛开口:眼图中的开口越大,意味着信号的噪声容忍度越高,数据传输越可靠。
抖动:眼图中的边缘变化显示了信号抖动情况。抖动越小,信号越稳定。
幅度噪声:眼图的上沿和下沿的波动显示了幅度噪声的大小
5.4 DDR Stress test 压力测试
压力测试用来确定DDR系统稳定性。您可以选择单次测试,也可以选择长时间测试(Run Forever)。
压测内容包过:
Stress the DDR memory by performing:
Data is address test
Row hop read test
SSN memcpy x32 test
Byte-wise SSN memcpy x32 test
Memcpy pseudo randon data pattern test
IRAM to DDR x32 test
IRAM to DDR v2 x32 test
6.uboot中添加生成的代码
-
Uboot部分的DDR参数修改,和之前的i.MX8系列类似。把Config tool里的ddr_timing.c里的 内容copy出来,copy到uboot里的如下文件. • /u-boot-imx/2023.04-r0/git/board/freescale/imx93_evk$ vi l
pddr4x_timing.c
-
i.MX93EVK是2GB LPDDR4X,如果是1GB和512MB,分别改动如下:
u-boot-imx/2023.04-r0/git/include/configs$ vi imx93_evk.h
#define CFG_SYS_SDRAM_BASE 0x80000000
#define PHYS_SDRAM 0x80000000
-#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+#define PHYS_SDRAM_SIZE 0x40000000 /* 1GB DDR */
7.kernel中
i.MX93EVK用的是2GB LPDDR4X,如果用1GB/512MB LPDDR4,需要注意DDR 的大小和memory map地址有关。
• 根据Memory map, 0xC000_0000 开始的是1GB的DRAM空间, 0xA000_0000开始 的是512MB的DRAM空间。
• i.MX8系列里有GPU/CMA的预留空间。i.MX93里,除了CMA,还有一些和M核的通 信预留了空间。改动的目的就是让这些固定的分配的地址在有效的内存空间里。也就是说,1GB的话起始地址必须得在 offset 1GB内
1GB LDDR4/4X 的设备树改动- ethosu 地址空间
i.MX93上,NPU是通过M核访问的,所以预留了一段DRAM内存。不管是否用NPU,这里都 要改ethosu_mem,否则启动kernel可能会出错。要改到1GB之内的地址空间,并且适当减小 小内存分配大小。
8.常见问题
8.1测试失败
8.2 选不同型号的DDR
9.总结
• Config tool是NXP新的DDR脚本生成/压力测试/IOMUX分配工具,i.MX93必须要用 此工具。其他i.MX芯片也可以用此工具。
• Config tool提供了更多的DDR测试项目,包括测试ODT/驱动能力并输出映射图、生 成DDR虚拟眼图等,便于从多方面测试DDR状况。
• 推荐用Config tool调试ODT/驱动能力等参数,同样适用于所有i.MX芯片,做为一种 debug手段做参考。实际板子的理论参数,应该参照板子的仿真结果,或者DDR信 号的实测结果。
• i.MX93使用1GB/512MB DDR,在kernel的dts的修改要注意, 确保所有固定分配的 地址在有效的内存空间里。