硬汉嵌入式论坛

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

[客户分享] 已完成STM32F105 USB-IAP 版本升级,突破2GB限制

  [复制链接]

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-6-10 17:21:42 | 显示全部楼层 |阅读模式
序言:十年前 USB-IAP是 F105/07比较闪亮的功能,官网也有 USB-IAP的例程。十年后的今天找这个很难找,因为USB-OTG功能发展迅速,其IAP功能也没必要做太多的动作和宣传。

最进一段时间,跟随V5的OTG介绍,第三次琢磨USB IAP,思路清晰了很多:对比发现以前官网例程用的OTG库是10年前的,efs是十几年前的。所以这个loader用在产品,终端用户升级服务一直有瓶颈(个别地区找不到小于2GB的U盘)
我的研究思路:找一个新一点的OTG浏览U盘图片的工程做模板,然后理解和分析自己需要的功能是两部分:1.USB主机功能,2.识别大容量U盘。 目的是突破之前产品识别不了大于2GB的瓶颈。

接着拆分研究,新的模板单独将OTG库 2.1继续升级到2.2 。实现USB识别能力的进一步提升。
然后在对比升级FAT32的版本 R0.9升级到 R0.11 并且验证对bin文件的打开、读。
最后参考之前的升级程序,进行APP目标区域 擦page,写page。加上条件触发升级,否则直接跳转到APP运行。
F107识别大于2G的U盘 实现IAP loader的思路大致如上。

测试结果如图

相对精简的loader大小.jpg
2GU盘升级截图.jpg
支持大于2GU盘升级截图1.jpg
支持大于2GU盘升级截图2.jpg
Releasing your creativity
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-10 18:39:22 | 显示全部楼层
本帖最后由 廷润 于 2019-6-24 14:47 编辑

网上很多资源都不维护 F1了,自己的产品用到,mark。

2019-06-15 将升级APP的功能进一步拓展,升级用户数据。
实现升级用户编辑的数据文件发现一个坑:
烧录循环         ”        for(program_counter = tmp_read_size;program_counter != 0;program_counter -= 4)
如果用户编辑的数据 不是4个字节对其,那么program_counter == 0;的条件会有问题。

我的解决方法在for循环烧写里面加了一个这样的粗暴判断:     if(program_counter < 4) break;   
mark.

2019-06-24
升级新库后,量产前测试发现没接U盘,没有运行到   case HOST_DEV_DISCONNECTED : 这个条件,导致自定义的错误码显示不出来。
测试发现,按键触发OTG升级功能,当USB没有接上,停在了   case HOST_IDLE :这个条件,给使用者的提示 埋在这里是一个建议。


Releasing your creativity
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-6-10 20:27:35 | 显示全部楼层
廷润 发表于 2019-6-10 18:39
网上很多资源都不维护 F1了,自己的产品用到,mark。

没附件吗
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-11 08:55:43 | 显示全部楼层

http://www.armbbs.cn/forum.php?m ... t=2.2.0%B0%E6%B1%BE
http://www.armbbs.cn/forum.php?m ... t=2.2.0%B0%E6%B1%BE
http://www.armbbs.cn/forum.php?m ... t=2.2.0%B0%E6%B1%BE
http://www.armbbs.cn/forum.php?m ... t=2.2.0%B0%E6%B1%BE
论坛这几篇文章你应该也看过。去年第一次看没看懂,今年年初提问题别人回答我思路也看不懂,最近第三次琢磨就理顺了。
刚好前段时间有人说新的IAP 100KB左右,然后在深刻一点点理解自己使用需求,发现F1 IAP用两个新库还可以实现29KB左右的loader。
你用的是哪个芯片平台?我的是F105
Releasing your creativity
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-11 09:18:31 | 显示全部楼层
本帖最后由 廷润 于 2019-6-11 14:15 编辑

如果要琢磨裁剪,可以加Q 1084156885
今天把新loader 改装到另外一个彩屏的产品。
320*240相关的驱动+字库显示,升级菜单显示已经超了32KB,浓缩后loader占用的存储空间如图所示。
320_240彩屏loader删减后.jpg
Releasing your creativity
回复

使用道具 举报

29

主题

231

回帖

318

积分

高级会员

积分
318
发表于 2019-6-11 16:51:30 | 显示全部楼层
大神,膝盖接收~
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-12 13:32:40 | 显示全部楼层
删减后的loader,踩了一个坑。刚开始以为MDK4编译的loader与MDK5编译的APP不兼容。经过分析定位是串口打印的兼容性问题,已解决。

当前发布使用的版本大小如图所示。
最终版本loader大小.jpg
Releasing your creativity
回复

使用道具 举报

4

主题

129

回帖

146

积分

初级会员

积分
146
发表于 2019-6-22 15:51:15 | 显示全部楼层
廷润 发表于 2019-6-12 13:32
删减后的loader,踩了一个坑。刚开始以为MDK4编译的loader与MDK5编译的APP不兼容。经过分析定位是串口打印 ...

请问打印的兼容性是怎么解决的的?
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-24 08:52:09 | 显示全部楼层
Dinor 发表于 2019-6-22 15:51
请问打印的兼容性是怎么解决的的?

你的组合是怎样?问题现象是怎样?
Releasing your creativity
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-6-26 20:07:53 | 显示全部楼层
本帖最后由 廷润 于 2019-6-26 20:10 编辑

今天把loader一点一滴导通到新产品,终于发现一个 bug的原因。
#define BUFFER_SIZE                      ((uint16_t)4*8192), 测试发现,把 * 8192去掉就可以全屏刷新页面了。
针对图片现象的bug,具体根据自己的需求平衡。
当前我的需求是在loader 夹带的出厂测试程序会有这种bug现象。
简单刷新全屏颜色异常.jpg
Releasing your creativity
回复

使用道具 举报

73

主题

1200

回帖

1419

积分

至尊会员

积分
1419
发表于 2019-11-11 11:06:29 | 显示全部楼层
谢谢分享~~
回复

使用道具 举报

6

主题

90

回帖

108

积分

初级会员

积分
108
发表于 2019-11-13 09:57:31 | 显示全部楼层
F105和F107是一样的吧,我F107随便 识别 32G,16G,8G只要是FAT文件系统就行, 大于2G不知道有这个问题,我也是用的老库
回复

使用道具 举报

6

主题

90

回帖

108

积分

初级会员

积分
108
发表于 2019-11-13 09:59:24 | 显示全部楼层
FATFS 0.10b, USBHOST 是V2.2,之前是用的V2.1
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
 楼主| 发表于 2019-11-13 10:07:32 | 显示全部楼层
mygod 发表于 2019-11-13 09:57
F105和F107是一样的吧,我F107随便 识别 32G,16G,8G只要是FAT文件系统就行, 大于2G不知道有这个问题,我 ...

之前用的是很早之前官网 USB_IAP的例程。
Releasing your creativity
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 16:30 , Processed in 0.376382 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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