找回密码
 立即注册
查看: 752|回复: 12

STC32G 基于CAN的IAP如何实现?

[复制链接]
  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

    积分
    137
    发表于 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通讯,所以急于实现该功能。不知是否有其他更有效的沟通方式,解决遇到的问题。


    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:31
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    16

    主题

    711

    回帖

    2528

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

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

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:31
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    16

    主题

    711

    回帖

    2528

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

    积分
    137
     楼主| 发表于 2023-9-8 11:20:03 | 显示全部楼层
    本帖最后由 capcomsnk 于 2023-9-8 12:19 编辑
    zhp 发表于 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, 下载次数: 24

    IAP程序

    Demo.hex

    783 Bytes, 下载次数: 24

    AP程序

    点评

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:31
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    16

    主题

    711

    回帖

    2528

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

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

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

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


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



    数据

    数据

    IAP编译情况

    IAP编译情况
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

    积分
    137
     楼主| 发表于 2023-9-10 23:20:09 | 显示全部楼层
    本帖最后由 capcomsnk 于 2023-9-10 23:31 编辑
    zhp 发表于 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的升级。



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-18 12:51
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    11

    主题

    14

    回帖

    137

    积分

    注册会员

    积分
    137
     楼主| 发表于 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的升级。

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    26

    主题

    1287

    回帖

    4001

    积分

    论坛元老

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-30 14:44 , Processed in 0.072510 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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