当前位置: 首页 > article >正文

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” 软件。

  1. 选择“Create a new standalone configuration for processor, board, or kit”,点击“Next”。

  2. 从“Processors”选项卡中选择“MIMX9352xxxxM“处理器。如有必要,可以选择不同的处理器,修改配置工程名称,选择对应封装等。点击”Finish“。

  3. 为了在工程中使能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板的原理图如下:
 

        左边表示控制器,右边表示DRAM标题

                                 

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和驱动强度。可以通过如下两步来实现。

  1. 首先运行优化测试中的“Read/Write ODT and Driver”,获取到哪些ODT和驱动强度组合可以工作。

  2. 设置不同的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中添加生成的代码

  1. Uboot部分的DDR参数修改,和之前的i.MX8系列类似。把Config tool里的ddr_timing.c里的 内容copy出来,copy到uboot里的如下文件. • /u-boot-imx/2023.04-r0/git/board/freescale/imx93_evk$ vi lpddr4x_timing.c

  2. 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的修改要注意, 确保所有固定分配的 地址在有效的内存空间里。


http://www.kler.cn/a/283532.html

相关文章:

  • 相机光学(四十二)——sony的HDR技术
  • MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
  • 拦截器实现http请求访问本地图片
  • rockylinux 8安装 gcc11.2
  • Kubernetes在容器编排中的应用
  • Stored procedures in PostgreSQL
  • [Android常见View的用法] RecyleView基本用法
  • 群晖7.2.1 半洗白后安装AME
  • Python(R)均方根误差平均绝对误差导图
  • helm学习第三篇--结合 springboot 单做
  • 深度强化学习算法(六)(附带MATLAB程序)
  • 正弦波振荡器工作原理及频率稳定性条件
  • 【JVM】OOM与调优(二)
  • C++ 设计模式——代理模式
  • 桥接模式-多类型登录方式的思考
  • C语言入门基础知识(持续更新中)
  • 预处理详解(二)
  • vscode链接到远程
  • 企业微信dll,最新版dll
  • 什么是数据库 DevOps?
  • Java虚拟机(JVM)内存管理
  • 基于Spring的单点登录SSO实现(redis+JWT+SpringSecurity)
  • Windows bat脚本学习四(字符串操作)
  • 时序预测 | 基于VMD-SSA-LSSVM+LSTM多变量时间序列预测模型(Matlab)
  • 数据库视图的使用
  • Linux - 深入探讨 Linux `ls` 命令:一个全面的技术指南