当前位置: 首页 > news >正文

STC单片机 IAP在线升级功能的使用介绍

STC单片机 IAP在线升级功能的使用介绍


从官方给出的IAP在线升级的demo示例来看,目前支持的型号有STC8、STC12、STC15、STC32,前提是需要使用64K/128K容量的型号。只支持用户程序容量小于60K 的项目。

  • 🌿IAP在线升级方式支持:CAN、串口、USB HID方式。

针对使用CAN总线,做IAP升级,需要额外新增定制的CAN烧录硬件,升级时配套使用。(在CAN做升级demo中,官方提供了can烧录固件和源码)。
在这里插入图片描述

  • 📍不同升级方式demo下载地址:https://www.stcai.com/zxsj

针对不同系列都提供了相对应的demo和升级所需的上位机和说明文档,完全可以按照其文档说明,提供其对应的上位机实现其IAP功能。

  • 个人仅测试并验证了,使用串口作为升级方式的STC8和STC32系列。

📘内部FLASH规划

  • 单片机STC32G12K128,用户可以使用的最大程序空间为 128K字节,整个 Flash 空间划分如下:
    在这里插入图片描述

128K 的用户 FLASH 空间中,逻辑地址 FE:0000H~FE:FFFFH 为低 64K块区,用户可任意使用。逻辑地址 FF:0000H~FF:FFFFH 为高 64K 块区,用户ISP 代码会占据 FF:0000H~FF:0FFFH 的 4K 字节,剩余的 60K 字节的空间为用户程序区。当满足特定的下载条件时,用户 ISP 会根据上位机发送的指令对除 4K 用户 ISP 区以外的 124K 字节的 FLASH 进行擦除和编程,以达到更新用户程序的目的。

  • 单片机STC8H8K64U,用户可以使用的最大程序空间为 64K字节,整个 Flash 空间划分如下:
    在这里插入图片描述

64K 的用户 FLASH,地址范围为 0000H~FFFFH,用户 ISP 代码会占据其中 0000H~0FFFH 的 4K 字节,剩余的 60K 字节的空间为用户程序区。当满足特定的下载条件时,用户 ISP 会根据上位机发送的指令对除 4K 用户 ISP区以外的 60K 字节的 FLASH 进行擦除和编程,以达到更新用户程序的目的。

IAP程序执行流程图

在这里插入图片描述

📓固件程序组成部分说明

  • CAN升级方式:下位机固件程序包括三部分:升级工具代码、用户 ISP 代码和用户 AP
    代码。
  • 串口升级方式:用户 ISP 代码和用户 AP 代码

📙针对串口IAP功能实现程序组成部分

IAP功能实现程序,由用户 ISP 代码和用户 AP 代码组成。

在这里插入图片描述

  • 用户 ISP 代码
    用户 ISP 代码主要用户接收上位机的编程指令,对用户 AP 区进行进行代码更新。用户 ISP 代码的通讯接口为 UART 接口。
  • 用户 AP 代码
    用户 AP 代码是用户的正常功能代码。由于用户 ISP 代码使用了FF:0000H~FF:0FFFH 的 4K 空间,用户的 AP 代码必须从 FF:1000H 开始执行,用户 AP 代码原本位于 FF:0000H~FF:0002H 的复位跳转指令被重映射到 FF:1000H~FF:1002H 的地址(重映射的工作上位机应用程序会自动处理,用户在编写 AP 代码时无需关心)。另外单片机的中断入口地址也在用户 ISP 代码的 4K 空间以内,也需要重映射到 FF:1000H开始的地方,这个重映射需要在 Keil 软件中对项目进行一些简单设置即可。

📗操作流程

  1. 拿到一片全新的 STC32G12K128 的单片机时,首先需要参考STC32G 的数据手册中的串口 ISP 下载参考线路图,将单片机和电脑的串口连接好。
  2. 打开最新的 STC-ISP 下载软件,选择“STC32G12K128-Beta”目标单片机型号。
  3. 打开范例程序包中的“\isp\obj\stc_uart_user_isp.hex”用户 ISP 代码 hex 文件,并按照如下图所示设置硬件选项,工作频率为24MHz、EEPROM 大小为 128K(此项很重要
    在这里插入图片描述
  4. 点击下载/编程按钮,将用户 ISP 代码下载到目标单片机中.
  5. 给目标单片机重新断电并上电一次,设置的 EEPROM 大小的硬件选项必须重新上电后才能生效(重要,容易被忽略)
  6. 经过第 5 步的重新上电后,由于此时还没有用户 AP 代码,用户ISP 代码被强制运行。
  7. 打开范例程序包中的“\app\Release\StcIsp_User.exe”,点击“打开文件”按钮,打开范例程序包中的“\demo\obj\Demo.hex“.
  8. 点击“下载”按钮,即可完成用户 AP 代码的更新下载完成后,会显示如下图所示的“代码下载成功” 画面
    在这里插入图片描述
  9. 若在后续的开发中,由于已经存在用户 AP 代码,在没有 P3.3 口被接 GND 或者 DFU 标志变量被置位时,每次重新上电都会跳过用户 ISP 代码而直接运行 AP 代码。若需要重新执行用户 ISP 代码来更新用户 AP 代码时,可以将 P3.3 口通过 1K 电阻连接到GND,再给目标芯片重新上电,然后回到第 8 步,即可继续使用用户 ISP 更新用户 AP 代码了。(P3.3引脚判断可以根据自身需求,在IAP程序中,指定其他任意引脚,来判断是否需要升级的条件。)

✨其他注意事项

  • 上位机升级工具,仅支持Bin文件格式和HEX-386格式的程序文件 。
    在这里插入图片描述
  • 使用 IAP在线升级功能,通过IAP升级之后。如果使用了内部EEPROM功能,将会被清除。建议使用 IAP在线升级功能的话,又有EEPROM存储需求的,使用外部eeprom芯片来实现。

http://www.mrgr.cn/news/82684.html

相关文章:

  • 基于windows的mysql5.7安装配置教程
  • Vue 自定义指令
  • 更改IP地址能提高網路速度嗎?
  • 【ArcGIS Pro二次开发实例教程】(2):BSM字段赋值
  • 【NLP自然语言处理】Transformer模型的几大核心优势与应用前景
  • Infineon PSoC 4 CapSense ModusToolbox IDE - 系统生态篇
  • [SMARTFORMS] 输出文本变量绑定
  • 我用Ai学Android Jetpack Compose之Button
  • 算法题(26):最后一个单词的长度
  • Nexus Message Transaction Services(MTS)
  • MLP、CNN、Transformer 的区别解析
  • git 常用命令和本地合并解决冲突
  • cursor 使用技巧
  • Markdown类图的用法
  • 我用Ai学Android Jetpack Compose之Text
  • 多模态论文笔记——U-ViT(国内版DiT)
  • jenkins入门4 --window执行execute shell
  • Python判别不同平台操作系统调用相应的动态库读写NFC
  • 【教学类-88-01】20250105折纸窗花01——AI剪纸窗花(团花)——01图形的提取
  • SkinnedMeshRenderer相关知识
  • 如何让大模型不再“已读乱回”——RAG技术助力生成更精确的答案
  • 三、GIT与Github推送(上传)和克隆(下载)
  • 奥迪TT MK1(初代奥迪TT、第一代奥迪TT)仪表盘故障/不精准/水温/剩余油量不准,如何修复、测试、复位?
  • windows11安装minikube
  • arm64函数源码和汇编解析(objdump)
  • 线上go内存泄漏分析实战