原创 QuickARM片内RAM调试

2009-3-22 15:54 4624 13 18 分类: MCU/ 嵌入式

 QuickARM片内RAM调试<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1.使用片内RAM (起始地址0x4000 0000)调试程序


因为如果在复位后P0.14不为低,则程序将从0x8000 0000处开始执行,所以如果使用片内RAM调试,则必然要求在复位时P0.14处于低电平状态,由调试程序通过Boot Loader提供的接口来处理接下来的动作(参考LPC2220 Datasheet 的Chapter19 "Onchip Serial Boot Loader")。如果要使用片内RAM调试,则ISP下载的短接线不可以拔下,可使用LPC210x ISP RAM Buffer控制 按下"Run from Address"按钮。



出现的情况是好像晶振频率变慢了,而且串口发送数据也不正确,可能的原因是其中的PLL设置部分出错的缘故。



2.从片内RAM 0x4000 00200开始运行程序


因为ISP commands 会使用0x4000 0120- 0x4000 01FF作为缓冲区,所以不应该从0x4000 0000开始运行程序,这也是如果这样做,LPC210x ISP软件报告如下的错误的缘故:


“Code in Boot Loader RAM Area(&H40000120-&H400001FF) or Boot Loader Stack Area (Top 288 Bytes of RAM) will be ignored!”


 


这样分散加载文件就应该更改,从0x4000 0200处开始


对应的DebugInRAMARM Linker -->options-->Image entry import也应该改成0x4000 0200,其他的RAM使用情况也应注意,如Boot Loader使用的片内最高的288Bytes。



更改后的运行正确,UART0发送数据正常。



3.从片内RAM 0x4000 00200开始运行程序,如何处理中断


在程序中若使用TIMER1的中断操作,因为中断产生的异常处理会导致PC跳至对应的中断向量处,而TIMER1的中断产生IRQ中断,IRQ异常会跳至重映射后的0x18处,(LDR PC,[PC,#-0xff0])。使用内部RAM绝对地址开始于0x4000 0000处,所以会跳至程序的0x4000 0018处,但因为在编译选项里,可执行代码的开始地址为0x4000 0200,所以需要在关闭中断的情况下将起始代码复制到0x4000 0000。


导致了程序不能正常运行,在编译器选项设置的DebugInRAM的对应项目中,


修改:


1).targer.c修改


-----------------


#ifdef __IN_CHIP  


    MEMMAP = 0x1;                   //remap


#endif 


-----------------



-----------------


#ifdef __IN_RAM   


    unsigned int i;


    uint32 *cp1, *cp2;



    extern void Reset(void);


    cp1 = (uint32 *)Reset;


    cp2 = (uint32 *)0x40000000;


    for (i = 0; i < 16; i++)


    {


       *cp2++ = *cp1++; 


    } 


    MEMMAP = 0x2;                   //remap


#endif


--------------------


增加了复制中断向量的代码,使得异常出现时,可以得到正确的中断向量



2).修改DebugInRAM编译选项


DebugInRAM-->ARM C COMPILER -->Preprocessor中的__IN_CHIP修改为


__IN_RAM


 

_____________________________________


 编译环境:ADS1.2 


下载工具:LPC210x ISP                


2008-5-26 by eleclike

文章评论5条评论)

登录后参与讨论

eleclike 2008-10-11 17:22

原文编辑有点错误,括号内说明是针对前面语句的说明,原意不是说明后面的“如果要使用片内RAM调试,则ISP下载的短接线不可以拔下,可使用LPC210x ISP RAM Buffer控制 按下"Run from Address"按钮。 对这部分描述表示怀疑,请问你是在哪看到这样的说明的?”来自LPC2220 DATASHEET。

用户145659 2008-10-11 09:56

如果要使用片内RAM调试,则ISP下载的短接线不可以拔下,可使用LPC210x ISP RAM Buffer控制 按下"Run from Address"按钮。 对这部分描述表示怀疑,请问你是在哪看到这样的说明的?!

用户145659 2008-10-11 09:55

(参考LPC2220 Datasheet 的Chapter19 "Onchip Serial Boot Loader")如果要使用片内RAM调试,则ISP下载的短接线不可以拔下,可使用LPC210x ISP RAM Buffer控制 按下"Run from Address"按钮。 对这部分描述表示怀疑,请问你是在哪看到这样的说明的?!

用户461316 2008-9-14 09:38

学习这个东西!!!

huli184_389376486 2008-9-13 08:22

学习了!
相关推荐阅读
eleclike 2010-12-03 00:07
mark 一下
2010 mark...
eleclike 2009-05-13 15:34
GSM PDU格式短信解析器
 本软件用于解析GSM PDU格式短信,显示DCS=8BIT和DCS=16BIT两种编码方式的短信内容。下载地址为:https://static.assets-stash.eet-china.com/...
eleclike 2009-04-27 16:55
Unicode与ASCII转换工具
Unicode字符在许多场合都会经常使用到,比如GPRS模块的开发和USB字符串描述符的定义,本软件是一个Unicode与ASCII编码的转换工具v1.0版本.1.可以将IRA格式的Unicode数据...
eleclike 2009-04-03 12:40
TUSB3210复位系统
TUSB3210采用标准的8052内核,但因为其更多的片上外设使得复位电路比普通的8051单片机更复杂。复位电路图如下图所示:从图中可以分析:1.  复位源:a)         USB-FUNCTO...
eleclike 2009-03-31 13:43
MC55使用的串口工具介绍
MC55使用的串口工具介绍:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />1.使用...
我要评论
5
13
关闭 站长推荐上一条 /2 下一条