这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 各位小伙伴们你们是如何划分STM32F407这样的不等分flash块的?

共4条 1/1 1 跳转至

各位小伙伴们你们是如何划分STM32F407这样的不等分flash块的?

院士
2026-05-18 23:40:15     打赏

STM32F407的Flash块(扇区)是有大有小的,并不是等分的。我问了AI,AI回复我“为了在代码更新灵活性与擦除效率之间取得平衡‌。”

STM32F407VE 的 Flash 存储器容量为 ‌512 KB‌,采用 ‌非对称扇区结构‌,共划分为 ‌8 个扇区‌(Sector 0–7),每个扇区大小不同,适用于不同应用场景。以下是其 Flash 扇区划分详情:

Flash Sector 划分表

扇区编号起始地址容量典型用途说明
Sector 00x0800 000016 KB启动代码、中断向量表
Sector 10x0800 400016 KB系统配置或小型模块
Sector 20x0800 800016 KB应用程序代码
Sector 30x0800 C00016 KB应用程序代码
Sector 40x0801 000064 KB主程序主体区域
Sector 50x0802 0000128 KB用户数据、日志、参数存储
Sector 60x0804 0000128 KB固件备份区或大容量数据存储
Sector 70x0806 0000128 KB扩展功能区、伪EEPROM、配置备份

右侧为给出来的建议,大家都是如何这种非等分扇区的呢?




关键词: STM32F407     flash     sector    

工程师
2026-05-26 20:04:18   被打赏 35 分(兑奖)     打赏
2楼

虽然我不知道厂家为什么要这么划分,不过一定是有规划得,我在想是不是跑系统得时候更兼容,以及资源的利用更得当。已经好久没写代码了,主攻电源,请带带我。


助工
2026-05-26 20:05:28   被打赏 50 分(兑奖)     打赏
3楼

我虽然也有STM32F407的板子,还是正点原子的探索者,但没怎么用,常使用STM32F411。但STM32F407类似,它的flash分配也并不是每个扇区为4KB,结构为:

#define ADDR_FLASH_SECTOR_0     ((uint32_t)0x08000000) /* Base address of Sector 0, 16 Kbytes   */
#define ADDR_FLASH_SECTOR_1     ((uint32_t)0x08004000) /* Base address of Sector 1, 16 Kbytes   */
#define ADDR_FLASH_SECTOR_2     ((uint32_t)0x08008000) /* Base address of Sector 2, 16 Kbytes   */
#define ADDR_FLASH_SECTOR_3     ((uint32_t)0x0800C000) /* Base address of Sector 3, 16 Kbytes   */
#define ADDR_FLASH_SECTOR_4     ((uint32_t)0x08010000) /* Base address of Sector 4, 64 Kbytes   */
#define ADDR_FLASH_SECTOR_5     ((uint32_t)0x08020000) /* Base address of Sector 5, 128 Kbytes  */
#define ADDR_FLASH_SECTOR_6     ((uint32_t)0x08040000) /* Base address of Sector 6, 128 Kbytes  */
#define ADDR_FLASH_SECTOR_7     ((uint32_t)0x08060000) /* Base address of Sector 7, 128 Kbytes  */

我的bootloader所用的空间比较小,一般就存放一个扇区即第0扇区,为了避免后续有更多的功能,可以先保留第一扇区不动

boot起始地址

第3扇区留在用作存放升级标志使用,独占一个扇区,没办法最小擦除单位为16KB,第4扇区用作存放重要数据。第5扇区放app,第6扇区放app备份,第7扇区放更新的app。这样是升级异常还能回退版本。当然仅限于app大小不大才能这样做。


工程师
2026-05-27 16:28:18     打赏
4楼

我们现在就是使用Keil默认的方式。

烧录程序后直接跑呗!

升级的话,使用官方的ISP方式。也是串口,区别不大的


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]