我使用的是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字节。
|