i.MX RT的DRAM测试工具使用指南
一、简介
i.MX RT DRAM Tester是一款用来验证i.MX RT平台SDRAM稳定性的应用软件。它运行在Windows主机环境,通过USB或者UART线与i.MX RT目标板建立连接,完成SDRAM初始化脚本的分析, 编译和下载工作,同时加载测试程序到i.MX RT的SRAM空间并启动执行。整个过程中,i.MX RT平台必须被设置在“Serial Download”模式下。
本DRAM工具可以帮助评估SDRAM模块硬件信号完整性和软件配置的正确性,以及压力测试下的工作稳定性。工具本身仅仅需要i.MX RT的最小硬件系统支持,且无需依赖任何其他软件环境。
二、文件架构和主机环境
i.MX RT DRAM Tester不需要安装,解压后可直接运行。其文件架构如下:
※ ./bin: i.MX RT不同平台的二进制可执行测试文件 ※ ./log: 测试日志文件夹 ※ ./script: 目标平台SDRAM 初始化脚本文件 ※ DRAM_Tester.exe: DRAM Tester可执行程序 ※ MXRT_DRAM_Tool_User_Guide.docx: 用户手册 ※ readme.txt: 此文件包含DRAM Tester工具的简单描述和版本信息
建议运行的主机环境: ※ 2.0 GHz CPU, 1GB RAM以上配置. ※ Windows® XP w/Service Pack 2及更新版本
三、运行DRAMTester
DRAM Tester工具包含两大部分: ※ Windows主机侧应用程序 ※ 和目标平台侧脚本与测试程序 它们相互配合以完成对SDRAM的压力测试。
请参照以下步骤运行使用DRAM Tester: ① 连接i.MX RT目标板卡与Windows上位机 ※ 设置i.MX RT 目标板卡为“Serial Download”模式. ※ 连接目标板卡调试串口(UART)到测试上位机. ※ DRAM Tester工具支持UART调试口下载功能,所以整个测试过程,上位机仅仅需要连接目标板调试串口。另外, DRAM Tester也可以通过目标板USB OTG口下载测试脚本和程序。DRAM Tester上位机程序将自动检测并使用USB或者UART口来完成测试。
② 双击运行DRAM_Tester.exe应用程序
Debug UART - UART 下拉菜单: 显示Windows主机所有可用的UART串口 - Search 按键: 搜索Windows主机可用UART 口并且在UART下拉菜单中显示 - Connect 按键: 连接在UART下拉菜单中选择的串口
Download Option - Load DRAM Script: 从Windows主机中选择相应的SDRAM初始化脚本,如果不需要则不操作 - Target 下拉菜单: 选择对应的i.MX RT平台 - Clock 下拉菜单: 展示可用的ARM核工作频率. 当前仅作展示,以后版本可能用于一些高级特性 - DRAM 下拉菜单:展示目标平台的DRAM器件类型. 当前仅作展示,以后版本可能用于一些高级特性 - Density 下拉菜单: 展示/选择目标平台的最大SDRAM 存储空间大小。“Test Size” 的值不能高于Density的值 注释: Clock、DRAM和Density的值默认显示为i.MX RT平台对应的EVKB板卡的设置
Test Option - Start Address(Hex): 将要测试的内存区域的起始地址,其值必须合法并以16进制方式输入 - Test Size:计划测试的内存区域的大小,以字节(Byte)为单位计数,且不能大于目标平台的总内存大小 - Test Freq(MHz): 压力测试时SDRAM芯片的工作频率。当前版本仅展示默认值,后续高级功能中可以指定频率 - Loop Number:压力测试循环次数,“0”表示无限循环测试 - Stop when Fail 复选框: 如果勾选,发生测试错误时目标板上的测试程序会停止运行并打印出错误点,反之测试程序会打印出错误点,然后继续运行 - Enable Cache 复选框: 如果勾选,i.MX RT的ICache和DCache会被使能,反之则会被关闭。一般在做SDRAM压力测试时不建议使能Cache 注释: Start Address(Hex)、Test Size和Test Freq(MHz)的值默认为i.MX RT平台对应的EVKB板卡的设置,Loop Number的默认值为 “1”
③ 点击Search按钮并选择正确的UART端口,之后点击Connect按钮
④ 根据目标板加载正确的SDRAM芯片初始化脚本,并选择正确的Target平台
⑤ 根据需要设置测试选项数据,或者直接使用 i.MX RT EVKB板卡的默认数据
⑥ 点击Run按钮开始测试 ※ 点击Abort将终止正在运行的压力测试 ※ DRAM_Tester应用界面的底部窗口会显示配置信息和目标板卡上的实时测试信息
⑦ 检查测试结果并保存测试日志 ※ 信息窗口中可以看到详细的测试流程和结果 ※ 点击Save Result按钮可以保存信息窗口中的所有信息并默认保存在log文件夹中
四、SDRAM初始化脚本
文件夹script包含了一些可用的SEMC模块初始化脚本,这些脚本是基于i.MX RT EVKB开发板的配置而写的。 DRAM_Tester应用程序将会解析并编译脚本为DCD数据结构,并将DCD写到平台内部SRAM空间。i.MX RT的BootRom将会根据DCD数据执行SEMC的初始化流程,然后再启动测试代码进行压力测试。所以可以通过修改脚本文件,非常方便的针对不同的SDRAM芯片,测试不同的SEMC配置参数。
下边是初始化脚本的一部分示例代码: - # Config SDR Controller Registers/
- memory set 0x402F0000 32 0x10000004 # MCR
- memory set 0x402F0008 32 0x00030524 # BMCR0
- memory set 0x402F000C 32 0x06030524 # BMCR1
- memory set 0x402F0010 32 0x8000001B # BR0, 32MB
-
- memory set 0x402F0040 32 0x00000F31 # SDRAMCR0
- memory set 0x402F0044 32 0x00662A22 # SDRAMCR1
- memory set 0x402F0048 32 0x000A0A0A # SDRAMCR2
- memory set 0x402F004C 32 0x08080A00 # SDRAMCR3
- memory set 0x402F0090 32 0x80000000 # IPCR0
- memory set 0x402F0094 32 0x00000002 # IPCR1
- memory set 0x402F0098 32 0x00000000 # IPCR2
- ……
复制代码
可以在脚本文件的头部位置找到脚本语句的语法解释: - # DCD command:
- # CMD_WRITE_DATA: memory set ADDR BITWIDTH VALUE : *ADDR = VALUE
- # CMD_SET_BIT: memory setbit ADDR BITWIDTH VALUE : *ADDR = *ADDR | VALUE
- # CMD_CLR_BIT: memory clrbit ADDR BITWIDTH VALUE : *ADDR = *ADDR &~ VALUE
- # CMD_CHECK_BIT_SET: memory chkbit1 ADDR BITWIDTH VALUE : while((*ADDR & VALUE) != VALUE){}
- # CMD_CHECK_BIT_CLR: memory chkbit0 ADDR BITWIDTH VALUE : while((*ADDR & VALUE) != 0){}
复制代码
通过修改初始化脚本,运行压力测试并检查测试结果,可以轻松找到适用任意i.MX RT平台和SDRAM芯片的SEMC模块配置参数,同时也可以验证SDRAM模块的硬件信号的完整性。
五、目标平台压力测试程序
文件夹bin包含了一些可执行二进制文件,这些二进制文件是适用于各个i.MX RT平台的内存压力测试程序。 DRAM_Tester应用程序会根据目标测试板卡选择相应的二进制文件,下载到i.MX RT处理器的SRAM空间,然后启动此二进制测试程序完成相应的内存压力测试。目前支持RT1050、RT1060和RT1020平台。 目标平台压力测试程序基于i.MX RT最小系统设计编译,并且仅仅使用MCU内部资源,所以它们能被轻松的运用到任何使用i.MX RT的目标板上,包括客户自定义的系统,来协助验证任何SDRAM器件的访问稳定性。 另外,压力测试程序运行在i.MX RT处理器的内部SRAM空间,不占用任何外部SDRAM资源,所以可以对外部SDRAM全空间进行压力测试。
目标平台压力测试程序基于Linux开放源代码应用程序 “memtester”而设计,使其能运行在i.MX RT这个MCU平台上。“memtester”是基于GNU General Public License version 2许可协议的一个开放源代码工程,它能有效的对内存系统进行压力测试,帮助发现非连续性复现的和不确定性的内存访问错误。但是问题的本质依然需要硬件,软件开发人员从电路设计,信号完整性,参数配置等等角度去分析定位。测试程序仅仅判断SDRAM访问是否有问题。
压力测试程序通过对目标系统SDRAM空间进行如下的测试用例,来判断测试是否通过: - Random Value - Compare XOR - Compare SUB - Compare MUL - Compare DIV - Compare OR - Compare AND - Sequential Increment - Solid Bits - Block Sequential - Checkerboard - Bit Spread - Bit Flip - Walking Ones - Walking Zeroes - 8-bit Writes - 16-bit Writes 来源: 痞子衡嵌入式
|