[STM32H7] CubeIDE 调试器 - 如何控制编程/擦除闪存的大小?

[复制链接]
 楼主| lvluoo 发表于 2025-4-8 10:00 | 显示全部楼层 |阅读模式
本帖最后由 lvluoo 于 2025-7-28 21:51 编辑

在单核 H743 或 H753 上调整boot程序和应用程序存储区域。
boot加载程序位于 bank1 的扇区 0 中,应用程序位于扇区 1 中。
当我开始调试boot程序加载应用程序时,会擦除扇区 1 和扇区 0。
每个程序都远低于 128K,将 FLASH 的大小定义为 128K。
假如我想刷写两个程序则需要先放置扇区 0 映像 (botloader),然后是扇区 1 。
如何分别擦除这两个扇区呢,扇区0什么时候擦除,扇区1是在boot中擦除?

powerantone 发表于 2025-5-13 16:39 | 显示全部楼层
扇区0(Bootloader):仅在更新Bootloader时擦除,通常由开发人员手动操作或通过调试工具完成。
扇区1(应用程序):由Bootloader在需要更新应用程序时擦除,确保应用程序更新的独立性。
避免同时擦除:通过精确的扇区擦除代码或调试工具配置,避免同时操作扇区0和扇区1。
淡漠安然 发表于 2025-6-10 10:30 | 显示全部楼层
在STM32H743/H753双Bank Flash架构中,需精确控制Bootloader(扇区0)和应用程序(扇区1)的擦除逻辑,避免误擦除导致系统崩溃
三生万物 发表于 2025-6-10 11:23 | 显示全部楼层
可通过调试接口(如ST-Link):在开发阶段,使用STM32CubeProgrammer等工具单独擦除扇区0并烧录新Bootloader
冰春彩落下 发表于 2025-6-10 12:00 | 显示全部楼层
若需Bootloader自更新,需设计双Bootloader机制(主Bootloader和备份Bootloader),Bootloader启动后,检查是否需要更新应用程序(如通过标志位或通信协议)
夜阑风雨 发表于 2025-6-10 12:39 | 显示全部楼层
若需更新,擦除扇区1。将新应用程序写入扇区1。验证应用程序的完整性。跳转到应用程序执行
远山寻你 发表于 2025-6-10 13:00 | 显示全部楼层
在擦除和写入Flash前,必须调用HAL_FLASH_Unlock()解锁Flash。操作完成后,调用HAL_FLASH_Lock()重新锁定Flash,防止误操作
别乱了阵脚 发表于 2025-6-10 19:04 | 显示全部楼层
STM32H7系列支持双Bank架构,可利用Bank2作为备份区域,实现更安全的更新机制。
一秒落纱 发表于 2025-6-10 20:00 | 显示全部楼层
确保Bootloader和应用程序的启动地址正确配置(如Bootloader在扇区0,应用程序在扇区1)。通过BOOT_ADDR或OPTION_BYTE配置启动Bank
江河千里 发表于 2025-6-10 23:00 | 显示全部楼层
在Flash操作期间,应禁用中断,避免中断服务程序修改Flash内容
暖了夏天蓝了海 发表于 2025-6-11 10:00 | 显示全部楼层
关键点:Bootloader和应用程序需严格限制在各自扇区内,避免跨扇区操作
光辉梦境 发表于 2025-6-11 12:00 | 显示全部楼层
在Flash操作中添加错误处理逻辑,如擦除失败、写入失败等情况。先单独测试Bootloader的擦除和写入功能。再测试应用程序的更新和跳转功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

43

主题

69

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部