你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用keil设置sct文件配置变量存储区存储软件版本号,芯片型号等

[复制链接]
qinsmoon 提问时间:2021-1-8 17:01 /
想请教一下各位:

在kiel里面用类似section的定义(配置keil的sct文件)来定义一个page(比如flash的最末尾的一个page),然后用attribute关键字+section的方式将变量定义并存储在flash的固定section,比如软件版本号:
如下是sct文件(也取消勾选了keil里面的Use Memory Layout from Target Dialog):

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00014000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00014000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IROM2 0x08017000 0x0000800{
    .ANY (cpdata)
  }
}
1.png

然后在一个C文件里面定义了软件版本号,想存储在指定地址的section(0x08017000起始的2k=0x800区域内),如下是一个C文件中的指定变量到指定section的语句:
#define CPDATA  __attribute__((section("cpdata")))
CPDATA  uint8_t softversion[8] = "20210108";
2.png

编译链接后的map文件并未能找到软件版本号变量的地址分配信息(说明:芯片flash是512K的STM32G4开发板);
3.png
但是查看map文件找不到softversion变量的地址分配信息,下载到单片机看0x08017000也没有对应的数据,想请教下大家有没有类似的经验,谢谢。
收藏 评论1 发布时间:2021-1-8 17:01

举报

1个回答
qinsmoon 回答时间:2021-2-27 11:18:50
经过一番折腾和摸索,我找到了比较合理的处理办法,大家可以参考我在ST community的回复,希望对你们有所帮助:
https://community.st.com/s/quest ... Email=1&s1ext=0

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版