高级会员

- 积分
- 559
- 金钱
- 559
- 注册时间
- 2014-8-14
- 在线时间
- 164 小时
|
本帖最后由 Cindre鞡 于 2025-2-22 17:09 编辑
硬件平台:正点原子-探索者
MCU:STM32F407ZG,Flash-1024k,Ram-128K+64KB,标准主频-168MHz
库函数:标准库
RTOS:FreeRTOS
---------------------------------------------------------------------------------
大致流程:
参考ST官方的AN3155和AN2606文档,解析了FlyMcu的下载协议,然后使用STM32F407的USB虚拟串口与FlyMcu通信,接收下载数据,然后保存在外部Flash,下载完成后将固件相关数据保存在外部Flash,然后重启MCU,BL程序检查到固件数据后,将固件数据复制到内部Flash,然后跳转运行。
---------------------------------------------------------------------------------
与FlyMcu通信相关的,在hardwa/src/iap.c里边,具体的流程参阅AN3155文档。
---------------------------------------------------------------------------------
做这个其实就是玩玩,既然都有线下载了,用方式什么无所谓了,官方的引导固件肯定更全面一些,但自己实现,也有一些好处:
1.使用官方固件只能从Flash起始地址开始下载,自己做的话,可以任意地址下载,如果应用程序设置了VECT_TAB_OFFSET,其实FlyMcu在设置读写地址的时候是偏移了的,之所以只能从Flash起始地址下载是因为FlyMcu的擦除命令是全片擦除
2.可以省一个USB下载芯片
3.还有一种场景,比如这次设置的VECT_TAB_OFFSET是0x4000,要更改为0x8000的VECT_TAB_OFFSET,也是可以的。
其他的我也想不到了
---------------------------------------------------------------------------------
虚拟串口的驱动太大了,无法全部上传,请找-STSW_STM32102_V1.5.0-最新虚拟串口驱动
BL+APP.rar
(1.84 MB, 下载次数: 1)
|
|