找回密码
 立即注册
查看: 2071|回复: 25

STC32G 基于CAN的IAP如何实现?

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-7 09:50:36 | 显示全部楼层 |阅读模式
本帖最后由 capcomsnk 于 2023-9-7 10:01 编辑

借鉴官网的IAP在线烧写样例.  基于CAN的方式给芯片烧程序,芯片:STC32G12K128。
1.自己写的上位机烧写IAP软件,STC32G芯片程序的是按样例加了CAN通讯。
2.目前遇到的问题:完成下面流程后,重启后无法进入用户AP。
     确认一下IAP烧写流程。
      1)连接
      2)IAP擦除芯片
      3)IAP写入 写入起始地址:0x011000。总觉得应该该是这里操作出了问题。但不知哪里出了问题。
      4)重启

3 用官方的串口IAP样例和上位机样例写人用户AP,可以成功进入用户AP。


4.说明文档上说上位机会将0x010000-0x010002地址内容映射到0x011000-x011002这句话,是不是就是把数据从0x010000-0x010002剪切至0x011000-x011002



5.目前公司在用这个芯片做后期的备用方案,已经进入测试阶段。电路板已经封装进设备内部,拆除困难,只留出can通讯,所以急于实现该功能。不知是否有其他更有效的沟通方式,解决遇到的问题。


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-7 15:59:42 | 显示全部楼层
参考官方提供的串口模式实现用户自己的ISP范例
将里面的串口通讯部分修改为CAN,应该就可以满足你的需求

如果你是自己开发上位机软件,则需要注意将0x010000-0x010002的复位入口指令
自己复制到0x011000-x011002
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-7 21:34:02 | 显示全部楼层
本帖最后由 capcomsnk 于 2023-9-9 22:34 编辑

1.IAP写入数据就是把显示的这些数据从地址0x011000开始依次写入,直到HEX文件结束的地方吗?

2.如下图 我把图中从001000-00111f的数据依次写入芯片EEPROM的0x011000-0x01111f地址后,上位机发送了重启指令,然后就死了。
未标题-1.jpg

点评

将你的hex文件发出来我看一下  详情 回复 发表于 2023-9-8 09:38
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-8 09:38:42 | 显示全部楼层
capco*** 发表于 2023-9-7 21:34
上位机已经复制到0x011000-0x011002了。写入后 重启也进不了AP,貌似卡死了,也进不了IAP。
不知从哪里开 ...

将你的hex文件发出来我看一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-8 11:20:03 | 显示全部楼层
本帖最后由 capcomsnk 于 2023-9-8 12:19 编辑
zh*** 发表于 2023-9-8 09:38
将你的hex文件发出来我看一下

好的,麻烦看一下。谢谢了。如果需要的话,我把相关源码也发你看看。


1.IAP程序是已经加了CAN通讯的程序。
2.AP程序就是个测试程序。运行后P60脚会间隔取反,电路板上是接了LED,用于确认是否工作。
3.上位机是自己写的程序,通过CAN通讯完成 发送IAP擦除,发送IAP写入,然后发送重启指令。


上车测试日马上到了,感谢了。


stc_uart_user_isp.hex

7.51 KB, 下载次数: 106

IAP程序

Demo.hex

783 Bytes, 下载次数: 113

AP程序

点评

从你的hex文件的数据格式以及中断向量处理看不出问题  详情 回复 发表于 2023-9-9 17:48
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-9 17:48:28 | 显示全部楼层
capco*** 发表于 2023-9-8 11:20
好的,麻烦看一下。谢谢了。如果需要的话,我把相关源码也发你看看。

从你的hex文件的数据格式以及中断向量处理看不出问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-9 22:41:16 | 显示全部楼层
本帖最后由 capcomsnk 于 2023-9-9 22:49 编辑
zh*** 发表于 2023-9-9 17:48
从你的hex文件的数据格式以及中断向量处理看不出问题

1.IAP写入数据就是把显示的这些数据从地址0x011000开始依次写入,直到HEX文件结束的地方吗?

2.如下图 我把图中从001000-00111f的数据依次写入芯片EEPROM的0x011000-0x01111f地址后,上位机发送了重启指令,然后就死了。


3.我的IAP编译时出现了如下警告信息,对写入AP程序不知是否有影响,麻烦看一下。但是程序可以正常运行,CAN通讯也都正常。



数据

数据

IAP编译情况

IAP编译情况
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-10 23:20:09 | 显示全部楼层
本帖最后由 capcomsnk 于 2023-9-10 23:31 编辑
zh*** 发表于 2023-9-9 17:48
从你的hex文件的数据格式以及中断向量处理看不出问题

你好,自己分析了一番。
1.发现在自己做的IAP里使用了CAN中断  和  Time0的中断 ,导致进入AP时,相关的Time0中断无法使用(就是IAP编译后,报告的两个警告)。
2.我尝试了在IAP里不使用TIme0以及相关中断后,再将测试的用户AP程序写入EEPROM,这次测试用的用户AP程序就可以运行了(测试的用户AP程序也使用了TImer0)。

请问这种问题怎么解决呢?用户AP程序要使用CAN通讯完成功能,而IAP也要用CAN通讯完成用户AP的升级。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-03-10 12:50:25
已绑定手机

17

主题

28

回帖

254

积分

中级会员

积分
254
发表于 2023-9-11 10:39:38 | 显示全部楼层

STC32G12K128 IAP 中断问题


版主好。芯片是STC32G12K128   使用IAP样例修改增加CAN通讯的方式来升级自己的用户AP程序。其中发现了问题。
1.自己做的IAP里使用了CAN中断  和  Time0的中断 ,导致进入AP时,相关的Time0中断无法使用(就是IAP编译后,报告的两个警告)。
2.尝试了在IAP里不使用TIme0以及相关中断后,将测试的AP程序写入EEPROM,这次测试用AP程序就可以运行了(测试的AP程序也使用了TImer0)。
3.尝试了在IAP里不使用TIme0以及相关中断后,再次尝试把自己的AP程序写入,程序正常,但是CAN信息接收不了,CAN中断失效。

请问这种问题怎么解决呢?用户AP程序要使用CAN通讯完成功能,而IAP也要用CAN通讯完成用户AP的升级。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-9-11 11:15:55 | 显示全部楼层
因为AP的程序空间进行了地址偏移,需要在用户ISP里面(isr.asm)进行了中断地址重映射。

所以AP与用户ISP里面就不能同时使用中断,可以参考我们例程的方法,在用户ISP里面使用查询的方式来进行数据收发。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 22:02 , Processed in 0.123562 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表