Trace32使用Data.Test和Data.TestList命令测试内存类型以及完整性

我们在debug的时候,可以使用Trace32自带的一些命令快速地检测目标系统的内存的类型和完整性(是否可读或可写),以便快速排除内存缺陷带来的干扰。

目录

Data.Test: 内存完整性测试 Memory integrity test

Data.TestList :检测内存属性


Data.Test: 内存完整性测试 Memory integrity test

Format:
        Data.Test <address_range> [ / <option> ]
<option> :
  • Toggle
  • Prime
  • RANDOM | PRANDOM
  • AddrBus
  • Repeat [<count>]
  • WriteOnly | ReadOnly
  • NoBreak
  • Byte | Word | Long | Quad | TByte | PByte | HByte | SByte

使用Data.Test指令需要给它指定一个地址范围:  <address_range>,在检测完成后,会将检测结果 fail 或者pass打印出来。并且可以通过使用不同的option,来达到不同的检测效果:

  • 内存的读写访问
  • 地址线故障检测
  •  地址别名(Aliases addresses)(将超出内存容量的地址映射到低地址)错误检测

Data.Test 命令可以随时通过 点击工具栏中的 STOP 按钮来终止,该指令只用来做完整性检测,并不意味着可以检测目标系统已经实现了哪些内存。

Data.Test指令常用的命令行选项:

  • Toggle (默认):比特反转,内存中数据一次读取一小块,然后比特反转两次,这样既检测了读写,有没有改变原始内存中的数据。但是地址别名问题不能通过该方式检测出。
  • Prime:素数, 指定的地址范围将会被一个测试模板完全填充,随即被验证。需要注意的是,测试模板的长度是素数,而不是数据本身。该范围内的原始数据将会丢失,这种测试方法可以检测地址线故障address line failures,或者内存中存在的镜像分区。同时可以结合WriteOnly 和 ReadOnly选项使用。
  • RANDOM:随机,该模板是一个随机序列。
  • PRANDOM:伪随机,伪随机序列,同时可以结合 WriteOnly 和  ReadOnly选项使用。
  • Repeat :设置重复次数,如果没有传入数字作为重复次数,该测试将会一直进行直到手动停止。
    其他的option:

    测试模板的长度为素数:

    Data.Test 0x0--0x0ffff /Prime
    内存测试一直持续,直至手动点击停止按钮:
Data.Test 0x0--0x0ffff /Repeat
内存测试重复三次:
Data.Test 0x0--0x0ffff /Prime /Repeat 3.
Data.Test 命令的测试结果会影响以下两个函数:
  • FOUND()
    • 如果测试过程中发现了内存错误,将会返回 TRUE 
  • TRACK.ADDRESS()
    • 返回首次出现错误的地址。
Data.Test 0x0++0xffff /Prime
IF Found() 
    PRINT "Error found at address " TRACK.ADDRESS()

Data.TestList :检测内存属性

Format:
Data.TestList [ <address_range> ] [ / <option> …]
<option> :
64K | 1M
Data.TestList 指令是一个无损的内存测试指令,用于检测目标系统中给定地址范围的内存类型。默认情况下,最小的检测颗粒度为4K。可以通过option,来指定 64K 或 1M,这样地址范围address_range 将会被分成对应大小的小块,并且每次只测试每个小块的前16K内存。
下图是Data.TestList测试结果示例图:

扫描二维码关注公众号,回复: 15847259 查看本文章

 其中:

ok                 RAM

read only     ROM/FLASH

read fail       no memory

write fail      no memory

需要注意的是, 如果是访问外设的内存,Data.TestList指令有可能会造成 debug port fail。

猜你喜欢

转载自blog.csdn.net/luolaihua2018/article/details/130856198