ercircle 发表于 2026-1-26 11:08:23

CAN-ISP例程增加下载缓冲防【突然停电】变砖功能,AB分区切换

相较于官网【STC-official-user-CAN-ISP-bootloader-demo-STC32G12K128-series】例程修改点:
1.ROM布局:ISP+A+B+EEPROM区,用户ISP扩容至8K,A\B皆是56K,EEPROM区8K末尾扇区存放OTA参数
这里B区主要用于下载缓存新固件
A区用于实际运行用户APP
PS:为什么不在B区直接激活运行?需要维护两套APP工程,代码地址映射及中断映射。

2.用户ISP升级下载过程擦除只擦B区,确保升级流程中断也可重启正常开机进入A区
3.升级下载流程结束后,将固件校验和及长度写入OTA参数区,
   重启后用户ISP检测该参数,合法则搬运B区代码到A区,搬运完成则清除参数。
4.原有示例工具及TOOL工程删除,替换为更通用的CDC2CAN工具。上位机使用 Python代码示例。


硬件连接示意:

操作说明:
1.工具板下载USB-CDC_to_CAN工程
2.准备APP固件,使用py/appHex2bin.py,将hex转为bin文件,会自动裁剪LDR_SIZE,并把前三字节拷贝至APP起始处
3.下载用户ISP工程,下载时EEPROM选择128K

4.打开py/main.py,更改工具板CDC串口号及bin文件路径,保存执行。

升级过程日志示例:




相关链接:
CAN总线在线升级例程发布,视频演示,车规 - CAN/Lin/最便宜的车规MCU, AEC-Q100 Grade1(-40 ~ +125度) 国芯人工智能技术交流网站 - AI32位8051交流社区
CAN视频教学, USB 转 2组CAN, AiCube-ISP, 【CAN助手】收发测试 - CAN/Lin/最便宜的车规MCU, AEC-Q100 Grade1(-40 ~ +125度) 国芯人工智能技术交流网站 - AI32位8051交流社区
一种简单合并ISP和APP程序文件的方法 - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区
一种USER_ISP和USER_APP共用中断方法 - ISP下载/做自己的ISP 国芯人工智能技术交流网站 - AI32位8051交流社区



ercircle 发表于 2026-1-26 20:51:31

基于STC32G144K246型号带用户系统区和用户程序区版本:

先来观察下EEPROM操作差异:
在用户系统区的IAP操作使用绝对地址。
相较于Ai8051U,在用户系统区无法使用IAP操作读取系统区空间了,
可以用ecode指针读取,指针地址是从0xFF0000开始,注意和存储器的物理地址0xFF0000不同,只是用户系统区的逻辑地址。


ROM划分:

基于实验箱测试,硬件连接示意:



注意下载时的ISP选项:


带用户系统区,则不再需要用户区代码地址映射以及中断映射。



ercircle 发表于 2026-1-30 14:54:50

在2L基础上增加C区,支持激活A或B区。
激活B区逻辑:
搬运A区到C区备份,并锁定C区。搬运B区到A区执行。
下次升级前需要切回A区再开始擦写C区。


ROM分配变化:


ISP下载选项变化:


python命令变化:


整体流程:









jwd 发表于 2026-1-31 16:48:24

{:4_174:}楼主超赞

MikeXue 发表于 2026-2-27 13:17:29

你好, 那么PC端必须安装Python哈。

ercircle 发表于 2026-2-27 14:08:04

MikeXue 发表于 2026-2-27 13:17
你好, 那么PC端必须安装Python哈。

非必须只是示例,PC端用你自己熟悉的语言就行

MikeXue 发表于 2026-2-28 11:09:02

ercircle 发表于 2026-2-27 14:08
非必须只是示例,PC端用你自己熟悉的语言就行

好的, 裁剪是必须的么?

ercircle 发表于 2026-2-28 15:40:19

MikeXue 发表于 2026-2-28 11:09
好的, 裁剪是必须的么?

这个也是看你上位机和用户ISP怎么配合,只要把代码写到正确的ROM位置就行

MikeXue 发表于 2026-2-28 15:54:54

ercircle 发表于 2026-2-28 15:40
这个也是看你上位机和用户ISP怎么配合,只要把代码写到正确的ROM位置就行
...

好的, 感谢了。

llyymm 发表于 2026-3-17 10:15:21

4.打开py/main.py,更改工具板CDC串口号及bin文件路径,保存执行。 这个用哪个软件打开?具体如何操作?
页: [1] 2
查看完整版本: CAN-ISP例程增加下载缓冲防【突然停电】变砖功能,AB分区切换