Realview MDK 中调试脚本的详细解析
来源:互联网 发布:adobe acrobat mac版 编辑:程序博客网 时间:2024/06/06 20:40
可以提供信号函数模拟片上外围设备。所以在使用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 的值。
}
实际例子如下所示:
FUNC void Init (void) {
_WDWORD(0x4A000008, 0xFFFFFFFF); // Disable All Interrupts
_WDWORD(0x53000000, 0x00000000); // Disable Watchdog Timer
// Clock Setup
// FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz
_WDWORD(0x4C000000, 0x0FFF0FFF); // LOCKTIME
_WDWORD(0x4C000014, 0x0000000F); // CLKDIVN
_WDWORD(0x4C000004, 0x00043011); // MPLLCON
_WDWORD(0x4C000008, 0x00038021); // UPLLCON
_WDWORD(0x4C00000C, 0x001FFFF0); // CLKCON
// Memory Controller Setup for SDRAM
_WDWORD(0x48000000, 0x22000000); // BWSCON
_WDWORD(0x4800001C, 0x00018005); // BANKCON6
_WDWORD(0x48000020, 0x00018005); // BANKCON7
_WDWORD(0x48000024, 0x008404F3); // REFRESH
_WDWORD(0x48000028, 0x00000032); // BANKSIZE
_WDWORD(0x4800002C, 0x00000020); // MRSRB6
_WDWORD(0x48000030, 0x00000020); // MRSRB7
_WDWORD(0x56000000, 0x000003FF); // GPACON: Enable Address lines for SDRAM
}
// Reset chip with watchdog, because nRST line is routed on hardware in a way
// that it can not be pulled low with ULINK
_WDWORD(0x40000000, 0xEAFFFFFE); // Load RAM addr 0 with branch to itself
CPSR = 0x000000D3; // Disable interrupts
PC = 0x40000000; // Position PC to start of RAM
_WDWORD(0x53000000, 0x00000021); // Enable Watchdog
g, 0 // Wait for Watchdog to reset chip
Init(); // Initialize memory
LOAD Obj\keyled.axf INCREMENTAL // Download program
PC = 0x30000000; // Setup for Running
//g, main // Goto Main
- Realview MDK 中调试脚本的详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK 中不用手动开中断的原因
- 在Realview MDK 中如何生成*.bin 格式的文件
- RealView MDK中(volatitle unsigned *)(0x40005c00)的理解
- MDK RealView中设定数组与变量的绝对地址
- MDK RealView中设定数组与变量的绝对地址
- 在Realview MDK中添加自己的FLASH编程算法
- RealView MDK的指定位置
- uVision, MDK, realview的关系
- RealView MDK开发工具 详细介绍
- RealView MDK和RVDS的区别
- RealView MDK和RVDS的区别
- MDK realview-ARM9的led_blink汇编小结
- 携反省一起上路的FreeEIM
- 分享一个分页存储过程
- 百度指数或者Alex关于性别年龄的统计
- POJ 1008
- 升级版MyPad:从一个应用登录Instagram,Facebook和Twitter
- Realview MDK 中调试脚本的详细解析
- 猜测:秦始皇陵中有惊人的秘密
- Paul Woodbridge分享社交游戏设计4大秘诀
- C++警告C4482的解决方式
- MFC定时器的应用
- 为什么我的只能10个过八个 求解
- ADB server didn't ACK,* failed to start daemon *错误的解决
- 学习软件技术的2、3点【陈丽君博客】
- mysql 拒绝访问的解决办法