CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)

  • 前言
  • Panel界面
  • 控件使用
  • 文件解析
  • 下载流程

————————————————
版权声明:本文为CSDN博主「痴迷YMX」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36407982/article/details/107610153

前言

我是一名汽车供应商(BCM/蓝牙/空调/仪表)的测试工程师,致力于测试平台开发。对于我做的测试脚本平台符合目前各大车厂所需,包括can通信、UDS/TP、NM(Autosar、Osek、间接NM)、BootLoader,也可根据需求接单。需要测试用例和此脚本代码可联系我:qq95_62_64_348 vx:yxcmx095616
对canoe工具的使用,相信大家都有一定的了解了,本文就不再讲解工具基础的使用。

Panel界面

CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)_第1张图片
FBL panel界面图示

控件使用

如上图所示,我们放置两个 Path Dialog 来获取Driver和App路径,此路径是存在于盘下的任何一个路径;再通过File Number确定文件个数(>=1),最后通过Button(start)开始刷写。至于CAPL Output View控件则是我们进行输出提示语,进度条是每个文件刷写的进度。好了,话不多说,正文开始!

文件解析

刷写文件常见的三种:S19/HEX/BIN,本文不对BIN文件做解析,没难点。
通过文件路径后缀名识别出是哪种文件类型,再将之用于代码判断。因为文件类型不同,解析方式不同。这里简单说明下文件类型。
在这里插入图片描述
文件类型判断

S19文件解析:

S1 10 2000 00 00 00 00 00 00 00 00 00 00 00 00 10 BF
如上数据:

  1. S1:文件地址字节数为1+1=2个,最常见还有S2、S3以此类推;
  2. 10:表示10后面的所有数据个数是0x10个字节,即为16个字节;
  3. 2000:文件地址0x2000
  4. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01:数据
  5. BF:checksum值 BF = 0XFF - (0X10 +0X20 + 00 …+0X10),注意,这个值最终结果只能是一个字节的数。
HEX文件解析:

:020000020FFBF2
:021000000001EC
如上数据:
6. ::HEX开头
7. 02:0x02个字节数据,即为2个数据
8. 0000:地址0x0000
9. 02:数据类型:(1)0x00:下载的数据
(2)0x01:读取文件结束标志
(3)0x02:扩展段地址记录,例上0xFFB<<4等于0xFFB0是为段文件初始地址再加上0x1000等于0x10FB0。(相当于左移4位再加上下一行的地址即为新的擦除地址值)
(4)0x03:开始段地址记录
(5)0x04:扩展线性地址记录,相当于把0xFFB<<16再加上初始地址0x1000
(6)0x05:开始线性地址 记录
10. F2:checksum值 F2 = 0X100 -(0X02+0X10+…+0XFB),注意,这个值最终结果只能是一个字节的数。
代码:
CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)_第2张图片
解析函数接口代码
在这里插入图片描述
通过解析函数fileGetStringSZ代码来对文件进行彻底的解析并存到driver或者app的buff中。最后在下载数据里直接导入此buff。

下载流程

一. 预编程

在进行下载的时候,一般会有一个预编程,在进入编程模式之前会进行对DID读取,28和85服务使用。有些客户甚至会要求31服务预编程条件检测。

二. 编程模式

进入到编程模式后,一般会对DID进行写入,比如指纹,日期等,写入格式均有要求。
在这里插入图片描述
写入数据如图示

三. driver下载

对driver下载,一般是直接下载,34-36-37.下载完之后会进行31CRC校验或者在37进行CRC校验。
在这里插入图片描述
driver下载流程图

四.app下载

一般app下载会涉及到多文件/多段下载。我们本文主要就是介绍这个。
CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)_第3张图片
多段下载解析代码如图示
利用for循环将Tempi(段)和二位数组将数据存入buff中,就可以得出app的二维数组数据。
CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)_第4张图片
多文件下载代码如图示
当第一次加载文件后并进行下载成功时,会自动判断此时下载成功文件个数是否等于填入的应该下载的文件个数值,利用while(文件个数>完成刷写文件个数?),通过暂停函数在panel界面加载剩下的文件(自动识别加载与否)来进行下一步的解析并反复走下载流程(擦除地址、请求下载、下载、停止下载、CRC校验、一致性检验)达到多文件下载的目的。

五. 复位

当所有文件下载完成并完成一致性校验,会进行一次复位看是否能够回到APP状态中。

六. 逆向测试

逆向测试:对测试进行故障测试(获得想要的故障,例如返回期望NRC)。
这里介绍常见的逆向测试
CANOE使用:用Panel界面Capl搭配编写BootLoader自动化刷写流程(多文件or多段下载)_第5张图片
逆向测试如图示
以上逆向测试用例全都是自动化测试并出报告。需要测试用例可私。

你可能感兴趣的:(can网络,canoe脚本capl)