在汽车电子开发、测试和售后诊断中,我们经常需要对ECU进行固件升级,即“刷新”。 当前市面上的主流方案是通过硬编码的方式实现,但这种方式的缺点也显而易见:只有懂编程的工程师才能做,一般工程师无法胜任;当需要修改刷新流程的时候,刷新工具必须重新编译生成软件。这对于刷新工具的维护极为不便。 针对这一痛点,勤壮提供了一套通过脚本实现的方案。由于采用图形化配置界面,任何类型的工程师都可以轻松胜任;当需要修改的时候也只需修改脚本本身,无需重新编译生成整个软件,相比其他方案更方便、更灵活、更容易上手。 接下来我们按照步骤一一解析: 1.如何配置脚本? 首先我们有必要了解下两个专有名词:刷新规范和QzTitan。 刷新规范 刷新规范一般由整车厂制定,详细定义了刷新的具体步骤。一般分为刷新前、刷新中、刷新后。刷新前:切换会话、安全访问等;刷新中:34/36/37服务执行具体刷新动作;刷新后:完整性校验、兼容性校验等。 QzTitan QzTitan是一款简单易用的、图形化的、综合流程配置工具,文件后缀为ttn和ttb。 QzTitan可用于各种功能的开发,如刷新、IMMO等,同时可用于基础软件测试用例的开发,如:诊断测试用例、NM测试用例等,能够满足绝大多数汽车电子开发中的开发和测试场景。 由于使用图形化的配置方式,QzTitan相比于使用硬编码具有更强的灵活性,使得非软件开发人员也能轻松使用。 流程由语句和语句之间的关系组成。语句采用基础加扩展的基本方式,软件预定义了一些常用的语句,如:If、delay、assign、math、service、sendmsg。若预定义语句无法满足要求,可以通过usercall机制调用外部自定义函数。 由于脚本文件是二进制的,所以可以在各种软硬件平台上使用。软件平台包括:windows、linux、无操作系统环境,硬件平台包括:PC、MCU等。 用Titan实现刷新规范 通过不同语句的组合形成一个刷新流程,下面以1001为例来说明如何配置服务: 1.从左侧选中10服务; 2.拖放到中间的画布; 3.在右侧属性窗口配置该服务的属性。 注意:1.什么是FastSA?SA一般由两条服务组成:RequestSeed和ResponseKey,FastSA指的就是这两条服务的组合。系统会自动根据配置调用SADLL,计算Key。2. 添加语句的方式:拖放。 ttn与ttb的关系 ttn是ttb的源文件,ttn可生成ttb,ttb不可以反向生成ttn,所以需要注意保存ttn。2.如何执行脚本? 我们首先会用到QzSaturn这个工具,QzSaturn是一款总线和诊断测试工具,是整个工具链中的主软件,文件后缀为:*.stn。 QzSaturn的主要功能包括:报文监控、图形监控、总线记录与回放、全车诊断、工程面板、流程、诊断、刷新、网报报文发送等,覆盖了汽车电子开发与测试中最常用的功能。刷新是其功能之一。 刷新步骤: 1.导入ttb文件将配置完成的脚本导入到QzSaturn刷新子窗口中。 2.导入刷新数据文件指的是要刷的数据文件,支持HEX、S19和BIN。 3.基本参数的配置对ECU基本参数进行配置,如:RequestID、ResponseID。 4.SA算法库的导入刷新前一般需要解锁SA,解锁算法由SA算法库实现。在windows平台的文件后缀为*.dll,DLL本身的制作方法见下文。 5.CRC配置选择相应的CRC类型及相关信息,并点击按钮计算CRC。 6.开始刷新。 如何制作SA算法库? 本质是制作一个特定接口的动态链接库*.dll。制作工具:Visual Studio 2015开发语言:C/C++接口函数:extern "C" __declspec(dllexport) UINT32 saturn_key_generate(UINT8* p_seed,UINT32 seed_length,UINT32 level,UINT8* param,UINT8* p_key,UINT32 key_length,UINT32& key_size) 参数说明: P_seed:SeedSeed_length:Seed长度,一般为4;Level:SA level.以2701为例,应填01Param:用户自定义P_key:Key Buffer,用于存储函数返回的KeyKey_length:Key Buffer的指定长度,Key_size:Key实际长度,一般跟Seed长度一致 两种方式:源码封装方式、二次封装方式。 源码封装方式:直接在图示位置写代码实现SA算法。 二次封装方式:在图示位置调用外部算法库。一般用于整车厂需要对算法保密的场景。 通过以上操作,可以实现适应不同场景、灵活和高效的刷新。 关于勤壮: 上海勤壮汽车科技有限公司成立于2016年,致力于成为国内顶级的汽车电子开发服务商,为国内汽车主机厂和零部件供应商提供本土化、定制化的优质服务。为国内汽车主机厂和零部件供应商提供包括汽车电子基础协议栈软件开发服务、汽车电子总线和诊断专用测试工具、以及汽车诊断相关的定制化开发服务。2019年勤壮正式并入上海艾拉比智能科技有限公司,双方整合优势资源,为客户提供更优质的服务。源自:深圳市铭顺信电子有限公司网址:www.msxic.cn您身边的专业电子元器件配套供应商联系方式:电话:0755-82789005 林小姐手机:13530315569 林小姐QQ:2355513222真诚期待与您合作共赢!
在汽车电子开发、测试和售后诊断中,我们经常需要对ECU进行固件升级,即“刷新”。
当前市面上的主流方案是通过硬编码的方式实现,但这种方式的缺点也显而易见:只有懂编程的工程师才能做,一般工程师无法胜任;当需要修改刷新流程的时候,刷新工具必须重新编译生成软件。这对于刷新工具的维护极为不便。
针对这一痛点,勤壮提供了一套通过脚本实现的方案。由于采用图形化配置界面,任何类型的工程师都可以轻松胜任;当需要修改的时候也只需修改脚本本身,无需重新编译生成整个软件,相比其他方案更方便、更灵活、更容易上手。
接下来我们按照步骤一一解析:
1.如何配置脚本?
首先我们有必要了解下两个专有名词:刷新规范和QzTitan。
刷新规范
刷新规范一般由整车厂制定,详细定义了刷新的具体步骤。一般分为刷新前、刷新中、刷新后。
刷新前:切换会话、安全访问等;
刷新中:34/36/37服务执行具体刷新动作;
刷新后:完整性校验、兼容性校验等。
QzTitan
QzTitan是一款简单易用的、图形化的、综合流程配置工具,文件后缀为ttn和ttb。
QzTitan可用于各种功能的开发,如刷新、IMMO等,同时可用于基础软件测试用例的开发,如:诊断测试用例、NM测试用例等,能够满足绝大多数汽车电子开发中的开发和测试场景。
由于使用图形化的配置方式,QzTitan相比于使用硬编码具有更强的灵活性,使得非软件开发人员也能轻松使用。
流程由语句和语句之间的关系组成。语句采用基础加扩展的基本方式,软件预定义了一些常用的语句,如:If、delay、assign、math、service、sendmsg。若预定义语句无法满足要求,可以通过usercall机制调用外部自定义函数。
由于脚本文件是二进制的,所以可以在各种软硬件平台上使用。软件平台包括:windows、linux、无操作系统环境,硬件平台包括:PC、MCU等。
用Titan实现刷新规范
通过不同语句的组合形成一个刷新流程,下面以1001为例来说明如何配置服务:
1.从左侧选中10服务;
2.拖放到中间的画布;
3.在右侧属性窗口配置该服务的属性。
注意:1.什么是FastSA?SA一般由两条服务组成:RequestSeed和ResponseKey,FastSA指的就是这两条服务的组合。系统会自动根据配置调用SADLL,计算Key。2. 添加语句的方式:拖放。
ttn与ttb的关系
ttn是ttb的源文件,ttn可生成ttb,ttb不可以反向生成ttn,所以需要注意保存ttn。
2.如何执行脚本?
我们首先会用到QzSaturn这个工具,QzSaturn是一款总线和诊断测试工具,是整个工具链中的主软件,文件后缀为:*.stn。
QzSaturn的主要功能包括:报文监控、图形监控、总线记录与回放、全车诊断、工程面板、流程、诊断、刷新、网报报文发送等,覆盖了汽车电子开发与测试中最常用的功能。刷新是其功能之一。
刷新步骤:
1.导入ttb文件
将配置完成的脚本导入到QzSaturn刷新子窗口中。
2.导入刷新数据文件
指的是要刷的数据文件,支持HEX、S19和BIN。
3.基本参数的配置
对ECU基本参数进行配置,如:RequestID、ResponseID。
4.SA算法库的导入
刷新前一般需要解锁SA,解锁算法由SA算法库实现。在windows平台的文件后缀为*.dll,DLL本身的制作方法见下文。
5.CRC配置
选择相应的CRC类型及相关信息,并点击按钮计算CRC。
6.开始刷新。
如何制作SA算法库?
本质是制作一个特定接口的动态链接库*.dll。
制作工具:Visual Studio 2015
开发语言:C/C++
接口函数:extern "C" __declspec(dllexport) UINT32 saturn_key_generate(
UINT8* p_seed,
UINT32 seed_length,
UINT32 level,
UINT8* param,
UINT8* p_key,
UINT32 key_length,
UINT32& key_size)
参数说明:
P_seed:Seed
Seed_length:Seed长度,一般为4;
Level:SA level.以2701为例,应填01
Param:用户自定义
P_key:Key Buffer,用于存储函数返回的Key
Key_length:Key Buffer的指定长度,
Key_size:Key实际长度,一般跟Seed长度一致
两种方式:源码封装方式、二次封装方式。
源码封装方式:直接在图示位置写代码实现SA算法。
二次封装方式:在图示位置调用外部算法库。一般用于整车厂需要对算法保密的场景。
通过以上操作,可以实现适应不同场景、灵活和高效的刷新。
关于勤壮:
上海勤壮汽车科技有限公司成立于2016年,致力于成为国内顶级的汽车电子开发服务商,为国内汽车主机厂和零部件供应商提供本土化、定制化的优质服务。为国内汽车主机厂和零部件供应商提供包括汽车电子基础协议栈软件开发服务、汽车电子总线和诊断专用测试工具、以及汽车诊断相关的定制化开发服务。2019年勤壮正式并入上海艾拉比智能科技有限公司,双方整合优势资源,为客户提供更优质的服务。