0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过脚本方案实现对ECU进行固件升级

电子设计 来源:网络整理 作者:佚名 2019-12-10 07:58 次阅读

汽车电子开发、测试和售后诊断中,我们经常需要对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等。

如何通过脚本方案实现对ECU进行固件升级

用Titan实现刷新规范

通过不同语句的组合形成一个刷新流程,下面以1001为例来说明如何配置服务:

1.从左侧选中10服务;

2.拖放到中间的画布;

如何通过脚本方案实现对ECU进行固件升级

3.在右侧属性窗口配置该服务的属性。

如何通过脚本方案实现对ECU进行固件升级

注意:1.什么是FastSA?SA一般由两条服务组成:RequestSeed和ResponseKey,FastSA指的就是这两条服务的组合。系统会自动根据配置调用SADLL,计算Key。2. 添加语句的方式:拖放。

ttn与ttb的关系

ttn是ttb的源文件,ttn可生成ttb,ttb不可以反向生成ttn,所以需要注意保存ttn。

如何通过脚本方案实现对ECU进行固件升级

2.如何执行脚本?

我们首先会用到QzSaturn这个工具,QzSaturn是一款总线和诊断测试工具,是整个工具链中的主软件,文件后缀为:*.stn。

QzSaturn的主要功能包括:报文监控、图形监控、总线记录与回放、全车诊断、工程面板、流程、诊断、刷新、网报报文发送等,覆盖了汽车电子开发与测试中最常用的功能。刷新是其功能之一。

如何通过脚本方案实现对ECU进行固件升级

如何通过脚本方案实现对ECU进行固件升级

刷新步骤:

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算法。

二次封装方式:在图示位置调用外部算法库。一般用于整车厂需要对算法保密的场景。

通过以上操作,可以实现适应不同场景、灵活和高效的刷新。

如何通过脚本方案实现对ECU进行固件升级

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5155

    浏览量

    126460
  • 软件
    +关注

    关注

    69

    文章

    4765

    浏览量

    87155
  • 编码
    +关注

    关注

    6

    文章

    935

    浏览量

    54759
收藏 人收藏

    评论

    相关推荐

    求助,通过UART进行基本设备固件升级的问题求解

    我正在研究设备固件升级代码 我可以修改代码,通过修改 common.mk 使其通过 UART 运行固件
    发表于 05-28 07:45

    请问如何通过ESP32S3的USB进行固件升级

    如果通过USB口,在不需要按IO0的情况下,进行升级。目前测试ESP-BOX的固件可以进行升级
    发表于 06-13 06:01

    如何通过ESP32S3的USB进行固件升级

    如果通过USB口,在不需要按IO0的情况下,进行升级。目前测试ESP-BOX的固件可以进行升级
    发表于 02-10 06:01

    如何通过ESP32S3的USB进行ESP-BOX固件升级呢?

    如果通过USB口,在不需要按IO0的情况下,进行升级。目前测试ESP-BOX的固件可以进行升级
    发表于 03-03 09:06

    如何通过ESP32S3的USB进行固件升级

    如果通过USB口,在不需要按IO0的情况下,进行升级。目前测试ESP-BOX的固件可以进行升级
    发表于 03-08 09:02

    如何在全志V853开发板如何在Tina Linux中使用脚本完成定制化升级

    ;[*] shellscript2.在swupdate文件夹下创建脚本,名字随意,在脚本中写入要实现的功能。例如:目前有一个方案需要升级,但
    发表于 03-20 10:02

    怎样对ECU进行固件升级

    在汽车电子开发、测试和售后诊断中,我们经常需要对ECU进行固件升级,即“刷新”。
    发表于 12-10 17:02 5835次阅读
    怎样对<b class='flag-5'>ECU</b><b class='flag-5'>进行</b><b class='flag-5'>固件</b><b class='flag-5'>升级</b>

    STM32通过IAP实现固件升级的分析与示例

    大部分MCU都可以通过IAP对片内flash进行读写来实现固件升级。这里主要是STM32如何实现
    发表于 12-14 18:50 11次下载
    STM32<b class='flag-5'>通过</b>IAP<b class='flag-5'>实现</b><b class='flag-5'>固件</b><b class='flag-5'>升级</b>的分析与示例

    基于CAN智慧云实现远程ECU升级

    在日常研发中,调试已经成为日常工作中核心的一部分。汽车电子行业中,测试时,常需对ECU固件进行刷写。CAN智慧云基于CANDTU系列产品实现远程刷写
    的头像 发表于 05-09 11:38 827次阅读
    基于CAN智慧云<b class='flag-5'>实现</b>远程<b class='flag-5'>ECU</b><b class='flag-5'>升级</b>

    【解决方案】如何对物联设备进行远程固件升级

    通过串口外接了其他的业务设备(控制器、温控器…),并通过透传设备将数据透传上云。这种情况下,固件升级需求一般分两种:1、对dtu设备、透传网关等透传上云设备自身
    的头像 发表于 11-04 10:13 1087次阅读
    【解决<b class='flag-5'>方案</b>】如何对物联设备<b class='flag-5'>进行</b>远程<b class='flag-5'>固件</b><b class='flag-5'>升级</b>?

    【产品应用】基于CAN智慧云实现远程ECU升级

    在日常研发中,调试已经成为日常工作中核心的一部分。汽车电子行业中,测试时,常需对ECU固件进行刷写。CAN智慧云基于CANDTU系列产品实现远程刷写
    的头像 发表于 05-12 10:19 1179次阅读
    【产品应用】基于CAN智慧云<b class='flag-5'>实现</b>远程<b class='flag-5'>ECU</b><b class='flag-5'>升级</b>

    AT32 MCU如何使用OTA通过USART实现固件的在线升级更新

    AT32 MCU如何使用OTA通过USART实现固件的在线升级更新
    的头像 发表于 10-26 17:09 2452次阅读
    AT32 MCU如何使用OTA<b class='flag-5'>通过</b>USART<b class='flag-5'>实现</b>对<b class='flag-5'>固件</b>的在线<b class='flag-5'>升级</b>更新

    AT32 MCU如何使用IAP通过USART实现固件的在线升级更新

    AT32 MCU如何使用IAP通过USART实现固件的在线升级更新
    的头像 发表于 09-19 16:51 2211次阅读
    AT32 MCU如何使用IAP<b class='flag-5'>通过</b>USART<b class='flag-5'>实现</b>对<b class='flag-5'>固件</b>的在线<b class='flag-5'>升级</b>更新

    RA4M3通过USB实现固件升级

    RA4M3通过USB实现固件升级
    的头像 发表于 10-18 08:06 495次阅读
    RA4M3<b class='flag-5'>通过</b>USB<b class='flag-5'>实现</b><b class='flag-5'>固件</b><b class='flag-5'>升级</b>

    EtherCAT总线如何对从站固件进行升级

    EtherCATFOE是一种主站对从站设备固件升级的技术,通过利用EtherCAT的数据链路层来处理数据实现文件传输,可以确保文件传输的完整性和准确性,为设备的维护、
    的头像 发表于 02-27 08:23 749次阅读
    EtherCAT总线如何对从站<b class='flag-5'>固件</b><b class='flag-5'>进行</b><b class='flag-5'>升级</b>?