*vscode + stm32cubeide + jlink工程:启用 ccmram**
·
1.修改连接脚本STM32G431XX_FLASH.ld
/* Specify the memory areas */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 22K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 10K /* 新增:CCMRAM 10KB */
}
/*--- 用于CCMRAM的自定义段 ---*/
.ccmram :
{
. = ALIGN(4);
_sccmram = .;
*(.ccmram)
*(.ccmram*)
. = ALIGN(4);
_eccmram = .;
} >CCMRAM AT> FLASH /* 数据在Flash中初始化,运行时拷贝到CCMRAM */
- 代码中main函数开始手动复制flash内容到ccmram
ld中添加定义:
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */
_sidata_ccmram = LOADADDR(.ccmram); /* 新增 */
// 手动复制FLASH中的数据到ccmram
void ccmram_init(void)
{
extern uint32_t _sccmram;
extern uint32_t _eccmram;
extern uint32_t _sidata_ccmram;
uint32_t *pSrc = &_sidata_ccmram;
uint32_t *pDst = &_sccmram;
while (pDst < &_eccmram) {
*pDst++ = *pSrc++;
}
}

3.使用
#define CCMRAM __attribute__((section(".ccmram")))


4.debug时可查看地址
更多推荐

所有评论(0)