周立功ARM调试心得.doc

周立功ARM调试心得.doc

ID:50574304

大小:93.50 KB

页数:8页

时间:2020-03-11

周立功ARM调试心得.doc_第1页
周立功ARM调试心得.doc_第2页
周立功ARM调试心得.doc_第3页
周立功ARM调试心得.doc_第4页
周立功ARM调试心得.doc_第5页
资源描述:

《周立功ARM调试心得.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Efl立功ARM调试心得2008-9-11调试uSmartARM2200V2.02实验箱”心得:1、在调试“E:htwangsmart2200v201ARM嵌入式系统实验教程(二)开发板岀厂编程程序液晶显示程序LCM_Disp“的程序时,想使用外部RAM进行仿真调试,在将ADS1.2中的"DebugInExramSettings->ArmLinker->Output->EquivalentCommandLine"的"・infototals-entry0x8100000-scatter.srcmem_b.scf'改为"-infotot

2、als・entry0x80000000-scatter.srcmem_b.scf时,编译时总是出现错误信息"Error:L6206E:Entrypoint(0x80000000)liesoutsidetheimages",经梁工(宝琼)提示:"这是由于程序空间超出范围,需要改一个参数。“打开关于外部RAM调试的分散加载文件发现所有的程序调试地址都是指向0x81000000的Flash地址空间,而不是0x80000000的RAM地址空间(此时硬件电路板上的短路片RAM接CS0、Flash接CS1),后把0x81******全部改为0x80****

3、**,编译调试都正常。2、不正常现象:在调试“Sma「tARM2200V2.02”实验箱时,每次实验箱断电或实验箱上复位按键后,H-Flash的Load操作都要重新执行一遍(或者简单一点:只要在H-Flash->Programming->Check按钮上点击一下也XT以),否则下载程序后实验箱运行不了。(先是在选用DebuglnExram出现这种情况,后选用RelOutChip则不会出现这种情况°)<2008-9-12>另外,每次重新启动H-JTAG和H・Flash后,都要将H・Flash重新设一遍。3、现象:在调试GB_Disp工程时,程序无法正

4、常运行。分析:当调试的程序中包含中断时,分散加载文件的“IRAM”项设置不能从0x40000000开始,而应该从0x40000040开始(给中断向量留下空间),否则程序无法调试。(先是在选用RelOutChip出现这种情况,后选用DebuglnExram也出现这种情况。)<2008-9-12htwang注:上面的解释并不正确,因为在调试其他小断实验的过程小,配置文件FemJ.scf"的“IRAM“项设置成从0x40000000开始也可以正常运行。(估计可能是存储器映射的问题)打开GB_Disp工程"target.c”文件,果然发现在函数"voidT

5、argetResetInit(void)M41将存储器映射寄存器初始化成”MEMMAP=0x2",这是选用的用户RAM模式,中断向暈也从静态RAM重新映射。如果想映射到用户外部存储器模式,应该改为”MEMMAP=0x3”(见《ARM嵌入式系统基础教程》P166或《深入浅出ARM7-LPC2200》P119)。按此方式更改后,实际调试也正常。(2008-9-12)结论:要么把该工程文件,,mem_bscf,中的”IRAM”项改成从0x40000040开始;要么把该工程文^■•'targel.c"中的存储器映射初始化为'MEMMAP=0x3”。4、在调

6、试中断程序时,如果使用IRQ.S中的汇编宏定义程序WuIRQ_Eint3_HandlerHANDLERIRQ_Eint3H代替原来的C语言函数中断方式(当然同时将代码uVICVectAddrO=(uint32)IRQ_Eint3;H改为"VICVectAddrO=(uint32)IRQ_Eint3_Handler;”),则应将C语言中断函数''void_irqIRQ_Eint3(void)M改写成"voidIRQ_Eint3(void),to否则调试是出现的情况就是程序在”IRQ_Eint3_Handle「HANDLERIRQ_Eint3u和中断函

7、数“void_irqIRQ_Eint3(void){}HS面反复执行,再也退不出来。2008-9-12调试HSmartARM2200V2.02实验箱“心得:5、现象:在自己编写定时器中断程序时,如果自己用工程模板"ARMExecutableImageforlpc2200-建立工程并编写中断程序后,调试过程中总是不能进入中断,但是用定时中断的事例程序可以进入。原因:经将自己建立的模板工程文件中的“Stagp.s”文件和事例程序小的比较,发现在模板工程的”Sumup.s”文件中的堆栈初始化代码“InitStack”中有一行语句为:;设置系统模式堆栈MS

8、RCPSR_c,#OxdfLDRSP,=StackUsr这就将IRQ和FIQ都禁止了,需要将”MSRCPSR_c,#0xd

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。