当前位置: 首页 > news >正文

汽车标定技术(十七)--Bypass的前世今生

目录

1.Bypass的诞生

2.Bypass的发扬光大

2.1 基于XCP的Bypassing

 2.2 基于Debug的Bypass

 2.3 小结

 3.Bypass的实际应用


1.Bypass的诞生

下图我相信只要用过INCA的朋友都非常熟悉。

这是远古时期(2000年左右?我猜)ETAS针对发动机控制参数标定设计的一种并行数据访问专利技术:ETK(德语: Emulatortastkopf)。

 在当时做发动机控制参数标定,有两种技术:

  • 基于CCP、K-Line的串行标定技术

        这个没啥好说的,就是现在最常见XCP的前身。

  • 基于ETK的并行访问技术

        利用MCU内部数据地址总线实现高速并行访问,如下图:

        ECU从WP或者RP获取数据,将数据写入DPRAM实现高速测量。

本来上面两种方式在不同的场景下均有用武之地,但是随着技术的发展,应用软件工程师提出了新的想法——想在现有ECU硬件上不通过重刷代码的方式验证优化后的算法,以加速开发,同时也避免了硬件接线、刷机上的磕磕绊绊。

从理论分析,其实这种是完全可以做到的,例如最初ECU Flash存储的算法为y=ax+b,但第二天我觉得这个算法不优雅,模型重新修改成了y=ax²+bx+c,那么只需要这个输入x能够传给模型,y不就出来了么?我还不用重新刷ECU,方便快捷。

那么从基础软件角度如何来满足模型工程师的要求呢?很明显,如果有ETK技术支持,只要ECU把输入x以测量量(模型视角)写入到ETK RAM,模型开发工具(ASCET)去ETK拿数据计算并回写y,便可以验证模型算法的正确性,如下图:

这里就出现了Bypass的概念--即ECU中某些值不是通过ECU内部Flash代码计算得到,而是依赖外部传入。

2.Bypass的发扬光大

 这个东西这么好用,肯定大家都想来尝尝鲜。

但是问题来,要用bypass就要用ETK,而ETK据说是ETAS的专利技术。这条路没法了,那联军们肯定不同意了,于是想了个法子,既然并行可以,串行标定也可以实现呢?不管什么方式,只要把输入给到上位机,输出给到ECU不就成啦。

2.1 基于XCP的Bypassing

于是CCP升级版--XCP提出了Bypassing的概念(不是bypass,注意用词,虽然我觉二者差不多)。如下:

理论上,ECU通过DAQ的方式把输入传个Bypassing工具进行计算,然后该工具通过STIM的方式传回给ECU,这样就和ETK Bypass一样一样的了。

不过考虑到总线传输的延时和一致性,XCP标准里还特意提出了 delayed bypassing,如下:

 2.2 基于Debug的Bypass

理论上只要是可以向ECU写数据,ECU可以往外发数据的接口,应该都可以实现Bypass技术。

当ETAS遇到某些霸道芯片厂不肯暴露数据地址总线时,他们又想到了使用调试接口的Debug接口来实现bypassing。

我们看瑞萨RH850 P1x系列的ED设备就提供了Bypass接口:

我们从ETAS的针对PD和ED产品的串行ETK也可以看出端倪:

 2.3 小结

基于上述描述,目前已知的bypass的实现途径主要有三种:

  • 基于ETK技术
  • 基于XCP协议栈
  • 基于调试接口

 3.Bypass的实际应用

那么Bypass到底会用在哪些地方呢?个人理解,只要是想在已验证过的ECU硬件上新增\优化应用层控制策略的地方 ,都可以使用Bypass。

Simulink使用XCP Master Block结合通信硬件即可实现bypassing:

Vector的CANape结合VN8900实现实时bypassing解决方案:

ETAS结合ES970提出的bypass方案:

 

 

http://www.lryc.cn/news/291152.html

相关文章:

  • 【开源精选导航】GitHub-Chinese-Top-Charts:一榜在手,优质中文项目轻松找寻
  • C++ 11新特性之语法甜点1
  • 【智能家居】6、语音控制及网络控制代码实现
  • Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中
  • Java项目要不要部署在Docker里?
  • Linux 入门基础知识(一)—— Linux的基本使用
  • 纯静态微信小程序水果商城
  • 操作系统-线程的实现方式和多线程模型(用户级线程 内核级线程 多线程模型的情况)和线程的状态,转换,组织,控制
  • 计算机网络 应用层
  • 拥有你的微调大模型,零代码定制+算力免费送
  • 《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》
  • C,C++,C# 的区别
  • 操作筛选器的 1 个应用实例:自动启用事务
  • 搭建基于Java的分布式爬虫系统
  • rancher证书过期问题处理
  • Spring Boot 中文件上传
  • 2023年06月CCF-GESP编程能力等级认证Python编程一级真题解析
  • unity 使用数字图片来代替数字0到9显示
  • 单片机如何实现延时1ms或者1us
  • 全国网络安全行业职业技能大赛WP
  • 【Python函数与模块】(7)模块的分类与好处
  • 如何安全地多开Facebook/Twitter/TK/Ins等账号?
  • ChatGPT学python: 用json文件传参
  • 【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
  • 已实现:vue、h5项目如何使用echarts实现雷达图、六边形图表
  • JUC并发编程-四大函数式接口、Stream 流式计算、ForkJoin并行执行任务
  • 【Tomcat与网络4】Tomcat的连接器设计
  • k8s中调整Pod数量限制的方法
  • 在Java中,实现扩展性通常有几种方法,其中包括接口、抽象类、插件架构和服务加载等方式
  • 【乳腺肿瘤诊断分类及预测】基于自适应SPREAD-PNN概率神经网络