Dandjinh 发表于 2018-10-12 13:29:35

黑皮男 发表于 2018-10-11 13:16
就是说再编译的阶段,编译器就自动把变量定义到外部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);
}


huangxuejia-292 发表于 2018-10-12 17:30:53

STM32 官方例子有,不过好像不是GCC的

黑皮男 发表于 2018-10-13 13:38:00

Dandjinh 发表于 2018-10-12 13:29
1. 修改.ld文件
2. 在适当的地方调用以下函数

多谢指点,抽空试一下

rockzhouchina 发表于 2018-10-16 15:03:31

多谢分享
页: 1 [2]
查看完整版本: 如何把外部SRAM像内部RAM一样分配变量