IAR5.4+JLINK RDI调试程序心得体会

ARM 153浏览

算算接触ARM已经很长时间了,但是一直都没法入门,网上的教材也很多,但都面向不同的芯片、不同的开发板,各式各样的,要么跟我手上的开发板有差别,要么是开发环境不一致。总是没有办法下决心好好的熟悉下ARM,熟悉下手头上的2410.

唠叨的太多了,直接入主题吧!

最近使用IAR+JLINK 开始学习手头上的2410开发板。

一开始开始按照网上http://hi.baidu.com/mystreetzone 这位仁兄交的博客进行,写了一个最简单的LED测试程序,用JFLASH烧录到NORFLASH中去运行,发现只能点亮1个灯(程序设计是2个led等循环闪烁),于是认为是自己的程序有问题,就花费了好几天的时间去检查程序。认为除了ICF文件有问题以外,其他应该没有问题,因为网上的是定义的2410内部的4k ram,我用的是外部的2M norflash。但是这并不会影响程序的执行,因为2个的起始地址都是0x0,我编写的那个程序也就1k大小。因此排除了icf文件的问题。

后来想着为什么不去直接调试程序呢,反复的下载程序到NORFLASH也很麻烦的。于是还是在网上搜索了一下,发下有人用MINI2440+JLINK实现了调试功能,参考后发现与我的工程文件有不同:

1.网上的直接使用了系统的启动文件,使用的也是可以进行图形化配置的icf文件

2.最重要的是它使用了内部的sdram地址,来对程序进行了链接。

于是从新修改了自己的工程文件,使用系统默认的启动文件+SDRAM的icf设置。重新make-rebuild all 然后发现程序竟然可以调试了,那个爽啊,哈哈!

之后思考了一下,发现其实可以自己定义启动文件,只要在icf文件中设置链接地址为SDRAM,然后下载之后就可以运行了,可以不适用系统默认的启动文件。

关于JLINK RDI在IAR中的设置:

1.Debugger中选择RDI,然后在RDI界面中选择默认即可。

2.这时IAR程序界面会多出来一个RDI菜单项,点击后出现configure进行配置,选择使用软件断点。

3.关于jtag的速度,需要根据不同开发版进行试验,我手头上的使用750KHZ,快了就直接死机了。

4.其中的mac文件是需要重新加载的,这个与jflash中的初始化语句时一样的,主要目的是为了关掉看门狗、中断及初始化存储寄存器从而来对SDRAM进行初始化的。

 

目前程序在SDRAM中调试运行时没有任何问题的,但是很奇怪的一点是:下载到NORFLASH中后就不能正常运行,检查发现,程序在norflash中运行时不能运行循环语句,因为在上面说的led中,我使用了for循环实现了一个delay(),而程序就是在这个位置停止了,一直死循环了,至于是什么原因导致的,现在还不明白,有了解的可以告知,谢谢啦。