当前位置: 首页 > 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方案:

 

 

相关文章:

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

目录 1.Bypass的诞生 2.Bypass的发扬光大 2.1 基于XCP的Bypassing 2.2 基于Debug的Bypass 2.3 小结 3.Bypass的实际应用 1.Bypass的诞生 下图我相信只要用过INCA的朋友都非常熟悉。 这是远古时期(2000年左右?我猜)ETAS针对发动机控制参数标定设计的一种并行数据…...

【开源精选导航】GitHub-Chinese-Top-Charts:一榜在手,优质中文项目轻松找寻

各位热爱开源技术的朋友们,你们是否有过这样的困扰:面对浩瀚的GitHub海洋,想找寻那些具有高质量中文文档的优秀开源项目却无从下手?今天,我们就为大家揭晓一个宝藏般的开源项目——GitHub 中文项目集合(访问…...

C++ 11新特性之语法甜点1

概述 C 11中引入了许多简化编程工作的语法上的新特性,我们暂且美其名曰:“语法甜点”。下面,我们将对这些“语法甜点”一一进行介绍。 语法甜点1:序列for循环 序列for循环是一种简化的for循环,可用于遍历一组序列&…...

【智能家居】6、语音控制及网络控制代码实现

一、语音控制 1、指令结构体编写 这个结构体定义了一个命令输入的模型。在这个模型中,包含以下几个部分: cmdName:一个长度为128的字符串,用于存储命令名称。dvicesName:一个长度为128的字符串,用于存储设…...

Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中

1、打开注册表编辑器 快捷键winR 打开“运行”, 输入 regedit 2、 删除下列注册表中和无法移除的磁盘相关的选项 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ 3、打开“任务管理器”,重新启动“Windows资源…...

Java项目要不要部署在Docker里?

部署Java项目有很多种方式,传统的方式是直接在物理机或虚拟机上部署应用,但为什么现在容器化部署变得越来越流行, 个人觉得原因有以下几个: 1、 环境一致性:使用Docker可以确保开发、测试和生产环境的一致性&#xff…...

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…...

纯静态微信小程序水果商城

首页代码 <view class"container"><!-- 轮播图 --><view class"swiper-container"><swiper class"screen-swiper" indicator-dots"true" circular"true" autoplay"true" interval"300…...

操作系统-线程的实现方式和多线程模型(用户级线程 内核级线程 多线程模型的情况)和线程的状态,转换,组织,控制

文章目录 线程的实现方式和多线程模型总览线程的实现方式用户级线程内核级线程多线程模型一对一多对一多对多 小结 线程的状态,转换,组织,控制总览 线程的状态与转换线程的组织与控制 线程的实现方式和多线程模型 总览 线程的实现方式 用户级线程 程序自己通过自己设计的线程…...

计算机网络 应用层

文章目录 应用层域名系统 DNS域名系统概述互联网的域名结构域名服务器 文件传送协议FTP 概述FTP 的基本工作原理简单文件传送协议 TFTP 远程终端协议 TELNET万维网 WWW统一资源定位符 URL超文本传送协议 HTTP万维网的信息检索系统 电子邮件电子邮件概述简单邮件传送协议 SMTP邮…...

拥有你的微调大模型,零代码定制+算力免费送

2023年&#xff0c;ChatGPT的横空出世掀起了人工智能领域的新一轮革命。 很快大模型的潮水就越过广袤的太平洋&#xff0c;席卷国内科技圈和投资圈&#xff0c;几乎所有科技公司都在押注大模型。根据工信部赛迪研究院数据&#xff0c;预计2023年我国语言大模型市场规模将达到1…...

《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》

文章目录 Docker为什么会出现总结 Docker的思想Docker历史总结 Docker能干嘛虚拟机技术虚拟机技术的缺点 容器化技术Docker和虚拟机技术的区别 Docker概念Docker的基本组成镜像&#xff08;image)容器&#xff08;container&#xff09;仓科&#xff08;repository&#xff09;…...

C,C++,C# 的区别

C&#xff0c;C&#xff0c;C# 是三种不同的编程语言。它们有一些共同点&#xff0c;但也有很多区别。 C是一种过程式编程语言&#xff0c;被广泛用于系统级编程和嵌入式开发。它具有简单的语法和较小的标准库&#xff0c;适合于高效的低级编程和处理底层细节。 C是一种面向对…...

操作筛选器的 1 个应用实例:自动启用事务

前言 在数据库操作过程中&#xff0c;有一个概念是绕不开的&#xff0c;那就是事务。 事务能够确保一系列数据库操作要么全部成功提交&#xff0c;要么全部失败回滚&#xff0c;保证数据的一致性和完整性。 在 Asp.Net Core Web API 中&#xff0c;我们可以使用操作筛选器给…...

搭建基于Java的分布式爬虫系统

目录 前言 一、分布式爬虫系统的架构设计 二、系统搭建步骤 1. 创建爬虫项目 2. 导入相关依赖 3. 编写分布式爬虫系统的核心代码 3.1 节点管理器&#xff08;Node Manager&#xff09; 3.2 调度器&#xff08;Scheduler&#xff09; 3.3 下载器&#xff08;Downloader…...

rancher证书过期问题处理

问题 起初&#xff0c;打开rancher ui页面打不开&#xff0c;telnet rancher的服务端口也不通。查看rancher 控制节点&#xff0c;日志显示&#xff0c;X509&#xff1a;certificate has expired or is not ye valid。证书已过期 解决 现在网上大部分的解决方案都是针对的2…...

Spring Boot 中文件上传

Spring Boot 中文件上传 一、MultipartFile二、单文件上传案例三、多文件上传案例四、Servlet 规范五、Servlet 规范实现文件上传 上传文件大家用的最多的就是 Apache Commons FileUpload&#xff0c;这个库使用非常广泛。Spring Boot3 版本中已经不能使用了。代替它的是 Sprin…...

2023年06月CCF-GESP编程能力等级认证Python编程一级真题解析

一、单选题(共15题,共30分) 第1题 以下不属于计算机输出设备的有()。 A:麦克风 B:音箱 C:打印机 D:显示器 答案:A 第2题 ChatGPT 是 OpenAI 研发的聊天机器人程序,它能通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,完成很多工作。请你…...

unity 使用数字图片来代替数字0到9显示

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Trackracecomplete : MonoBehaviour { /// /// 数字图片 /// [SerializeField] private Sprite[] sprites; private string _Time “23:57:49”; [Ser…...

单片机如何实现延时1ms或者1us

1us //适配主频为120MHz的单片机 void Delay_us(int16_t nus) {int32_t temp; SysTick->LOAD nus*15; //120MHzSysTick->VAL0X00;SysTick->CTRL0X01;do { tempSysTick->CTRL;}while((temp&0x01)&&(!(temp&(1<<16))));SysTick->CTRL0x0…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...