TRACE32——外设寄存器查看与修改
本文介绍外设寄存器,例如I2C、GPIO、SPI、CAN等如何在TRACE32中灵活查看与修改。
首先,外设寄存器的查看与修改,离不开TRACE32的外设文件(*.per),per文件一般存在于TRACE32的安装根目录下。
一般情况下,在调试时,TRACE32会根据当前选择的芯片名自动选择合适的per文件,此时只需要执行命令
per
或者通过鼠标点击CPU-Peripherals进行打开
或者可以显示地指定查看哪个外设寄存器文件
per.view ~~\perj721e.per //~~表示TRACE32安装根目录, 例如D:\T32
per D:\T32\perj721e.per //效果等同于上面的命令
如果需要修改某个外设寄存器的值,可以找到对应寄存器的位置,右键,选择Set或者Modify进行修改
命令改写外设寄存器的方法如下:
PER.Set.simple ASD:0x40000000 %Long 0x77700000
在TRACE32中可以显示某个位域的值,也可以按位域进行修改,只需要找到需要修改的位域,右键,按照提示进行切换值即可:
用命令改写位域的方法如下:
PER.Set.Field ASD:0x40000000 %Long 0x007c0000 0x5
其中
ASD:0x40000000是外设寄存器地址
%long 表示寄存器位宽为32bit
0x007c0000是mask
0x5是要改写的value
改写的规则如下
即:
NewData=(OldData&~mask)|((value<<offset(mask))&mask)
更多用法1 高亮显示变化的值
可以使用如下命令,将发生变化的值以高亮显示:
per , /SpotLight
其中:
逗号“,” 是一个缺省占位符,表示使用默认的per文件进行显示
因为per命令的完整格式应该如下:
PER.view [<file> [[<args>] "<subtree_path>"] [/<option>]]
PER.view可以简写为PER
如果需要/<option>
的时候,<file>
可以不写,但必须用逗号来进行缺省占位
更多用法2 实时显示变化的值
部分平台,会默认开启实时显示;如果没有默认开启,可以手动执行命令
;SYStem.MemAccess <实时显示的数据通道>
;例如ARM上可以使用DAP
SYStem.MemAccess DAP
per , /SpotLight /Dualport
/Dualport
用于实时显示
更多用法3 全部展开
有些时候,希望一个命令能展开所有寄存器方便查看,可以使用
per , "*"
也可以只展开相应的寄存器组,例如展开GPIO Ports的所有寄存器:
per , "GPIO Ports,*"
更多用法4 保存和导出
外设寄存器的窗口所有内容打印到txt等文件中进行保存。
除了WinPrint,外设寄存器还可以使用对应的命令保存成cmm脚本。例如,
将GPIO的Port33相关寄存器全部保存到D:\saved_gpio.cmm
per.STOre D:\saved_gpio.cmm , "GPIO Ports,Port 33"
保存的脚本内容类似这样:
后面如果要恢复寄存器的值,可以直接运行cmm脚本
Do D:\saved_gpio.cmm
更多关于外设寄存器相关的命令可以参考如下文档:
- <T32安装目录>\pdf\general_ref_p.pdf\Per章节
- https://www2.lauterbach.com/pdf/general_ref_r.pdf\Per章节