用RealView_MDK调试TQ2440
- 格式:doc
- 大小:167.00 KB
- 文档页数:5
用RealView MDK与J-Link V7调试TQ2440的方法
引言:由于本人是从51单片机开始入手ARM,对Keil自然有些不舍,而就目前而言MDK在
功能上已经强于ADS1.2因此,决定从MDK开始写第一个ARM的底层代码。另一方面,MDK
优于ADS的地方在于其启动汇编代码可以在图形化界面中配置而不用自己去写,因此对初学
者毕竟有一定的好处。但比较遗憾,关于RealView MDK的起步教程太少,因此想将自己两
天来调试的经验总结一下,希望像刚刚起步的同学少走些弯路。
实验平台:TQ2440开发板 RealView MDK 4.03 J-Link V7
实验目的:让开发板上的LED闪烁
实验步骤:
1、 安装并且让RealView MDK 及J-Link v7 正常工作
2、 新建工程,并且器件选择S3C2440A
3、 确认出现的对话框中以添加最基本的启动代码。
4、 新建main.c保存并添加到工程中
5、 点击工具栏上按钮进入配置界面,
6、 进入“Debug”选项卡,选中使用J-Link调试器,Initialization File使用MDK提供的的
文件,位置为C:\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky,本实验中为方便起见
建议将其拷到工程目录下,并将此文件倒数第三行
LOAD Obj\Blinky.axf INCREMENTAL // Download program。
中的Obj\Blinky.axf改为实际生成的映像名字
7、 从“Settings”按钮进入J-Link配置窗口,其中速度选择自动即可。
8、 进入“Utilities”选项卡,按照下图配置即可
9、 选择“Settings”进入Flash Download Setup 并加入相应编程算法,由于MDK中不带板
上标配的NOR Flash芯片编程算法,因此只是寻找了一个接近的来代用(编程下正常,
但用MDK FLASH菜单中的ERASE命令进行擦除时会出现异常,原因待查)
10、 进入“Target”选项卡,根据开发板的配置时钟选12.0MHz
11、 如果你希望将程序下载到NOR Flash中运行(此时无法调试)按图 1进行配置,
如果你希望对程序进行跟踪调试,请按照图 2进行配置,后面将会进行详细分析。
图 1 在NOR FLASH中运行程序的配置方法
图 2 在RAM中调试程序的配置
12、 添加以下代码
#include "s3c2440.h"
int main()
{
int i;
GPBCON &=~((0x03L)<<10);
GPBCON |=(0x01L)<<10 ;
GPBDAT &= ~(1<<5);
while (1)
{
//GPBDAT |= 1;
GPBDAT &= ~(1<<5);
for (i = 0; i < 200000; i++);
//GPBDAT &= ~1;
GPBDAT |= (1<<5);
for (i = 0; i < 200000; i++);
}
}
13、 打开S3C2440.S,在代码区左下角切换到配置向导模式,并将出现的几项配置全部
选上,这次实验并未进行任何细节上的修改。
在RAM中调试的方法:在前面正确配置的基础上,先编译程序,再选择工具栏上
即可开始调试,此时可以看到LED
在快速闪烁,其他调试方法与C51类似,在此不再赘述。
下载程序到NOR Flash 中的方法:先对程序进行编译,然后再选择工具栏
即可下载将程序下载到NOR FLASH中并开始运行。此时也可以
看到LED在闪烁,但速度较慢,估计是由于NOR FLASH的读取速度远远不如SRAM的原
因造成的。
以下对第11步配置的理由进行阐述:
对于将程序下载到NOR FLASH 的情况
1、 由于板子上标配的是2MB的NOR FLASH,而且根据S3C2440用户手册中内存控制器
及J-FLASH ARM中读出的结果可见其起始地址是0x0,因此确定了对话框中片外ROM
的地址范围以及大小(大小以字节为单位)。
2、 由于TQ2440开发板的64MB SDRAM的片选线是nGCS6,根据2440用户手册亦可知
道其起始地址为0x30000000,(大小以字节为单位算出即可)
3、 根据2440从NOR FLASH启动时的内存地址分布图得出片内RAM的起始地址以及大
小,由于FLASH的编程算法默认是在CPU的4KB SRAM里执行,因此不要选择片内
RAM前的default复选框,以免引起数据冲突。
对于在SDRAM中调试程序的情况:
1、 注意:此时,我们必须将代码也放入SRAM中(本实验这部分工作由Ext_RAM..ini来
完成)。因此不得不使用一部分SDRAM来模拟NOR FLASH代码区(地址从0x30000000
开始,大小2MB)。
2、 程序运行过程中必定会对内存进行读写,为避免程序在运行中误将放在内存中的虚拟
NOR FLASH代码区破坏,因此将其地址定为从0x31000000开始(也可以是其他参数)。
此时虽然程序仍然能够正常调试,但如果复位,SDRAM中的代码就会全部消失,必须
重新加载。