和其他集成开发环境一样,Realview MDK 中也使用了调试脚本。调试脚本除了可以初始化软硬件的调试环境以外,还可以初始化Flash 的烧写环境,甚至可以提供信号函数模拟片上外围设备。所以在使用Realview MDK 调试和烧写的过程中,到处都有调试脚本的身影。下面将分三个方面详细地研究调试脚本的编写和使用。在介绍调试脚本之前,先必须了解Realview MDK 预定义的一些常用命令和函数的用法。1. 常用预定义命令的说明及注意事项:
下表是一些常用的预定义命令和函数的语法格式及说明。
| 预定义的命令语法 | 描述 |
| MAP | 开始地址, 结束地址 在内存中映射一段存储区域 |
| Go | 开始地址,结束地址 程序从开始地址运行,到结束地址停止 |
| DIR VTREG | 显示所有的CUP 引脚寄存器 |
| 预定义的函数 | 描述 |
| void rwatch (ulong address) | 信号函数被延时,直到函数参数地址被读取 |
| void wwatch (ulong address) | 信号函数被延时,直到函数参数地址被写入 |
| void swatch (float seconds) | 信号函数延时参数指定的时间,单位为S |
| void twatch (ulong states) | 信号函数延时参数指定的CUP 周期 |
| uchar _RBYTE (address) | 在参数指定的地址处读取1 个字节的数据 |
| ulong _RWORD (address) | 在参数指定的地址处读取1 个整型的数据 |
| ulong _RDWORD (address) | 在参数指定的地址处读取1 个长整型的数据 |
| uchar _WBYTE (address, uchar val) | 向参数指定的地址处写入1 个字节的数据 |
| void _WWORD (address, uint val) | 向参数指定的地址处写入1 个整型的数据 |
| void _WDWORD (address, ulong val) | 向参数指定的地址处写入1 个长整型的数据 |
2. 调试脚本在硬件仿真中的应用Realview MDK 编译链接好的程序在硬件上运行之前,要求硬件具有合适的环境(例如,时钟的配置、存储控制的配置等),一般这些工作是由启动代码完成
的。在Realview MDK 中,通过调试脚本使用MDK 预先定义好的寄存器读写命名设置硬件环境。这一工作在硬件调试之前是必须进行的。下面是一个初始化硬件环境的调试脚本函数:FUNC void Setup (void)
{
_WWORD(0xfffffd44 ,0x00008000); // 配置看门狗模式寄存器;
_WWORD(0xfffffd60 ,0x00320100); // 配置电压效验模式寄存器;
_WWORD(0xfffffc20 ,0x00000601); // 配置主晶振寄存器;
_WWORD(0xfffffc2c ,0x00191C05); // 配置锁相环寄存器;
_WWORD(0xfffffc30 ,0x00000007); // 配置主时钟寄存器;
_WWORD(0xfffffd08 ,0xa5000001); // 配置复位控制模式寄存器;
pc = 0x200000; // 设置PC 的值。
}