硬汉嵌入式论坛

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

[STM32H7] STM32H743ZI无bootloader软件升级问题?

[复制链接]

19

主题

72

回帖

129

积分

初级会员

积分
129
发表于 2020-9-9 13:15:34 | 显示全部楼层 |阅读模式
SoC: STM32H743ZI -> 2M Flash, 1M RAM。

Flash双BANK,BANK1: 0x8000000,  BANK2: 0x8100000

BANK1存储App, 它可以通过其他通讯方式下载新固件存储在BANK2,然后修改选项字以BANK2启动;

BANK2存储APP,它也可以通过其他通讯方式下载新固件存储在BANK1,然后修改选项字以BANK1启动;

如何在不修改链接器脚本Flash起始地址的情况下,能保证BANK2的程序正常运行?中断向量表部分的代码也通用,适用于BANK1和BANK2。
希望能做到对于工程来说,只修改应用程序代码,不修改其他的一些配置代码(比如中断向量表偏移,链接器脚本中flash起始地址等)。


2020-09-09_131015.png

回复

使用道具 举报

3

主题

70

回帖

79

积分

初级会员

积分
79
发表于 2020-9-9 14:57:33 | 显示全部楼层
其实部署ST sbsfu才是好办法,我已经使用SBSFU快两年了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107518
QQ
发表于 2020-9-9 17:16:19 | 显示全部楼层
HAL库里面有那个选项字节配置的API,可以配置启动地址。
回复

使用道具 举报

19

主题

72

回帖

129

积分

初级会员

积分
129
 楼主| 发表于 2020-9-10 10:54:43 | 显示全部楼层
eric2013 发表于 2020-9-9 17:16
HAL库里面有那个选项字节配置的API,可以配置启动地址。

找到了一个更好的方式,选项字里面有个“SWAP BANK”直接交换BANK。如果使用选项字修改启动地址,那可执行文件的链接地址和中断向量表都要变。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107518
QQ
发表于 2020-9-10 11:05:23 | 显示全部楼层
血染风采2017 发表于 2020-9-10 10:54
找到了一个更好的方式,选项字里面有个“SWAP BANK”直接交换BANK。如果使用选项字修改启动地址,那可执 ...

好办法
回复

使用道具 举报

19

主题

72

回帖

129

积分

初级会员

积分
129
 楼主| 发表于 2020-9-10 13:35:59 | 显示全部楼层

2020-09-10_092509.png

如果程序运行在Situation1,下载完升级固件后就将SWAP_BANK设为1,然后重启,就是Situation2的情况。

他们的程序入口地址都是0x8000000, 升级固件都是在0x8100000,只需要修改“SWAP_BANK”这个选项字,就能跳来跳去。


回复

使用道具 举报

3

主题

70

回帖

79

积分

初级会员

积分
79
发表于 2020-9-10 18:04:49 | 显示全部楼层
我之前打算采用这种方式,后来比较了SBSFU后,发现SBSFU更安全,更简单(应用程序不需要任何处理),而且在F7上,DUAL BANK flash读取宽度是128bit,single bank是256bit。
回复

使用道具 举报

19

主题

72

回帖

129

积分

初级会员

积分
129
 楼主| 发表于 2020-9-10 18:51:26 | 显示全部楼层
turnip 发表于 2020-9-10 18:04
我之前打算采用这种方式,后来比较了SBSFU后,发现SBSFU更安全,更简单(应用程序不需要任何处理),而且在 ...

可惜官方只做了串口的升级,如果要换成USB,网络等又要花大力气弄。安全问题完全可以在应用程序里面做,认证签名hash之类的都在应用程序里面,所有校验通过就可以执行了。SBSFU的链接器脚本和STM32CubeMX生成的区别有点大,说真的看的很难受。
回复

使用道具 举报

3

主题

66

回帖

75

积分

初级会员

积分
75
发表于 2020-9-10 20:47:22 | 显示全部楼层
turnip 发表于 2020-9-9 14:57
其实部署ST sbsfu才是好办法,我已经使用SBSFU快两年了。

sbsfu lib分享一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 13:01 , Processed in 0.183167 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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