首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM32: ST-Link尝试刷新内存区域

STM32: ST-Link尝试刷新内存区域
EN

Stack Overflow用户
提问于 2018-08-16 20:51:56
回答 2查看 460关注 0票数 0

我正在使用一个128kB的普通内存和64kB的核心耦合内存(CCM)的STM32F407VG。我使用的是一个GCC工具链(SW4STM32)。在我的链接器脚本中,我对CCM进行了如下配置:

代码语言:javascript
复制
MEMORY 
{ 
FLASH (rx)     : ORIGIN = 0x08000000, LENGTH = 1024K     
RAM   (xrw)    : ORIGIN = 0x20000000, LENGTH = 128K 
CCM   (xrw)    : ORIGIN = 0x10000000, LENGTH = 64K       
}

SECTIONS
{   
...
.ccram :
{
    *(.ccram)
    *(.ccram*)
} >CCM
...

当我将任何变量放入.ccram部分时,我会得到一个ELF文件,该文件似乎告诉ST-Link它必须将内存刷新到0x10000000。当然,这是失败的,并告诉我

"Warn : no flash bank found for address 10000000"

当我从ELF文件创建一个HEX文件时,我发现0x10000000处有一个零块。当我从HEX文件中删除这个块时,我可以成功地刷新HEX文件(使用ST-Link Utility),并且我的代码可以在目标系统上完美运行。

那么,我如何告诉链接器(或任何人) CCM区域不应标记为闪存?

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 22:42:39

我认为你需要用>CCM AT> FLASH取代>CCM

这应该告诉它从闪存中获取初始值

票数 0
EN

Stack Overflow用户

发布于 2018-08-17 13:43:31

我得到了解决方案:

将"(NOLOAD)“添加到该节的描述中:

代码语言:javascript
复制
.ccram (NOLOAD):
{
    *(.ccram)
    *(.ccram*)
} >CCM
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51877550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档