RealView MDK+Jlink+TQ2440 调试笔记

从上图我们可以看到hex文件已经生成了,还告诉我们,我们的代码大小为920字节,只读数据为16字节,可读写数据为0,ZI数据为1256字节。
好,下面我们就把它烧到我们的开发板中。我们还需要配置一下烧写选项我们还是选择工程属性然后选Utilities选项然后在烧写选项中选J-LINK/J-Trace,然后去掉Update Target before Debugging选项,最后点Settings添加烧写算法,这里没有针对我们的norflash EN29LV160AB的算法,我们只选一个相近的如我选的是AM29F160DBFlash,但是这个算法只能烧写不能擦除(有兴趣的话可以自己写一个烧写算法)。

好了万事具备只欠JLINK了,不过在烧写之前请确认你已经安装了JLINK的驱动,JLINK的驱动可以到SEGGER官方下载Software and documentation pack V4.14b ,驱动安装好了以后我们接上开发板,然后在把开发板的启动方式改为从norflash启动,然后启动开发板,最后点Download,如果没有意外的话,你就可以看到led的开始闪了。
4.调试跑马灯程序
光能下载可不行,我们最主要的是能调试,下面我们看看怎么在RealView MDK下调试程序,其实RealView MDK的高度功能要比ads1.2好用的多。我们打开工程属性先Debug选项然后选择Use J-LINK/J-Trace,然后点Settings,在其中选择JTAG Speed为Auto Selection,先择Reset Strategy为Hardware,halt with BP@0。最后选上Run to main(),这样在调试的时候会自动停到我们的main函数入口。此外我们不需要一个调试初始化文件,这个文件不用写,我们可以在RealView MDK的例子中找到它,比如在我机子上是D:ToolElectronicRealViewMdkARMBoardsSamsungS3C2440RTX_Blinky下的Ext_ARM.ini,我们把它拷到我们的工程目录下然后在Initialization File中选择它就OK了。

还有一个地方我们得改就是程序的内存地址,刚刚我们烧写的时候用的是起始地址为0大小2M的设置,而这个地址0对应的正好是我们的norflash的地址。而现在我们调试的时候是直接把代码载入到内存(也就是sdram)中,在s3c2440上它对就的地址是0×30000000所以我们要把ROM的起始地址改为0×3000000,相应的RAM起始地址改为0×30200000,大小不变。

好了,调试选项都设置好了,我们开始调试,如果没有意外的话会出现下面所示

我们可以看到它的调试环境很友好,很像vs之类的,左边是各个寄存器的值右上是汇编代码,下面是对应源码当前指针停在main中,我们可以单步调试,还可以下断点。还可以查看内存之类的信息等。
如果我们没有JLINK还可以用RealView MDK自带的仿真器方法是在Debug选项中选择Use Simulator选项就可以了。如果出现了*** error 65: access violation at 0×53000008 : no ‘write’ permission类似这样的的错误,可以试着去掉启动代码中的看门狗和时钟的设置。
附上跑马灯的工程
评论