你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

好久不来论坛了,过来怀念一下

[复制链接]
hhhhhhhaa 提问时间:2021-1-19 15:03 /
最近想学习一下stm32通过U盘和SD卡来升级程序,也就大家所说的IAP或者叫BootLoader,有没有好的资源推荐一下啊,家人们
收藏 评论12 发布时间:2021-1-19 15:03

举报

12个回答
废鱼 回答时间:2021-1-19 17:13:39
和IAP类似的,一个是通过网络或者串口将数据下载到指定位置,一个是将SD或者U盘中的数据导入到FLASH中,都是通过BootLoader代码进行处理,要注意升级后,删除或者修改bin文件,避免重复升级。
hhhhhhhaa 回答时间:2021-1-19 20:37:27
安 发表于 2021-1-19 17:13
和IAP类似的,一个是通过网络或者串口将数据下载到指定位置,一个是将SD或者U盘中的数据导入到FLASH中,都 ...

大神好啊,说一下我的理解吧,我看了几个例程,
有的是说上电后进入上电复位中断,在这里进行程序的跳转,判断标志位,这样就可以知道是进入IAP还是APP ,
进入IAP后,关闭所有的中断,识别U盘或SD卡的文件是否是BIN或者HEX文件,这样的话就需要支持文件操作系统比如用FATFS文件操作系统,识别有了升级用的文件后,紧接着判断文件的大小是否超过了flash的范围,如果超过了就不升级,如果没有超过就将HEX文件或者BIN文件写入到FLASH中,写完后判断是否写完,将标志位清零,然后再打开所有的中断,将PC指针赋值给APP上main的地址

这上面有几个问题没有搞清楚,第一,比如用U盘或者SD卡的话怎么将BIN或者HEX文件的内容复制到FLASH中?
                                             第二,关于IAP的跳转是怎么跳的呢?需要修改PC指针的位置还是?
radio2radio 回答时间:2021-1-19 21:32:28
这个操作的复杂程度,与你的要求有关。
最简单的情况是,无论什么bin/hex文件,都能够写入,不怕变砖。

复杂一点的,要进行版本控制,不是新的版本,不烧。
再复杂一点的,要进行完整性确认,被篡改了的代码,不烧。
再复杂一点的,要加密和解密,发现任何不对的地方,不烧。
再复杂一点的,要保存一个Bootloader备份,万一变砖,至少可以强制恢复重启Bootloader。
再复杂一点的,要保存一个当前完整程序版本的备份,万一升级失败或者新版本死机,马上自我恢复备份版本。
等等,看需求。
hhhhhhhaa 回答时间:2021-1-19 21:48:01
radio2radio 发表于 2021-1-19 21:32
这个操作的复杂程度,与你的要求有关。
最简单的情况是,无论什么bin/hex文件,都能够写入,不怕变砖。

感谢大神的思路,确实让我了解的很多,以前一直以为只要是有hex文件或者bin文件直接烧写就行了,没想考虑到您说的这些
言归正传,如果要是从U盘烧写到flash的话是不是需要有文件管理系统呢,具体操作的话是不是通过文件管理系统,从U盘里拷贝hex或者bin文件到flash里呢?
radio2radio 回答时间:2021-1-19 22:28:06
hhhhhhhaa 发表于 2021-1-19 21:48
感谢大神的思路,确实让我了解的很多,以前一直以为只要是有hex文件或者bin文件直接烧写就行了,没想考虑 ...

首先,你的升级U盘是不是PC写出来的,PC一般最常见的也是FAT32或者FAT16/FAT12格式化的了。
那么你的Bootloader一般不需要完整的文件管理系统,只需要能够读出文件即可。 找一个可以用的参考例程,拿过来用就是了。

如果你的RAM/SDRAM足够大,当然可以一次全部bin/hex读出到RAM,然后再慢慢写入Flash。
合理的做法是,每次读出一个Flash的Sector大小,每种IC可能都不同(1KB~64KB?)。
废鱼 回答时间:2021-1-20 10:07:39
一般是先运行BootLoader程序,判断是否有需要升级的问题。没有升级文件,跳转到APP程序。
从U盘中读取到bin文件后,按照APP的起始地址开始写入到FLASH。
hhhhhhhaa 回答时间:2021-1-20 15:09:26
安 发表于 2021-1-20 10:07
一般是先运行BootLoader程序,判断是否有需要升级的问题。没有升级文件,跳转到APP程序。
从U盘中读取到bin ...

我看好多思路也是这样的,现在我没搞懂的是怎么从U盘读取文件,正在学习关于U盘的知识,读出来以后就可以写入了,写入FLASH这个事儿我会做,因为以前用过FLASH当存储用
hhhhhhhaa 回答时间:2021-1-20 15:12:13
radio2radio 发表于 2021-1-19 22:28
首先,你的升级U盘是不是PC写出来的,PC一般最常见的也是FAT32或者FAT16/FAT12格式化的了。
那么你的Boot ...

嗯,感谢大佬的指导,U盘中的文件是keil编译后的HEX文件或者BIN文件,U盘的话一般格式化成fat32格式的,例程的话暂时还没找到,感觉网上这方面的资料挺少的,或者是我找的方式不对,大佬如果有例程的话方便发一个让小弟学习一下吗
radio2radio 回答时间:2021-1-20 15:50:40
hhhhhhhaa 发表于 2021-1-20 15:12
嗯,感谢大佬的指导,U盘中的文件是keil编译后的HEX文件或者BIN文件,U盘的话一般格式化成fat32格式的, ...

不好意思,我详细没有研究过这方面,不能提供例程。 看看其他网友能不能提供参考例程。

不知道你的MCU型号。 如果一定要读U盘,就要有USB主机的硬件,也就是能实现USB的HOST模式。
不然,就只能用SPI来读TF卡的方法,这个常见。 GitHub大把。

随便参考一个Bootloader例程,可以解决写Flash和跳转APP的问题。我搞过一个YAB可以参考
再找一套读U盘/TF卡的,数据就有了。
废鱼 回答时间:2021-1-20 17:02:05
很简单,用USB接口,通过FATFS读取文件就行了。
hhhhhhhaa 回答时间:2021-1-20 22:04:11
radio2radio 发表于 2021-1-20 15:50
不好意思,我详细没有研究过这方面,不能提供例程。 看看其他网友能不能提供参考例程。

不知道你的MCU型 ...

好的,谢谢了,我看一下,再次感谢
hhhhhhhaa 回答时间:2021-1-20 22:04:40
安 发表于 2021-1-20 17:02
很简单,用USB接口,通过FATFS读取文件就行了。

好的,谢谢了,我研究研究

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版