新发一贴。关于STM32code段内存使用疑问。

2019-07-20 11:15发布

我使用的芯片是STM32L433,看了探索者开发板有一段使用内部ccm内存池的操作。但是平台是F4我是L4.__align(32) u8 mem3base[MEM3_MAX_SIZE] __attribute__((at(0X10000000)));
#define MEM3_MAX_SIZE                        60 *1024                                       
我查看了芯片手册。看到L4的0X10000000的地址CODE段的SRAM2。一共有16K。

于是我也照抄了代码
__align(32) uint8_t ccmbase[SRAMCCM_MAX_SIZE] __attribute__((at(0X10000000)));       
SRAMCCM_MAX_SIZE  16 *1024
但是在初始化的时候:
void my_mem_init(uint8_t memx)  
{  
        mymemset(mallco_dev.memmap[memx], 0,memtblsize[memx]*2);           //data zero clearing
        mymemset(mallco_dev.membase[memx], 0,memsize[memx]);              //memory pool zero clearing
        mallco_dev.memrdy[memx]=1;                                                     //memory management init
}  

就进入硬件错误。代码应该是没什么问题,是不是还需要修改什么链接文件什么的。
LR_IROM1 0x08000000 0x00100000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00100000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

-------------------------------------------------------------------------------------------------这是F4 探索者的TSET.sct文件-------------------------------------------------------
LR_IROM1 0x08000000 0x00040000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00040000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

--------------------------------------------------------------------------------这是我L4的.sct文件----------------------------------------------------------------------------------
是什么原因导致我无法使用这段内存
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。