我使用的是ARM Cortex-M0,LPC1112,系统控制模块里面有个重映射寄存器,可以配置相应的位将向量表映射到BOOT ROM、SRAM、FLASH(默认),为什么我将中断向量表映射配置到SRAM或者ROM,程序就跑不起来,而采用默认配置(FLASH)就是正常的?是不是还需要其他的配置?需要将程序代码也烧到SRAM才行呢? 大虾们请接招!先谢谢了!
----------------------------------------------------------------------------------------------
补传配置方法:
配置代码如下:
#define VECTOR_TABLE_SIZE 0x200
#define __DEBUG_RAM
#ifdef __DEBUG_RAM
volatile unsigned int *dst, size;
volatile const unsigned int *src;
/*从内部flash0地址复制向量表到内部RAM 0x10000000(注意RAM起始处需要空着)*/
src = (volatile unsigned int *)0;
dst = (volatile unsigned int *)0x10000000;
size = VECTOR_TABLE_SIZE >> 2;
do
{
*dst++ = *src++;
}while (--size);
LPC_SYSCON->SYSMEMREMAP = 0x1; //01向量表映射在内部RAM
#else
#ifdef __DEBUG_FLASH
LPC_SYSCON->SYSMEMREMAP = 0x2; //02或03向量表映射在内部FLASH(00映射在Boot Rom)
#endif
#endif
另外需要在编译器的target opition---tagret下修改内部RAM的起始地址 如下图所示:
设置MDK目标CPU内部RAM地址起始位置 (原文件名:map.png)
因为你若将中断向量表复制到RAM 0地址开始处,则需要空出来0x200字节。
阅读(8509) | 评论(0) | 转发(0) |