STM32L051单片机485Ymode升级后程序不能正常运行问题

1.环境介绍

在项目中,使用STM32L051C8Tx系列单片机做裸机升级,使用方案是通过串口485+YMODEM协议方案;

STM32L051C8Tx单片,Flash总共64k,这里我分16k给bootload,46k给app,剩下2k做存储功能,页大小128字节。

之前一篇关于该项目升级的详细介绍可以看一下:读取STM32单片机升级写入Flash的.bin文件方法_stm32读取bin文件-CSDN博客

2.现象描述

脱机烧录v2.1.9版本程序,后边使用485升级v2.2.0的bin文件,升级完成后大部分功能正常,但是控制电机失败;

3.分析问题

3.1 通过jlink读取flash数据,比较bin文件内容

读取使用v2.2.1版本485升级v2.2.1版本bin文件,再读取使用v2.1.9版本485升级v2.2.1版本bin文件数据,前边升级方式能正常使用,对比数据如下所示:

比对结果是上述两个位置写入数据和正常的不一致;

再次读取直接脱机下载的v2.1.9文件,发下这两个位置本身就是4个连续0x00,如下图所示:

也就是说使用v2.1.9版本485升级v2.2.1后这两个位置正确数据并没有正确写进去,所以猜测可能可和bootload写Flash数据有关;

3.2 测试1

Flash全部擦除完,只下载bootload,然后直接使用485升级v2.2.1版本,读出来bin文件正常,程序正常运行;

3.3 测试2

使用脱机下载v2.1.9版本,先用485升级一个擦除Flash程序( bin文件,5k大小,擦除6~46k的flash),然后再升级v2.2.1版本,读出来bin文件正常,程序正常运行;

4.结论和定位问题

4.1 bootload写入函数分析

最后确定bootload写入flash数据出错,在连续为4个00的页首位置(单页128)写入数据逻辑出现问题,下边是代码:

该页开头是00 00 00 00 ,按字读到0,所以没有擦除,直接4字节写数据,但是写下一个4字节数据读到不是0,所以执行下边逻辑,把该页擦除,导致上次写的4个字节被擦除,后边按4字节正常写入,所以导致上述两个位置数据没有写进去;

上述两个地址0xDF80和0XE100正好是128的整数倍;

这里读取的是整个FLAH大小(64k),boot分配16k(0x4000),计算时减去0x4000,STM32L051C8Tx单片机页大小128字节;

4.2 修改后boot代码

页首地址取余(单页128字节)判断是否是该页首地址,这样执行逻辑就是先擦除这一页,后边4字节直接写,不再执行下边擦除逻辑;

5.解决方案

5.1 已经脱机烧录的v2.1.9版本

  • 先通过485 Ymode升级一个程序:擦除app 6~46k地址的bin文件,这个程序6k大小;

  • 再升级的正常的v2.2.1版本bin文件;

5.2 后续烧录

使用已经修改后的v0.0.7版本bootload工程;

相关推荐
2CM_Embed9 小时前
Altium Designer 原理图与 PCB 快速相互定位:Cross Probe 交叉探针
嵌入式硬件·pcb·altium designer·c2000
恒锐丰-罗生10 小时前
宽压大电流同步降压优选|CN3906 DC-DC 电源芯片,车载 / 工控 / IoT 全能供电方案
嵌入式硬件·硬件工程
happygrilclh13 小时前
STM32,串口单字节中断接受,每次上电后,会收到一个0x00的解决办法。
单片机·嵌入式硬件
智闲电子设计14 小时前
STM32 独立看门狗 IWDG 实战:系统跑飞,它来兜底复位
stm32·单片机·嵌入式硬件
zcmodeltech15 小时前
智能制造教学实训沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的工业机器人-智慧工厂-数字孪生全场景联动方案
数据库·stm32·嵌入式硬件·机器人·制造·多分类
程序员与背包客_CoderZ16 小时前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
嵌入式阿蔡17 小时前
HAL库 vs LL库 vs 寄存器:到底用哪个?
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
天空'之城18 小时前
单片机基础核心知识点汇总(三)
单片机·嵌入式硬件
嵌入式阿蔡18 小时前
CAN总线入门:从协议帧到STM32实战
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
恒锐丰科技韩生19 小时前
率能 SS8847E|2.7~15V 双通道 H 桥电机驱动 ETSSOP16 散热封装 家电 / 打印 / 舞台灯光专用
嵌入式硬件·硬件工程