Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191125
  • 博文数量: 34
  • 博客积分: 746
  • 博客等级: 军士长
  • 技术积分: 202
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-09 21:19
文章分类

全部博文(34)

文章存档

2011年(34)

分类: 嵌入式

2011-05-01 22:54:37

我使用的是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) |
给主人留下些什么吧!~~