打印
[KungFu32位 MCU]

芯旺微 KungFu系列之KF32A156的boot loader的CAN协议UDS升级应用说明

[复制链接]
723|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-6-5 11:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ello大家好!bootloader升级在MCU的程序设计中常常用到。那本篇主要根据官方例程 来说说 can通讯 UDS协议进行APP升级。

一、首先不管什么通讯进行升级,都要说明一下bootloader升级需要先了解的一些知识点:
1、向量表重映射:
boot和APP各自有各自的中断向量表,而当 app启动后需要将 boot 程序的向量表切换为 app 程序自己的向量表。这里就涉及到如何去将向量表的初始值进行修改,那这里就是通过向 SYS_VECTOFF 赋值 app 程序偏移地址的方式实现重映射过程。

2、APP程序地址偏移:
因为IDE的编译默认是从0x00000000地址开始放置指令的,但是前面的地址已经被放置boot程序,故这里需要进行将APP程序初始地址进行偏移。具体设置方法如下:
(1)、ChipON IDE\KungFu32\ChiponCC32\scripting\ccr1_issue 找到对应芯片型号的 xxx.ld链接文件,将其复制到工程目录下。
(2)、打开 ld 文件后可以看到对应记录的 flash 起始地址和大
小。本此示例中将 boot 程序大小限制在 0x8000,所以将 app 的起始地址修改为 0x0000 8000。
(3)、最后,将修改好的 ld 文件在 IDE 中生效: 选中项目->右键->属性->C/C++构建->设置->通用设定->芯片脚本文件写入 -T"…/KF32F156MQV.ld" ->应用->确定。
**注意事项:**为了避免 boot 区程序超过界限,应当在 boot 程序中配置程序大小为 0x8000。
app的 ld 文件配置图示如下:



app的 工程属性 配置配置图示如下:



**这里有一个提醒:**就是从BOOT跳转到APP的时候,在 startup() 函数没有调整过的前提下,在app跑起来的时候会对ram进行初始化,但是对于boot程序配置的寄存器来说,是依然保留的。如果需要则可以进行保留,不需要挥着需要更改则可以进行该外设的重新初始化。

二、当我们把官方例程的BOOT和APP 程序编译完成后,即可进行升级流程的操作。这里篇幅问题就不说具体UDS流程部分的程序,感兴趣的可以自行研究。
实验所需:156demo板或者自己的板子均可,官方提供的boot和app程序,KF32烧录器,can卡(官网使用的是图莫斯,我这里使用的是周立功的can卡,上位机是ZCANPRO),连接线若干。
1、boot程序下载,将官方提供的boot程序编译完成后,将程序下载至demo板上,官方使用的使用的CANFD6进行升级的。USB端口可以打印串口数据至电脑端查看。当我们下载完成后,串口数据打印出来如下图:



2、先将APP程序进行编译。can卡和板子连接完好。然后对ZCANPRO进行配置,步骤:打开CANPRO软件,打开设备,设置成500k,其他不在赘述。连接完成后我们选择 高级功能 — ECU刷新 其他配置可以参考下图:



可以自行对照此流程在左边的方框内进行添加流程,配置文件下载时,加载HEX时按照图示配置即可。配置完成后点击 应用到执行器 , 弹出如下弹框后 点击 开始刷写 ,即可开始刷写。



刷写过程如下图示:



直到刷写完成后 弹出如下框:



由于刷写完成后有复位的指令,此时可以在串口打印工具中看到此时程序已经运行到APP,如图:



以上操作即可实现整个过程。具体的UDS协议客户可根据自身要求进行修改。本次演示就结束啦。

例程可以去芯旺微的GITEE上下载,都是免费提供给大家学习的,也可以找对应的FAE进行获取。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/Fanshijun1/article/details/134014139

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1498

主题

14379

帖子

9

粉丝