打印
[AT32F415]

USB升级疑惑

[复制链接]
2133|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
billy_2005|  楼主 | 2021-5-26 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问在官方的USB升级程序实验里,我们知道分BOOT空间和用户空间。我想了解的是通过USB传递给单片机的BIN文件是存到BOOT空间还是直接存在用户空间后,再进行CRC校验的?  如果存在BOOT空间(官方文档是定义32K),很容易超空间,如果存在用户空间,又存在把默认用户空间的代码覆盖。这块是怎样权衡的,请指教。

使用特权

评论回复
沙发
muyichuan2012| | 2021-5-26 09:54 | 只看该作者
BOOT程序使用的AT32自带的硬件CRC校验,所以不存在你说的担忧。

使用特权

评论回复
板凳
billy_2005|  楼主 | 2021-5-26 10:38 | 只看该作者
muyichuan2012 发表于 2021-5-26 09:54
BOOT程序使用的AT32自带的硬件CRC校验,所以不存在你说的担忧。

你好,我的疑惑是这样
疑惑一:接收的BIN文件到底是存放在什么地方。
疑惑二:如果直接存在用户层.  一般怎样跟默认的用户层程序作避开,因为要考虑到如果传输过程出现乱码,这个BIN文件是不能用的。比如 BOOT->系统默认用户层程序->待升级BIN文件(CRC校验OK,再覆盖到APP起始空间?)

使用特权

评论回复
地板
Prry| | 2021-5-26 12:28 | 只看该作者
基本原理:
1、bin放在备份区,校验。
2、传输完成,记录个标志,复位。
3、boot启动读出升级标志,从备份区拷贝bin到app区,拷贝完成,校验,跳转到app。升级完成!

使用特权

评论回复
5
muyichuan2012| | 2021-5-26 18:02 | 只看该作者
建议看一下AT32  DFU协议
地址如下:
https://bbs.21ic.com/icview-3135392-1-1.html

使用特权

评论回复
6
单片小菜| | 2021-5-26 22:12 | 只看该作者
这个确实可以好好探讨一下的。

使用特权

评论回复
7
billy_2005|  楼主 | 2021-5-27 09:22 | 只看该作者
Prry 发表于 2021-5-26 12:28
基本原理:
1、bin放在备份区,校验。
2、传输完成,记录个标志,复位。

你好,针对问题1:这个备份区是指应用程序空间么?如果应用程序空间是128K,如果我要更新的程序是80K,那是不是代表不允许更新这么大的程序?(默认程序+备份区程序空间应该要少于芯片空间,比如假定的128K)

使用特权

评论回复
8
Prry| | 2021-5-27 23:46 | 只看该作者
billy_2005 发表于 2021-5-27 09:22
你好,针对问题1:这个备份区是指应用程序空间么?如果应用程序空间是128K,如果我要更新的程序是80K,那 ...

备份区是用来临时存放升级文件的,必须大于等于升级文件包。比如你flash只是128K,程序达到了80K。建议增加一个spi flash作为备份区,存放升级文件。假设应用程序不大,可以这样分配:boot 10K+APP 59K+备份区59K。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

84

帖子

1

粉丝