完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位好,目前正在用STM32H723ZET6做IAP升级,发现一个比较严重问题,FLASH擦除时只能使用BANK擦除和SECTOR擦除。BAN1擦除是把FALSH全部擦掉,所以不考虑;SECTOR擦除是把其中一个SECTOR擦除,由用户指定,所以我使用了SECTOR擦除。
STM32H723ZET6共有512K FLASH,由4个SECTOR组成(每个SECTOR由128K组成);整块FLASH由APP和BOOTLOADER组成,由于最小擦除单位是128K,因此app和bootloader不能放在同一个SECTOR(防止擦除APP时将BOOTLOADER也擦除)。因此,APP使用了256K,BOOTLOADER使用了128K。如果我想把BOOTLOADER放小,该怎么做? 程序从0800 0000开始运行,首先判断APP的首地址(0802 0000)和尾地址(0806 0000)固定地址的固定字符是否完整,如果完整的话,就跳到APP应用程序去执行;如果不完整,将在BOOTLOADER中等待升级。正常升级时,在APP应用程序中将APP的首地址(0802 0000)和尾地址(0806 0000)固定地址修改为其他字符,重启后BOOTLOADER就会认为APP不完整,等待升级了。但是由于只能擦除128K,导致在擦除固定字符时,也把全APP应用程序全部擦除了。导致无法实现IAP在线升级功能。 STM32F103系列对FLASH操作时有PAGE页擦除,一次只擦除1K,因此没有问题。 所以想请教下各位,STM32H723ZET6是否有擦除小于128K的FLASH的指令;如果没有,各位的IAP是如何实现的,不胜感激! |
|
相关推荐
3 条评论
1个回答
|
|
根据ST官方提供的参考手册,STM32H7系列的Flash存储器擦除操作是以扇区为单位进行的。每个扇区的大小为128K字节,在STM32H723ZET6中的FLASH有4个扇区。
在您的情况下,您可以通过重新分配Flash空间来减小BOOTLOADER的大小。您可以将FLASH的前两个扇区用于APP,总共256K大小,然后将后面的两个扇区分配给BOOTLOADER,总共256K大小。 这样,您可以使用SECTOR擦除指令来擦除特定的扇区,而不会影响其他扇区的内容。例如,要擦除第三个扇区(即BOOTLOADER所在的扇区),您可以使用如下代码片段: ```c // Unlock the Flash HAL_FLASH_Unlock(); // Erase the third sector FLASH_Erase_Sector(FLASH_SECTOR_2, FLASH_VOLTAGE_RANGE_3); // Lock the Flash HAL_FLASH_Lock(); ``` 请注意,此代码片段使用了HAL库中的函数,您需要根据您所使用的具体库和代码结构进行相应的更改。 重新设计Flash分配和对应的擦除和写入操作需要小心操作,确保不会意外擦除或写入到错误的位置。建议在进行任何更改之前备份原始固件,以防止出现不可恢复的问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
2016 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1796 浏览 1 评论
1260 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
832 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1821 浏览 2 评论
2052浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
960浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
349浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
692浏览 3评论
675浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-12 07:35 , Processed in 1.198784 second(s), Total 72, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191