硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5060|回复: 10
收起左侧

[STM32H7] STM32H7自带Flash模拟EEPROM的例子

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2018-8-2 01:51:14 | 显示全部楼层 |阅读模式
下载STM32H7的Cube软件包,在如下路径下:
QQ截图20180802015102.png
回复

使用道具 举报

1

主题

70

回帖

73

积分

初级会员

积分
73
发表于 2018-8-2 09:04:57 | 显示全部楼层
flash模拟eeprom是不是烧个程序就会把模拟eeprom的内容全变成0xff了啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
 楼主| 发表于 2018-8-2 09:06:15 | 显示全部楼层
aloevera 发表于 2018-8-2 09:04
flash模拟eeprom是不是烧个程序就会把模拟eeprom的内容全变成0xff了啊

全部变成0xff,可以直接下载的时候选择整个芯片擦除即可。

回复

使用道具 举报

1

主题

70

回帖

73

积分

初级会员

积分
73
发表于 2018-8-2 09:12:45 | 显示全部楼层
本帖最后由 aloevera 于 2018-8-2 09:14 编辑

我的意思 下载的时候在什么地方可以设置擦除的地址范围,保留模拟eeprom的flash空间的数据
回复

使用道具 举报

1

主题

70

回帖

73

积分

初级会员

积分
73
发表于 2018-8-2 09:14:48 | 显示全部楼层
eric2013 发表于 2018-8-2 09:06
全部变成0xff,可以直接下载的时候选择整个芯片擦除即可。

我的意思 下载的时候在什么地方可以设置擦除的地址范围,保留模拟eeprom的flash空间的数据
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
 楼主| 发表于 2018-8-2 09:16:25 | 显示全部楼层
aloevera 发表于 2018-8-2 09:14
我的意思 下载的时候在什么地方可以设置擦除的地址范围,保留模拟eeprom的flash空间的数据

放在末尾扇区。

option选项配置flash地址范围
回复

使用道具 举报

0

主题

105

回帖

105

积分

初级会员

积分
105
发表于 2018-8-2 09:27:36 | 显示全部楼层
aloevera 发表于 2018-8-2 09:14
我的意思 下载的时候在什么地方可以设置擦除的地址范围,保留模拟eeprom的flash空间的数据

可以直接在下载工具设置的第三个选项卡中设置擦除范围。
一般擦除选择的sector,在烧程序的时候就只擦除目标程序安排的block了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
 楼主| 发表于 2018-8-2 09:33:39 | 显示全部楼层
barryxiao 发表于 2018-8-2 09:27
可以直接在下载工具设置的第三个选项卡中设置擦除范围。
一般擦除选择的sector,在烧程序的时候就只擦除 ...

这样就有个问题,需要用户强制将指定扇区占用下来才行,防止编译器往这个扇区编译代码。
类似下面这样:

/* 将16KB 一个扇区的空间预留出来做为参数区 For MDK */
//const uint8_t para_flash_area[16*1024] __attribute__((at(ADDR_FLASH_SECTOR_3)));
回复

使用道具 举报

0

主题

105

回帖

105

积分

初级会员

积分
105
发表于 2018-8-2 10:10:16 | 显示全部楼层
eric2013 发表于 2018-8-2 09:33
这样就有个问题,需要用户强制将指定扇区占用下来才行,防止编译器往这个扇区编译代码。
类似下面这样: ...

是这样的。不过一般来讲keil链接出的bin都是顺序排放的,占体积40k的bin一般不会影响到40k之后的空间。
在能估测程序大小的前提下,用尾部空间直接存放数据也是没大问题
回复

使用道具 举报

0

主题

105

回帖

105

积分

初级会员

积分
105
发表于 2018-8-2 10:13:24 | 显示全部楼层
本帖最后由 barryxiao 于 2018-8-2 10:15 编辑
eric2013 发表于 2018-8-2 09:33
这样就有个问题,需要用户强制将指定扇区占用下来才行,防止编译器往这个扇区编译代码。
类似下面这样: ...

用attribute强制保留的话会存在一个瑕疵。就是hex文件在程序本体到attribute指定的地址这段空间会被初始化为默认的数据,变相“增大”了程序的体积,使用自定义IAP程序的话,会比较慢除非是把定义的块之间插入到程序地址空间内,就不会莫名增大程序体积。这样操作不好会很危险
回复

使用道具 举报

0

主题

22

回帖

188

积分

初级会员

积分
188
发表于 2018-8-2 16:21:26 | 显示全部楼层
谢谢分享,收藏备用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 18:34 , Processed in 0.310781 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表