TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)

  • 前言
  • TSMaster软件介绍
  • 主界面
  • 一、刷写Panel界面控件含义
  • 二、加载配置文件方式
  • 三、BootLoader刷写过程
    ————————————————
前言

TSMaster软件

TSMater软件介绍

它是一个媲美canoe的软件,详细介绍点击此处查看TSMaster,软件下载
好了,来看看它的刷写怎么编写吧

主界面TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第1张图片
一、刷写Panel界面控件含义

1、OEM选择
主机厂选择,这个用于刷写和boot时读DID需要。
2、提示
当前操作在哪一步,会提示加载配置文件成功/失败;读取did成功/失败;刷写成功/失败;修改ID、DID成功/失败;加载刷写文件成功/失败;等。
3、配置文件
路径框,加载配置文件paramerter.txt的绝对路径,不需要自己改,下面会详细说明怎么获取配置文件路径。
4、alter
点击,窗口自动弹出paramerter.txt,去修改里面的值,然后textbox里会自动刷新修改的值。此按钮是调用windows的exe命令来操作txt。下面会详细说明怎么获取exe命令。
5、info
配置文件路径正确时,会自动加载ID、DID的值,也可以在框里改值,16进制格式;最后选择app还是boot里读取。读取的值会以ASCII格式显示在界面上,一 一对应。
6、read
点击,获取info信息,读取DID。
7、文件个数
需要刷写的文件个数。
8、下载次数
需要连续下载的次数
9、app path
需要连续刷写的次数
10、driver path
路径框,获取driver绝对路径并显示出来。
11、app path
路径框,获取app绝对路径并显示出来。
12、load
点击,出现文本框找寻刷写文件路径,然后会将路径写入paramerter.txt并显示在路径框里;此按钮是我自己做的exe(API)来操作的(TSMaster控件无路径按钮),调用windows的exe命令来操作。下面会详细说明怎么做一个exe。
13、ok
点击,进行刷写;
14、下载进度
刷写的进度条,范围:0-100;

二、加载配置文件方式

点击启动按钮后,配置文件自动加载进去,如下图。
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第2张图片TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第3张图片

1、获取配置文件路径思路

(1)用app.get_configuration_file_path函数获取当前工程目录,再用sprintf函数去获取配置文件路径,如下图
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第4张图片TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第5张图片
(2)找到cfg文件夹就可以fopen,fgets读取parameter.txt的值。parameter.txt里的值,如下图
可以清楚的看到[ID]/[DID]/[FILE],与panel的信息一一对应。
ID就不说了,用来发报文id,DID是用于获取ECU版本信息。
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第6张图片
(3)通过程序启动事件将上面获取的值赋值给系统变量,而控件又绑定了系统变量,因此,控件显示出配置文件的值。
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第7张图片

2、修改配置文件路径思路(控件alter)

要想直接点击button按钮就弹出txt文件,如下图效果:
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第8张图片
代码如下图:通过app.execute_app()函数调用windows下的notepad.exe打开配置文件路径,本来想用system的,但是TSMaster已经集成这个函数了,故选择它。并且打开时,没有命令窗口,完美!
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第9张图片

3、获取刷写文件路径思路(控件load)

要想跟canoe一样,实现用户自己查找刷写文件并把路径加载在textbox框里,就得自己做一个exe,同样用system或者app.execute_app()。
我的思路:
(1)用VS2019建一个命令c++文件,做一个exe。
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第10张图片
(2)弹出电脑盘符窗口,VS部分代码,可以识别.s19或者.hex,看自己选择。如下图
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第11张图片
效果如下图:
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第12张图片
(3)刷写文件打开后,还需要将它写入配置文件中,而配置文件路径跟exe有关系,就同一个工程目录下(自己建)
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第13张图片
VS代码写完集成exe后,exe集成在VS目录下解决方案文件下,然后把exe放到\exe\下,实在不会做exe的请去度一下。VS代码如下图
①获取当前exe文件路径
②出现选择刷写文件的窗口,选择文件
③拆掉exe,只保存当前工程路径
④拼接配置文件路径
⑤只读方式打开配置文件
⑥找到配置文件中的apppath字符串,因为要在这一行写入路径
⑦写入刷写文件路径
⑧只写方式打开配置文件
⑨写入成功后,程序自动刷新面板路径
TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第14张图片

三、BootLoader刷写过程

当界面信息确认好后,即可开始刷写。老操作,文件先要解析后数据存入数组buff中以便传输。
1、文件解析

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
如上数据:

  1. ::HEX开头
  2. 02:0x02个字节数据,即为2个数据
  3. 0000:地址0x0000
  4. 02:数据类型: (1)0x00:下载的数据
    (2)0x01:读取文件结束标志
    (3)0x02:扩展段地址记录,例上0xFFB<<4等于0xFFB0是为段文件初始地址再加上0x1000等于0x10FB0。(相当于左移4位再加上下一行的地址即为新的擦除地址值)
    (4)0x03:开始段地址记录
    (5)0x04:扩展线性地址记录,相当于把0xFFB<<16再加上初始地址0x1000
    (6)0x05:开始线性地址 记录
  5. F2:checksum值 F2 = 0X100 -(0X02+0X10+…+0XFB),注意,这个值最终结果只能是一个字节的数。
    部分解析代码如下图
    TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第15张图片
    driver路径正确时打印出他的段需要传输的段数,起始地址,长度,CRC等信息TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第16张图片
    app路径正确时打印出他的段需要传输的段数,起始地址,长度,CRC等信息TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第17张图片
    2、刷写
    刷写流程通过定时器来完成
    预编程:一般是要先检查适合刷写的条件,有一定车速或没写信息等,不可刷写。
    如下图可看到,自己搭的UDS框架服务。
    TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第18张图片
    driver编程:driver一般时一个文件一个段但是36的块有可能有很多,因此用判断条件:当前传输块个数<总块数时,循环此定时器。步骤step定死在当前step数。
    在这里插入图片描述
    app编程:app要考虑多文件多段下载,因此需要判断文件个数、段数、块数来确定传输方式TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第19张图片
    后编程:一般是复位TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第20张图片
    编程结果判断:通过传输过程中返回的正响应or负响应来确定返回值正确与否,TRUE代表响应正确;FALSE代表响应错误;DownloadComplete代表刷写流程完成,但是还得通过复位后收到的APP、NM报文通信来确定是否刷写成功,最后界面给出结果。
    TSMaster软件使用一-基于14229的UDS-BootLoader多段多文件刷写(支持TSMaster/vector-canoe/Pcan/Kvaser/Zlg/InterpidCS驱动)_第21张图片
    有兴趣的同学可以联系我
    请输入公众号:总线网络。关注我,获取汽车网络开发及测试方面资料,更新干货!
    分享总线开发知识
    分享CAN/CANFDLIN/ETH等网络资料
    分享CANoe/TSMaster/PCAN等设备工具使用
    分享UDS/NM/Bootloader测试用例等
    一起来学习,进步,交流吧!
    在这里插入图片描述

你可能感兴趣的:(TSMaster,bootloader,can网络,交互)