[学习笔记] AC78xx平台基于CAN的IAP升级例程

[复制链接]
16079|13
 楼主| AutochipsMCU 发表于 2020-8-14 13:49 | 显示全部楼层 |阅读模式
本帖最后由 AutochipsMCU 于 2020-11-9 09:09 编辑

环境介绍
本例程支持通过上位机进行IAP升级,目前支持CAN接口。
上位机开发环境:QT 5.6.3
CAN工具:纬图 USBCAN适配器
MCU开发平台:AC78xx(AC781xAC780x)
MCU开发环境:Keil 5.23

软件介绍
软件分两个工程,一个AC78xx_Boot,一个AC78xx_App
Boot负责App程序跳转,以及程序升级功能。
App属于应用程序,负责产品功能实现。以及触发升级功能。
在开发IAP功能前,首先需要规划程序分区,需要把flash至少分为boot,app两个程序分区,一个data分区(用于存升级标志位,如果有eeprom等其他可存储的设备,可不用),flash的启动地址为boot的起始地址(及程序从boot开始执行)。
本例程程序分区规划如下:
Boot:起始地址:0x8000000,大小:0x5800
APP:起始地址:0x8006000,大小:0x19000(根据选择的芯片型号调整)
Data:起始地址:0x8005800,大小:0x800

功能测试
测试硬件环境
基于AC78xx demo平台,需要GlinkgoUSB-CAN工具。
备注:AC781x demo板是接到CAN1口上。
硬件测试环境.png

测试软件环境
1.分别下载AC780x_Boot和AC780x_App工程到demo板中。
App工程配置不能配为全片擦除,否则会擦掉boot程序。默认程序LED2会快闪。
2.打开上位机软件
UI界面.png
下面基于上图标号进行描述升级流程。
3. 软件环境准备
1)    标号3设置CAN通信波特率,程序默认500K。
2)    标号8设置App起始地址。程序默认0x8006000。
3)    标号4选择需要升级的文件。文件格式为bin文件。

4. 升级
1)    点击标号1开始搜索设备(demo板正在运行app程序)。会搜到设备节点,显示在标号2区域。
2)    选中需要升级的节点,点击标号5进入升级模式。此时程序会进入升级模式,程序会跳转到boot中,等待升级命令。此时点标号1会搜到节点,并显示固件类型为boot。
Demo板现象:LED灯变为慢闪。
3)    选中升级的节点,点击标号6,开始升级。升级进度会弹框提醒。
4)    升级结束后,点击标号7退出升级模式,跳转到新升级的APP中。
注意:如果最后没有执行标号7,即使升级成功也不会清升级标志位,重启后还是会进入升级模式,程序停留在boot中。因此升级成功后,需执行标号7

资料说明:
上位机工具(源码和可执行文件)
IAP(PC_Tool).rar (15.94 MB, 下载次数: 288)
AC781x平台IAP例程(Boot和App)
IAP(AC781x).rar (186.1 KB, 下载次数: 131)
AC780x平台IAP例程(Boot和App)
IAP(AC780x).rar (102.4 KB, 下载次数: 102)
IAP升级文档
AC78xx 基于上位机的IAP升级使用说明.pdf (537.31 KB, 下载次数: 162)

评论

@laoganma :同问  发表于 2024-1-11 14:44
你好我想问一下上位机操作第一步就显示No device connected是什么问题?已经分别下好了boot和app程序,灯也在快闪了  发表于 2022-11-10 09:07
RunningX 发表于 2020-8-14 14:08 | 显示全部楼层
使用上位机,可能会报错,错误信息为:缺失libus0.dll文件
这个时候需要添加这个文件(论坛不支持dll格式文件,只能传压缩包): libusb0.rar (16.47 KB, 下载次数: 55)
存放的目录为:一般为C:\WINNT\System32      64位系统为C:\Windows\SysWOW64

TechHolder 发表于 2020-8-14 14:24 | 显示全部楼层
RunningX 发表于 2020-8-14 14:08
使用上位机,可能会报错,错误信息为:缺失libus0.dll文件
这个时候需要添加这个文件(论坛不支持dll格式文 ...

TechHolder 发表于 2020-8-14 14:24 | 显示全部楼层
RunningX 发表于 2020-8-14 14:08
使用上位机,可能会报错,错误信息为:缺失libus0.dll文件
这个时候需要添加这个文件(论坛不支持dll格式文 ...

zhengshuai888 发表于 2020-9-9 19:41 来自手机 | 显示全部楼层
不错不错,谢谢分享干货。
这是神魔节奏 发表于 2021-3-24 16:11 | 显示全部楼层
上位机选择用文件中自带的V1.1版本的,网上下载的V1.2汉语版本的好像不支持
这是神魔节奏 发表于 2021-3-24 17:43 | 显示全部楼层
本帖最后由 这是神魔节奏 于 2021-3-24 17:51 编辑

请问如果现在已经开发了对应项目的应用程序,借用咱们例程中的AC781x_Boot实现CAN烧写功能,要做的工作除了以下还有哪些:
1、在AC781x_Boot和self工程_App中更改相应的单片机,并合理分配Flash区域;
2、除Flash更改外,AC781x_Boot不做任何更改;
3、self工程_App更改工程配置中定义起始地址和Size,以及在第一时钟重定向以APP起始地址的中断向量表SCB->VTOR = APP_START_ADDR;
4、移植System_UpdateAPP()函数;
5、此外self工程_App是不是还需要在初始化CAN中发送返回地址是0x10的报文?
6、self工程_App的看门狗必须要初始化?7、不考虑烧写30s的等待,是不是不需要配置timer?即如果进入升级模式,而没有升级文件,就一直等待在此状态。

elephant00 发表于 2021-3-26 11:15 | 显示全部楼层
不错不错,谢谢分享干货。
非谢家之宝树 发表于 2021-3-31 19:34 | 显示全部楼层
这上位机看着很是眼熟啊,貌似之前还参考过大佬的上位机例子。。。
Sy1vester 发表于 2021-4-15 09:01 | 显示全部楼层
干货,顶
lyp0709 发表于 2024-3-16 17:24 | 显示全部楼层
demo板有没有购买的链接?
agusliu 发表于 2024-6-12 18:21 | 显示全部楼层
杰发有深圳这边的FAE吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:合肥杰发科技有限公司
简介:四维图新全资子公司 全球多地布局;专注于汽车电子芯片及相关系统的研发与设计 车规级芯片覆盖整车;客户遍及海内外 全球超过8000万辆车搭载杰发科技芯片。

59

主题

268

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部