查看: 1491|回复: 0

[分享] i.MX RT的DRAM测试工具使用指南

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32032
    最后登录
    2024-4-26
    发表于 2021-3-31 14:31:06 | 显示全部楼层 |阅读模式
    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不需要安装,解压后可直接运行。其文件架构如下:

    1.1.png

    ※       ./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口来完成测试。

    1.2.jpg


    ② 双击运行DRAM_Tester.exe应用程序
    1.3.jpg

    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、DRAMDensity的值默认显示为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按钮
    1.4.png


    ④ 根据目标板加载正确的SDRAM芯片初始化脚本,并选择正确的Target平台
    1.5.png


    ⑤ 根据需要设置测试选项数据,或者直接使用 i.MX RT EVKB板卡的默认数据
    1.6.png


    ⑥ 点击Run按钮开始测试
    1.7.jpg
    ※       点击Abort将终止正在运行的压力测试
    ※       DRAM_Tester应用界面的底部窗口会显示配置信息和目标板卡上的实时测试信息


    ⑦ 检查测试结果并保存测试日志
    1.8.jpg
    ※       信息窗口中可以看到详细的测试流程和结果
    ※       点击Save Result按钮可以保存信息窗口中的所有信息并默认保存在log文件夹中


    四、SDRAM初始化脚本

    文件夹script包含了一些可用的SEMC模块初始化脚本,这些脚本是基于i.MX RT EVKB开发板的配置而写的。
    DRAM_Tester应用程序将会解析并编译脚本为DCD数据结构,并将DCD写到平台内部SRAM空间。i.MX RT的BootRom将会根据DCD数据执行SEMC的初始化流程,然后再启动测试代码进行压力测试。所以可以通过修改脚本文件,非常方便的针对不同的SDRAM芯片,测试不同的SEMC配置参数。
    1.9.png

    下边是初始化脚本的一部分示例代码:
    1. # Config SDR Controller Registers/
    2. memory set 0x402F0000 32 0x10000004 # MCR
    3. memory set 0x402F0008 32 0x00030524 # BMCR0
    4. memory set 0x402F000C 32 0x06030524 # BMCR1
    5. memory set 0x402F0010 32 0x8000001B # BR0, 32MB

    6. memory set 0x402F0040 32 0x00000F31 # SDRAMCR0
    7. memory set 0x402F0044 32 0x00662A22 # SDRAMCR1
    8. memory set 0x402F0048 32 0x000A0A0A # SDRAMCR2
    9. memory set 0x402F004C 32 0x08080A00 # SDRAMCR3

    10. memory set 0x402F0090 32 0x80000000 # IPCR0
    11. memory set 0x402F0094 32 0x00000002 # IPCR1
    12. memory set 0x402F0098 32 0x00000000 # IPCR2
    13. ……
    复制代码

    可以在脚本文件的头部位置找到脚本语句的语法解释:
    1. # DCD command:
    2. # CMD_WRITE_DATA: memory set ADDR BITWIDTH VALUE                 : *ADDR = VALUE
    3. # CMD_SET_BIT:    memory setbit ADDR BITWIDTH VALUE              : *ADDR = *ADDR | VALUE
    4. # CMD_CLR_BIT:    memory clrbit ADDR BITWIDTH VALUE              : *ADDR = *ADDR &~ VALUE
    5. # CMD_CHECK_BIT_SET:  memory chkbit1 ADDR BITWIDTH VALUE         : while((*ADDR & VALUE) != VALUE){}
    6. # 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全空间进行压力测试。
    1.10.png

    目标平台压力测试程序基于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
    来源: 痞子衡嵌入式


    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 00:14 , Processed in 0.108956 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表