埃斯提爱慕
发布时间:2024-7-21 10:48
|
跌跌撞撞,历经一个星期,终于实现了功能。 双BANK的好处是,不再像以前一样,需要一个bootloader程序来负责跳转,程序始终运行在0x08000000起始的位置。在用户程序中,只管接收新固件,并存放在另一个BANK中,也就是0x08040000起始的区域,接收完成后,切换SWAP_BANK,重新,即可。 https://shequ.stmicroelectronics.cn/thread-643647-1-1.html 还是在这个工程基础上修改。 首先找用户手册里相关的说明。
看了这些后,就认为只要按步骤,改变SWAP_BANK位就可以了。在STM32CubeProgrammer
勾选SWAP_BANK选项后,再读Flash。
通过这个验证,我再次觉得使用很简单,因为程序都是从0x08000000处复位运行。也就是当SWAP_BANK未勾选时,应用程序中,将新固件接收,并写到0x08040000开的的程序空间(BANK2区域),然后通过勾选SWAP_BANK,新程序就变到了0x08000000的位置,下次复位运行就是新程序了。这样就省掉了原来bootloader。 移植一个Ymodem,用于下载新的固件。(这个就不多细说了,官方例程里有)
同样,也读出来确认一下,两个区域都有程序
勾选SWAP_BANK,复位程序
试到这里,功能是实现了,但我们实际应用中可不能用下载软件来切换。还得在程序里实现切换SWAP_BANK。 修改程序 需要注意的是,擦除需要根据SWAP_BANK的状态来决定擦除BANK1还是BANK2。而写flash的地址,不需要管SWAP_BANK的状态,都是从0x08040000到0x0807ffff。
|
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【STM32U3评测】CANFD Bootloader(1)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
STM32家族再添猛将:STM32H5F/E高性能系列,4MB闪存+Chrom-ART2,专为中高级图形应用而生
【逢7发帖赢大礼】#5 Arduino UNO Q的led matrix
【逢7发帖赢大礼】#4 使用Arduino APP LAB 玩arduino UNO Q
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】#3 STM32U新进驻的新开发板Arduino UNO Q
【逢7发帖赢大礼】#2 STM32F429-Discovery在 Arduino 中的使用
微信公众号
手机版
感谢