嵌入式IAP升级完全指南:中控与传感器

IAP升级学习复习笔记

目录

IAP升级学习复习笔记

一、Flash划分​编辑

二、升级流程

[1. 让目标板进入Bootloader](#1. 让目标板进入Bootloader)

[2. 发送固件并烧录](#2. 发送固件并烧录)

[3. 让目标板进入APP](#3. 让目标板进入APP)

时序图对比

三、点表:增加命令寄存器

[1. 中控(设备地址 01H)](#1. 中控(设备地址 01H))

[2. 开关量模块(SWITCH,设备地址 01H)](#2. 开关量模块(SWITCH,设备地址 01H))

[3. 环境监测模块(ENV_MONITOR,设备地址 02H)](#3. 环境监测模块(ENV_MONITOR,设备地址 02H))

[4. 温湿度模块(TEMP_HUMI,设备地址 03H)](#4. 温湿度模块(TEMP_HUMI,设备地址 03H))

四、Bootloader软件设计​编辑

[1. 启动流程](#1. 启动流程)

[2. 处理启动命令](#2. 处理启动命令)

[3. 处理文件块(使用Modbus "Write File Record")](#3. 处理文件块(使用Modbus “Write File Record”))

五、IAP要点及时序

[1. 实时烧录与回复](#1. 实时烧录与回复)

[2. 命令执行的顺序](#2. 命令执行的顺序)

六、上位机程序流程图​编辑

总结


一、Flash划分

中控和传感器的Flash空间需要合理划分,分别存放Bootloader、APP和配置信息。配置信息用于保存APP版本、大小、校验码等,决定启动时进入Bootloader还是APP。

中控(STM32H563RIV,2MB Flash)

  • Bootloader:256KB(地址 0x0800 0000 ~ 0x0803 FFFF)

  • APP:1784KB(地址 0x0804 0000 ~ 0x081F DFFF)

  • 配置信息:8KB(最后一个扇区,地址 0x081F E000 ~ 0x081F FFFF)

传感器(STM32F030CC,256KB Flash)

  • Bootloader:128KB(地址 0x0800 0000 ~ 0x0801 FFFF)

  • APP:126KB(地址 0x0802 0000 ~ 0x0803 F7FF)

  • 配置信息:2KB(最后一个扇区,地址 0x0803 F800 ~ 0x0803 FFFF)

图片6说明:此处应有Flash划分示意图,清晰标出各区域起始地址和大小,便于直观理解。


二、升级流程

升级分为三步:1. 进入Bootloader2. 发送固件并烧录3. 进入APP

升级对象不同(中控或传感器),流程略有差异。

1. 让目标板进入Bootloader

  • 升级中控:上位机直接给中控发命令。若中控正在运行APP,则写配置信息标记"进入Bootloader",然后软件复位。重启后Bootloader读到标记,保持在Bootloader等待升级。

  • 升级传感器:上位机将命令发给中控(中控此时必须运行APP,因为APP功能更强,能转发命令),中控再转发给传感器。传感器若在APP中,同样写配置信息并复位,保持在Bootloader。

注意:升级传感器时,中控必须处于APP状态,以便转发数据和命令;升级中控时,中控自己需处于Bootloader状态。

2. 发送固件并烧录

上位机将固件分包发送,目标板每收到一个文件块就立即写入Flash,并回复结果。这样上位机可实时知道烧录是否成功。

3. 让目标板进入APP

固件发送完毕后,上位机发送"进入APP"命令。目标板写配置信息标记"启动APP",软件复位,Bootloader读取标记后跳转到APP执行。


时序图对比

cs 复制代码
上位机 → 中控Bootloader  
  1. 发送启动命令  
  2. 回复启动命令  
  3. 执行启动命令(保持Bootloader)  
  1. 发送文件块  
  2. 烧录Flash  
  3. 回复文件块  
  ...(重复直到发送完毕)  
  最后发送"进入APP"命令,中控复位启动APP
cs 复制代码
上位机 → 中控APP → 传感器Bootloader  
  1. 发送启动命令  
  2. 转发启动命令  
  3. 回复启动命令(传感器→中控)  
  4. 回复启动命令(中控→上位机)  
  4. 执行启动命令(传感器保持Bootloader)  
  1. 发送文件块  
  2. 转发文件块  
  3. 烧录Flash  
  4. 回复文件块(传感器→中控)  
  5. 回复文件块(中控→上位机)  
  ...(重复)  
  最后发送"进入APP"命令,传感器复位启动APP

三、点表:增加命令寄存器

所有设备(中控、开关量模块、环境监测模块、温湿度模块)统一增加一个AO(4x)寄存器 ,地址为0000H,用于接收升级命令:

  • 写入 0x55:启动Bootloader

  • 写入 0xAA:启动APP

各模块的完整寄存器说明如下(设备地址区分不同模块):

1. 中控(设备地址 01H)

寄存器地址 类别 用途 描述
0000H DI 控制LED1 1-亮
0000H AO 升级命令寄存器 写入0x55启动Bootloader,0xAA启动APP

2. 开关量模块(SWITCH,设备地址 01H)

寄存器地址 类别 用途 描述
0000H DI 读取按键KEY1 1-被按下
0001H DI 读取按键KEY2 1-被按下
0002H DI 读取按键KEY3 1-被按下
0000H DO 控制继电器1 1-吸合
0001H DO 控制继电器2 1-吸合
0002H DO 控制LED1 1-亮
0003H DO 控制LED2 1-亮
0004H DO 控制LED3 1-亮
0000H AO 升级命令寄存器 同上

3. 环境监测模块(ENV_MONITOR,设备地址 02H)

寄存器地址 类别 用途 描述
0000H DO 控制蜂鸣器1 1-响
0001H DO 控制蜂鸣器2 1-响
0002H DO 控制LED1 1-亮
0003H DO 控制LED2 1-亮
0004H DO 控制LED3 1-亮
0000H AI 读取光敏电压 0xfff对应3.3V,12位精度
0001H AI 读取可调电阻电压 0xfff对应3.3V,12位精度
0000H AO 升级命令寄存器 同上

4. 温湿度模块(TEMP_HUMI,设备地址 03H)

寄存器地址 类别 用途 描述
0000H DO 控制蜂鸣器1 1-响
0001H DO 控制蜂鸣器2 1-响
0002H DO 控制LED1 1-亮
0003H DO 控制LED2 1-亮
0004H DO 控制LED3 1-亮
0000H AI 读取温度 单位0.1℃,16位有符号整数
0001H AI 读取湿度 单位0.1%RH,16位有符号整数
0000H AO 升级命令寄存器 同上

说明:此处应有系统任务交互图,展示PC通过USB串口与多个任务(任务1~4)通信,任务分别负责读取开关量传感器按键、更新DI寄存器,将DO值发送给各传感器,以及读取环境监测和温湿度传感器的ADC值更新AI寄存器。该图形象说明了点表中寄存器如何被周期性地读写。


四、Bootloader软件设计

Bootloader的核心任务只有三个:启动判断、处理启动命令、处理文件块

1. 启动流程

上电后Bootloader首先读取配置信息:

  • 若标记为"启动APP",则跳转到APP执行。

  • 若标记为"停留在Bootloader"或无有效标记,则停留在Bootloader,等待升级命令。

2. 处理启动命令

  • 收到"进入Bootloader"命令:若当前已在Bootloader则忽略;若在APP则写配置信息并软件复位。

  • 收到"进入APP"命令:写配置信息并软件复位,Bootloader下次启动时会跳转APP。

3. 处理文件块(使用Modbus "Write File Record")

  • 中控Bootloader:需处理映射信息和固件信息。

    • record_no = 0:解析文件头,获取文件大小等信息。

    • record_no ≠ 0:根据record_no记录映射表或烧录Flash数据。

  • 传感器Bootloader:只需处理固件信息,直接将数据写入Flash。

图片说明:此处应有Bootloader详细流程图,包含以下分支:

  • 开始 → 判断是否收到"进入Bootloader"命令 → 若已在Bootloader?→ 写配置信息 → 软件复位 → Bootloader根据配置信息不启动APP。

  • 升级流程:接收文件头成功?→ 接收文件块成功?→ 烧录 → 接收完毕?→ 接收"进入APP"命令 → 写配置信息 → 软件复位 → 启动APP。


五、IAP要点及时序

为确保升级可靠且实时反馈,有两个关键设计:

1. 实时烧录与回复

  • 升级中控APP:中控Bootloader每收到一个文件块,立即写入Flash,然后根据写入结果回复Modbus响应。上位机等待响应后再发下一包,出错可重发。

  • 升级传感器APP:中控APP每收到一个文件块,立即转发给传感器,传感器的Bootloader写入Flash后回复中控,中控再回复上位机。同样保证每一包的实时反馈。

2. 命令执行的顺序

  • 目标是中控:中控收到启动命令(如"进入Bootloader"或"进入APP")后,先回复上位机(因为一旦复位就无法回复),再执行复位操作。

  • 目标是传感器:中控收到命令后,先转发给传感器,等待传感器执行完毕并回复,然后中控再回复上位机,确保命令已生效。


六、上位机程序流程图

上位机升级流程非常清晰:

  1. 开始

  2. 发送"进入Bootloader"命令(等待目标板回复)

  3. 循环发送文件头(直到成功)

  4. 循环发送文件块(每发一块等待回复,直到全部发完)

  5. 发送"进入APP"命令

  6. 退出

图片说明:此处应有上位机流程图,直观展示上述循环判断过程。


总结

IAP升级的核心在于Flash划分Bootloader与APP的角色切换命令和数据的可靠传输。通过增加统一的命令寄存器,上位机可以灵活控制中控和传感器进入升级模式。Bootloader负责启动判断和实时烧录,确保升级过程稳定。时序图(图片1、2)和流程图(图片4、5、6)清晰展示了各环节的交互,是理解和实现IAP的重要参考。

相关推荐
嵌入式×边缘AI:打怪升级日志1 天前
9.2.2 实现 Write File Record(保姆级教学)
硬件·软件·发送·接收
嵌入式×边缘AI:打怪升级日志1 天前
综合实现:产品框架(保姆级讲解)
硬件·软件
阿成学长_Cain6 天前
R-Studio v9.5.191686 数据恢复软件中文绿色便携特别版
windows·电脑·软件
巴德鸟13 天前
华为手机鸿蒙4回退到鸿蒙3到鸿蒙2再回退到EMUI11 最后关闭系统更新
华为·智能手机·harmonyos·降级·升级·回退·emui
GR23423413 天前
2025年影视仓TV+手机官方版 内置地址源支持高清直播
java·智能手机·软件
芯巧电子15 天前
09. ABM器件(一)---基本知识点(01) I PSpice高级应用
cadence·pcb·软件·pspice
myloveasuka23 天前
分离指令缓存(I-Cache)和数据缓存(D-Cache)的原因
笔记·缓存·计算机组成原理·硬件
ddsoft12323 天前
在装配拆卸指导动画中如何制作螺栓批量旋出的逼真视频
composer·软件·solidworks
AUTOSAR组织1 个月前
深入解析AUTOSAR框架下的TCP/IP协议栈
网络协议·tcp/ip·汽车·autosar·软件架构·软件·培训