就是说再编译的阶段,编译器就自动把变量定义到外部ram,而无需在代码中指定 ...
1. 修改.ld文件
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 256K
FLASH (xr) : ORIGIN = 0x8000000,LENGTH = 1024K
SDRAM (rw) : ORIGIN = 0xC0000000, LENGTH = 16M
}
SECTIONS
{
.sdramsec :
{
. = ALIGN(4);
_start_sdram = .;
*(.sdramss)
. = ALIGN(4);
_end_sdram = .;
} >SDRAM AT> FLASH
}2. 在适当的地方调用以下函数
extern uint32_t _start_sdram, _end_sdram;
void InitExtraSections(void)
{
uint32_t size = _end_sdram - _start_sdram;
memcpy((uint8_t *)_start_sdram, (uint8_t *)0xC0000000, size);
}
STM32 官方例子有,不过好像不是GCC的 Dandjinh 发表于 2018-10-12 13:29
1. 修改.ld文件
2. 在适当的地方调用以下函数
多谢指点,抽空试一下 多谢分享
页:
1
[2]