我使用的芯片是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文件----------------------------------------------------------------------------------
是什么原因导致我无法使用这段内存
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢原子哥,我刚才看了下L433是没有CCM的这是F系列的特有属性。
一周热门 更多>