`
yidongkaifa
  • 浏览: 4063434 次
文章分类
社区版块
存档分类
最新评论

Realview MDK 中调试脚本的详细解析

 
阅读更多
和其他集成开发环境一样,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 的值。
}

实际例子如下所示:





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

分享到:
评论

相关推荐

    MDK应用文章:8.Realview MDK中调试脚本的详细解析.pdf

    MDK应用文章:8.Realview MDK中调试脚本的详细解析.pdf

    Realview MDK中调试脚本的详细解析

    Realview MDK中调试脚本的详细解析

    RealView MDK调试资料

    Realview MDK中调试脚本的详细解析.pdf Realview MDK中链接脚本详细解析.pdf RealView MDK使用小技巧(二).pdf RealView MDK在链接时提示空间不够的解决方案总结.pdf RealView MDK调试小技巧.pdf ULINK2 “Could ...

    RealView MDK 调试资料

    Realview MDK中调试脚本的详细解析.pdf Realview MDK中链接脚本详细解析.pdf RealView MDK使用小技巧(二).pdf RealView MDK在链接时提示空间不够的解决方案总结.pdf RealView MDK调试小技巧.pdf ULINK2 “Could ...

    RVMDK使用文档讲述MDK调试时出现的问题以及解决方法

    包含17个文档:讲述MDK调试...Realview MDK中调试脚本的详细解析 从ADS1.2到MDK3 如何使用Thumb2改善代码性能和密度 添加自己的FLASH编程算法 在MDK中添加自己的FLASH编程算法 在Realview MDK中如何生成.bin格式的文件

    RealView资料.rar

    RealView Realview MDK中编译器对中断处理的过程详解.files RealView Realview MDK中调试脚本的详细解析.files RealView Realview MDK中链接脚本详细解析.files RealView Realview MDK中启动代码的配置详解.files

    MDK应用文章

    1.Realview MDK常见问题及解决方法 2.从ADS1.2移植到MDK文档及示例 3.基于2410的MDK例程移植 ...8.Realview MDK中调试脚本的详细解析 9.在MDK中添加自己的FLASH编程算法 10.利用Realview MDK生成.bin格式的文件

Global site tag (gtag.js) - Google Analytics