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 软件中对项目进行一些简单设置即可。
📗操作流程
- 拿到一片全新的 STC32G12K128 的单片机时,首先需要参考STC32G 的数据手册中的串口 ISP 下载参考线路图,将单片机和电脑的串口连接好。
- 打开最新的 STC-ISP 下载软件,选择“STC32G12K128-Beta”目标单片机型号。
- 打开范例程序包中的“\isp\obj\stc_uart_user_isp.hex”用户 ISP 代码 hex 文件,并按照如下图所示设置硬件选项,工作频率为24MHz、EEPROM 大小为 128K(此项很重要)
- 点击下载/编程按钮,将用户 ISP 代码下载到目标单片机中.
- 给目标单片机重新断电并上电一次,设置的 EEPROM 大小的硬件选项必须重新上电后才能生效(重要,容易被忽略)
- 经过第 5 步的重新上电后,由于此时还没有用户 AP 代码,用户ISP 代码被强制运行。
- 打开范例程序包中的“
\app\Release\StcIsp_User.exe
”,点击“打开文件”按钮,打开范例程序包中的“\demo\obj\Demo.hex
“. - 点击“下载”按钮,即可完成用户 AP 代码的更新下载完成后,会显示如下图所示的“代码下载成功” 画面
- 若在后续的开发中,由于已经存在用户 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芯片来实现。