欢迎来到天天文库
浏览记录
ID:38778709
大小:21.29 KB
页数:8页
时间:2019-06-19
《周立功ARM调试心得》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、周立功ARM调试心得2008-9-11调试"SmartARM2200V2.02实验箱"心得: 1、在调试"E:htwangsmart2200v201ARM嵌入式系统实验教程(二)开发板出厂编程程序液晶显示程序LCM_Disp"的程序时,想使用外部RAM进行仿真调试,在将ADS1.2中的"DebugInExramSettings->ArmLinker->Output->EquivalentCommandLine"的"-infototals-entry0x8100000-scatter.srcmem_b.scf"改为"-infototals-ent
2、ry0x80000000-scatter.srcmem_b.scf"时,编译时总是出现错误信息"Error:L6206E:Entrypoint(0x80000000)liesoutsidetheimages",经梁工(宝琼)提示:"这是由于程序空间超出范围,需要改一个参数。"打开关于外部RAM调试的分散加载文件"mem_b.scf"发现所有的程序调试地址都是指向0x81000000的Flash地址空间,而不是0x80000000的RAM地址空间(此时硬件电路板上的短路片RAM接CS0、Flash接CS1),后把0x81******全部改为0x80******
3、,编译调试都正常。 2、不正常现象:在调试"SmartARM2200V2.02"实验箱时,每次实验箱断电或实验箱上复位按键后,H-Flash的Load操作都要重新执行一遍(或者简单一点:只要在H-Flash->Programming->Check按钮上点击一下也可以),否则下载程序后实验箱运行不了。 (先是在选用DebugInExram出现这种情况,后选用RelOutChip则不会出现这种情况。) <2008-9-12>另外,每次重新启动H-JTAG和H-Flash后,都要将H-Flash重新设一遍。 3、现象:在调试GB_Disp工程时,程序无法正常运
4、行。 分析:当调试的程序中包含中断时,分散加载文件"mem_*.scf"的"IRAM"项设置不能从0x40000000开始,而应该从0x40000040开始(给中断向量留下空间),否则程序无法调试。(先是在选用RelOutChip出现这种情况,后选用DebugInExram也出现这种情况。) <2008-9-12htwang注:上面的解释并不正确,因为在调试其他中断实验的过程中,配置文件"mem_*.scf"的"IRAM"项设置成从0x40000000开始也可以正常运行。(估计可能是存储器映射的问题) 打开GB_Disp工程"target.c"文件,果然发
5、现在函数"voidTargetResetInit(void)"中将存储器映射寄存器初始化成"MEMMAP=0x2",这是选用的用户RAM模式,中断向量也从静态RAM重新映射。如果想映射到用户外部存储器模式,应该改为"MEMMAP=0x3"(见《ARM嵌入式系统基础教程》P166或《深入浅出ARM7-LPC2200》P119)。按此方式更改后,实际调试也正常。 > (2008-9-12)结论:要么把该工程文件"mem_bscf"中的"IRAM"项改成从0x40000040开始;要么把该工程文件"target.c"中的存储器映射初始化为"MEMMAP=0x3"。
6、 4、在调试中断程序时,如果使用IRQ.S中的汇编宏定义程序和"IRQ_Eint3_HandlerHANDLERIRQ_Eint3"代替原来的C语言函数中断方式(当然同时将代码"VICVectAddr0=(uint32)IRQ_Eint3;"改为"VICVectAddr0=(uint32)IRQ_Eint3_Handler;"),则应将C语言中断函数"void__irqIRQ_Eint3(void)"改写成"voidIRQ_Eint3(void)"。 否则调试是出现的情况就是程序在"IRQ_Eint3_HandlerHANDLERIRQ_Eint3"和中断函
7、数"void__irqIRQ_Eint3(void){}"里面反复执行,再也退不出来。 2008-9-12调试"SmartARM2200V2.02实验箱"心得: 5、现象:在自己编写定时器中断程序时,如果自己用工程模板"ARMExecutableImageforlpc2200"建立工程并编写中断程序后,调试过程中总是不能进入中断,但是用定时中断的事例程序可以进入。 原因:经将自己建立的模板工程文件中的"Startup.s"文件和事例程序中的比较,发现在模板工程的"Startup.s"文件中的堆栈初始化代码"InitStack"中有一行语句为: ;设置系统
8、模式堆栈 MSRCPS
此文档下载收益归作者所有