[STM32L1] 通过Y modem进行固件升级。

[复制链接]
 楼主| 石榴大王 发表于 2025-7-31 08:13 | 显示全部楼层 |阅读模式
在STMCube IDE中开发STM32L151RCT6。我的需求是通过Y modem接收新的固件二进制文件,将其写入闪存,并通过UART发送CLI命令来运行该应用程序。
我尝试了一些示例代码,但Y modem接收二进制文件的功能无法正常工作。
有没有高手能提供一些示例代码及相关参考文档,对我非常有帮助...

公羊子丹 发表于 2025-7-31 13:15 | 显示全部楼层
Ymodem的接收流程比较严谨,确认你每个包都正确校验并发送ACK了吗?
周半梅 发表于 2025-7-31 13:16 | 显示全部楼层
我之前在L476上搞过Ymodem,后来直接参考了开源的TeraTerm和STM的AN4854文档,强烈推荐看看。
帛灿灿 发表于 2025-7-31 13:17 | 显示全部楼层
你用的是哪个Ymodem例程?CubeIDE有些例程是针对F4的,拿到L1上有点坑要填。
童雨竹 发表于 2025-7-31 13:18 | 显示全部楼层
注意不要用HAL库里的UART轮询模式,会卡死,最好用DMA接收加超时判断。
万图 发表于 2025-7-31 13:18 | 显示全部楼层
写Flash的时候记得先解锁、擦除、然后按页写,STM32L1的Flash API和F1那一套不太一样。
Wordsworth 发表于 2025-7-31 13:19 | 显示全部楼层
CLI命令切换程序时是不是用了跳转函数?要清空中断、重置SP和PC才能跳。
Bblythe 发表于 2025-7-31 13:20 | 显示全部楼层
用串口工具比如SecureCRT或TeraTerm发送Ymodem时,波特率建议别太高,9600–115200都试试。
Pulitzer 发表于 2025-7-31 13:21 | 显示全部楼层
STM官网以前有个Ymodem_bootloader的例程,虽然是F1平台的但逻辑可以直接复用。
Uriah 发表于 2025-7-31 13:21 | 显示全部楼层
如果你用的是中断方式接收串口数据,注意接收缓冲区要足够大,不然会丢包。
Clyde011 发表于 2025-7-31 13:22 | 显示全部楼层
最后跳转新程序前,可以打印一条确认信息,确保Ymodem收完后Flash内容正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

40

帖子

0

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