[单片机芯片] 【CH32X035评估板测评】+5 实现U盘固件更新及注意事项

[复制链接]
 楼主| 6552918 发表于 2023-10-15 21:56 | 显示全部楼层 |阅读模式
#申请原创# #技术资源# @21ic小管家

X035的开发板上有个USB-A口,之前实现了使用SD卡的固件升级,这次来实现一个U盘固件更新功能,同时分享一下遇到的问题
原本还想着要自己移植fatfs文件系统再实现USB升级功能的,但看了厂家例程发现,厂家有自己的U盘库,这就省去了不少麻烦,但有部分核心文件是以.a形式的库文件提供的,测试发现的问题也正是由着里引起的。
ea21113ce05540dc9f146f2496a4eb5d
初始化部分直接调用厂家提供的函数即可
764fc72c224948f448021f190626ad45
固件更新的操作都是在UDisk_USBH_IAP( );内实现的
586104e0a29144a0c1b52f37cac2e121
首先使用UDisk_USBH_DiskReady函数检查U盘是否就绪
3045e606e93940a42f0d0bc0d55d6e1b
如果U盘就绪,再进行文件打开,这里需要注意的是,文件名称必须是大写,但实际文件名可以是小写,否则找不到文件(应该和厂家的库有关)
227b6df4af6dfcc05ad93443e8a2c820
如果文件打开正常,先获取一下文件的大小,为下面的文件读取做准备
1bcc68f28d3bc9afb0aebc4a7bb6ed5a
根据文件大小,开始逐次读取文件内容
2f89183af644634a78f1e010389abebf
这里有个地方需要注意,接收缓存区的大小不能超过255,否则会报错(.a文件内的数据类型有限制)。
01d8c090e8581b1a08d612f26b2200bd
eb58c6653b18b49b3ee2b710d74b9021
我这里根据我的实际情况修改为了128
c7d574084a7b97b21ba6e87fa8e77ce6
因为每次读取的数据长度最大是128字节,但芯片flash的编程页大小是256,所以需要对两次读取的数据进行拼包处理,满256字节会最后一包时再去写入编程。
2cf562ac07febfd28619acbccb07c27b
升级文件都写入完成后就可以进行跳转了
db37c746c1ebc04a0c3425281ae27fd9
实现效果
启动升级
c5979c81daa8a9ca8af82cb5ddb60279
升级完成后
7b6a9d157e271b788d4183d19038ca39
至此,使用U盘进行固件更新和问题点就介绍完了。
HOST_Udisk_IAP.zip (843.63 KB, 下载次数: 16)

评论

不错,赞一个  发表于 2023-10-30 21:50
chenjun89 发表于 2023-10-17 07:54 来自手机 | 显示全部楼层
勇FATFS通用性更强
 楼主| 6552918 发表于 2023-10-17 10:15 | 显示全部楼层
chenjun89 发表于 2023-10-17 07:54
勇FATFS通用性更强

是的,移植更方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1290

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1290

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部