蒙蒙plus
蒙蒙plus
发布于 2024-05-31 / 45 阅读
0
0

IAP升级

必要知识

IAP在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口(如I/O端口、USB、CAN、UART、I 2 C、SPI等)下载程序或数据到存储器中。IAP允许用户在程序运行时重新烧写闪存存储器中的内容。然而,IAP要求至少有一部分程序已经使用ICP烧到闪存存储器中。
ICP- 在线编程(In-Circuit Programming – ICP)方式用于更新闪存存储器的全部内容,它通过JTAG、SWD协议或系统加载程(Bootloader)下载用户应用程序到微控制器中。ICP是一种快速有效的编程方法,消除了封装和管座的困扰。
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再编程。相关知识链接

  1. 链接文件知识小猫爪:嵌入式小知识05-IAR icf链接文件操作-链接代码至RAM_iar 链接-CSDN博客
  2. 嵌入式IDE(1):IAR中ICF链接文件详解和实例分析_iar icf文件-CSDN博客
  3. STM32升级方法(一):IAP升级_stm32不复位可以isp升级吗-CSDN博客
  4. 通信协议 【通信协议学习】关于Xmodem、Ymodem、Zmodem、ASCII、Binary传输协议-CSDN博客
  5. RTOS系列文章(6):Cortex-M3/4之SP,MSP,PSP,Thread模式、Handler模式、内核态、用户态_arm sp msp psp-CSDN博客

iap知识章节

  1. 分区规划
  2. 分散加载
  3. boot规划
  4. app跳转
  5. 配置管理
  6. 固件传输
  7. 固件升级
  8. 异常处理
  9. 跳转到sdram

项目框架

  1. bootloader组件,负责程序启动,检测有无APP程序,检测app升级、无app等待烧录、app启动失败处理
  2. bootloader配置,负责配置启动行为,flash分区划分
  3. download,app下载校验
  4. 重启行为控制
  5. app中反向升级bootloader

项目示例

本项目采用的LPC4088主控频率120M 外置SDRAM(32M),FLASH(4M),内部EEPROM(4KB),RTC时钟芯片(eeprom 32KB)
由于当前项目已经使用了RTC作为关键数据的存储,本次项目的存储使用FAL管理,划分如下

名称 位置 起始地址 大小 说明
bootloader onchip 0x0000 64kb 裸机启动位置
app0 onchip 64k 448kb 片内程序
eeprom0 onchip 0 4kb bootload配置数据
data extflash 0 1M 用户app数据地址
download extflash 1M 3M app镜像
app SDRAM 0 4M APP运行位置

从分区可知,bootloader规划64kb空间,APP一共规划了2个分区,尽可能照顾到所有应用场景,非GUI项目,代码量少于448KB采用片内直接运行方式,GUI项目大于1M,将考虑使用外置download存储代码,后续将代码搬运到SDRAM起始地址处执行(extflash执行效率非常差),也就是说一个片子最多可以规划3.5M代码用户app多版本存储
而app与bootloader交互方式通过片内的eeprom0,这个分区采用flashDB进行管理,提高可读性。
后续笔记将根据这个应用场景展开。


评论