从弄到2440的开发板也有3个多月了,这中间一直是在业余时间哩哩啦啦的弄着,开始打算好好熟悉一下将2440作为单片机进行开发,本来计划是1个月,就好啦,可没想到居然弄了这么久。这里面的原因总结如下,希望对大家有帮助:
首先说一下我的设备:TQ2440开发板,64MB SDRAM,256MB NANDFLASH,2MB NORFLASH ,JLINK7调试器,IAR5.20 EWARM开发环境。
本来按照2440的DATA SHEET以及我在前一篇初始中所说的步骤进展还是很顺利的,俗话说万事开头难,在前一篇博客中,本来已经能够运行闪灯程序了,按理来说,也就是开发环境已经搭建完毕了。
可在进行中断的实验过程中,出现了奇怪的问题。发现无论如何也进不了中断,反汇编后的语句居然是LDR PC,[PC,#0 ],怎么都不行,开始以为是程序的问题,就把设置vector的语句按照好几种方式进行编写,结果不行。后来以为是设置icf文件将程序都放在片内SRAM内运行,所以不行,后来查了大量资料,发现其实icf只是告诉IAR在link过程中如何链接程序段,这个过程耗费了大量时间,结果中断还是进不去。
最后想来想去,只能是JLINK的毛病了,可是我在使用过程中对JLINK印象中没有改过什么设置啊。死马当活马医,将JLINK不连接IAR,使用JLINKARM直接向板子内烧录一个bin,结果居然告诉我找不到CORE,当时百思不得其解,又使用JLINK.EXE查看一下,在命令行下一切正常,能够看到2440。开始以为是JLINK硬件有问题,想邮回原厂修一下,后来一想有没有可能是JLINKARM设置的问题那,又看了一下JLINK的使用手册,比对我的设置,JLINK的设置选项比较少,如果不适用FLASH编程那些东西,对单片机开发来说可设置的主要就是关于时钟频率那里了,最后居然发现在JLINKARM中我的JLINK初始时钟设置的是兼容性频率,初始完毕的时钟是自动,把初始时钟改为自动后,一切都恢复了。。。。。。。。。。。,JLINKARM能够烧录进程序了,中断也能够进去了。这个情况好像主要是兼容性频率针对一些比较特别的板子,如LPC系列的,正常设置自动,JLINK会首先进行测试,再与MCU通讯,问题终于找到啦。
总结:对于使用IAR进行中断测试的时候,有很多例程可以参考,但遇到进不去中断的奇怪错误,现在想来,是IAR使用JLINK不正常造成的,可JLINK设置错误的话,为什么程序运行正常,只是中断向量部分不正确那,猜测应该是在设置中断向量时JLINK时钟还不正常,在初始化完成后JLINK才恢复正常。总之,把这个问题贴出来,希望能帮到碰到同样问题的童鞋。JLINK...........
|