STM32F429如果像使用内部SRAM一样使用外部SDRM

实现说明:
默认情况下,我们都是通过MDK的option选项设置Flash和RAM
在这里插入图片描述
这种情况下,所有管理工作都是编译来处理的,不方面用户将变量定义到指定的CCM 或者SDRAM中。而使用__attribute__指定具体地址又不方便管理。

针对这种情况,使用一个脚本文件即可解决,脚本定义如下:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00200000 { ; load region size_region
ER_IROM1 0x08000000 0x00200000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00030000 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM2 0x10000000 0x00010000 { ; RW data
*(.CCM_RAM)

}
RW_IRAM3 0xC0000000 0x01000000 { ; RW data
*(.SDRAM)

}
}
复制代码

同时配置option的链接选项使用此脚本:

在这里插入图片描述
注意:要勾选掉“Use Memory Layout form Target Dialog”否则无法选择.sct文件
使用方法:
使用方便很简单,依然是使用__attribute__,但是不指定具体地址了,指定RAM区,方法如下,仅需加个前缀即可:
/* 定义在CCM RAM里面的变量 */
attribute((section (".CCM_RAM"))) uint32_t CCMBuf1[10];
attribute((section (".CCM_RAM"))) uint16_t CCMCount;

/* 定义在SDRAM里面的变量 */
attribute((section (".SDRAM"))) uint32_t SDRAMBuf1[10];
attribute((section (".SDRAM"))) uint32_t SDRAMCount;
复制代码

然后就可以直接使用变量,不过注意一点,使用SDRAM中的变量前,优先初始化SDRAM.

原文链接:http://forum.armfly.com/forum.php?mod=viewthread&tid=89275&highlight=sdram
感谢原文作者的无私奉献。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值