您的当前位置:主页 > 签证问题 >
硬核!如何黑入自己的汽车电脑?P1
【发布时间:2022-06-18】 【作者:admin】

  电影《速度与激情》大家都看过,接下来第六部里面的这个场景大家肯定有印象。

  Paul Walker 一行人在追捕 Shaw 时,他们驾驶的宝马被 Shaw 等人安装了一种电子芯片,之后 Shaw 等人通过电脑一顿操作之后,这些宝马突然不受驾驶员控制,突然刹车或者直接撞上其他车。

  我个人觉得这绝对是改装行业里比较顶尖的技术了,有很多很多人从事这方面的工作,花重金开发相关技术内容,我是非常敬佩他们的,也很想直接从事这方面的工作。

  上大学时主修车辆工程专业,在哈工大的四年里打下了还不错的基础。其实那时候就对于发动机调校这块很感兴趣,但也仅限于感兴趣,虽然想自己研究,却没有找到好的途径。

  那时候每期必看的《改装与四驱》并没有太多提及这一块,说实话,当时很希望有人可以提点一二。即使到了大四,好不容易有了一门叫做 车载网络 的专业课,但好像和我真正想学的还是差了一点,万万没想到,最后这门课居然成为我大学里唯一补考的一门。

  src=言归正传,刷发动机程序这件事,往最简单说,有个硬件,有个软件,连上 OBD,单击 Flash,点火,排气 啪啪啪 ,完美,结束。如果有车友,只想了解这个流程,估计需要等一等了。

  src=本着 授人以鱼,不如授之以渔 的原则,我打算用比较直白的语言从头开始说起,这样既适用于汽车爱好者,DIY 车友,也对车辆工程或相关专业的学生有帮助,同时也可以引导一些刚刚从事汽车测试开发的同行们。

  src=以下这些将基于我多年的汽车电子安全系统的开发经验和自己网上研究到的一些内容,多数都可以从维基百科或者相关资料网页中查询到。

  这次新冠疫情在美国开始爆发,很多公司裁员,我们还算幸运,只是临时降薪,减少工作时间,于是就趁着 休假 ,整理一些信息分享给大家,希望可以帮助到大家。

  2. 本文只提供知识分享,所有 DIY 引擎调校程序均有风险,有可能严重损坏发动机或导致 ECU 报废,所引发的责任请自行承担,与本文作者无关。

  现在的车和几十年前的车相比,最大的一个区别就是电子系统越来越多,很多人说如今的车机械感降低,都是电子设备,修都不好修的了。

  确实是这样,从最简单的油门说起,最传统的设计,就是油门踏板(accelerator pedal)直接连着发动机的节气门(throttle),你踩多少踏板,就打开多少节气门,直接控制空气流量。

  src=而现在我们踩的基本就是一个纯踏板,有传感器测量你踩了多少,再由发动机控制模块决定打开多少节气门,而油门踏板的这个信息有可能只有发动机这一个模块直接知道。

  src=一辆车由几十个模块组成,包括发动机,刹车,转向,悬架等等,而车厂最后负责把所有模块装在一起,整合在一起,所以也叫做Orignial Equipment Manufacture (OEM)。

  所有这些模块就是车厂(OEM)的零配件供应商,比较大的模块或直接和 OEM 打交道的模块属于一级供应商,比如 ABS/ESP 电子刹车系统。

  以电子刹车系统为例,ABS/ESP 系统的牵引力控制(Traction Control)功能是负责防止车轮在车辆起步时打滑的,一般以轮速传感器(Wheel Speed Sensor)信息为主,但需要知道驾驶员踩了多少油门进行另外一些控制。

  src=而之前说过,油门信息只有发动机知道,ABS/ESP 系统怎么知道呢?

  这时候 CAN 总线就起作用了,说白了就是车上各个电子系统互相交流的一个公共桥梁或通道。而CAN 总线,或者叫CAN BUS,只是车上的各条桥梁中的一条,成本相对较低,传输速度一般。

  这个 CAN 总线对每个模块都打开的,只要带宽允许,每个在 CAN 总线上的模块都可以发送或接受信息,但是接受到的信息是什么,怎么读,就有讲究了。

  CAN 总线基于一种信息传递协议,最早是由德国博世公司在 1986 年发表的,中间有过改版,但一直沿用至今。这个协议定义了在 CAN 总线上传播信息的一些最基本的要求,之后会具体说说。

  src=回到油门踏板的话题上,发动机模块会根据这个协议把带有油门踏板的信息传递到 CAN 总线上,其他模块只要知道踏板信息是如何发上来的,就知道该如何读取了。

  这就相当于桥梁上有无数辆小汽车,发动机派出小车 A 到 CAN 桥梁上,车上有几个密码箱,里面装着发动机信息。

  src=DBC 文件(后面会提及)就是打开这些密码箱的钥匙,任何拦截到这辆车并且有钥匙的模块都可以打开这个密码箱拿到发动机信息。而没有钥匙的模块,就算拦截到了小车 A 也没法知道信息是什么。

  而这把 钥匙 是事先需要沟通定义好的,车厂在车辆开发初期,会给自己和供应商们提供这把 钥匙 ,也就是传说中的 DBC 文件,这样就可以让各个模块之间相互交换信息了。

  src=当然在开发过程当中,这个文件也会不断更新,来达到最终车厂对于性能法规等各个方面的要求。所以说这个文件非常重要,属于需要保密的信息。

  src=当然,具备一定 CAN 总线知识的人也是可以破解这把 钥匙 的,而尝试制造出这把 钥匙 的过程就叫做 CAN 总线逆向。有不少人研究这个,我之后也会说说我是如何逆向丰田 86 的 CAN 总线的。

  现在大家基本知道 CAN 是什么,那么为什么要知道这个,和引擎调校有什么关系,我们继续往下说。

  我个人是从事 ABS/ESP 设计开发的,就算我们固定负责一个项目,天天和 ABS 模块打交道,从项目开始到 SOP(Start of Production,量产),也很难把 ABS 这一个模块的 CAN 相关所有东西了解透彻。

  src=更何况一辆车上有几十个模块都共用一个 CAN 总线,而且每款车的 CAN 内容也不一样,所以真正在这方面精通的人少之又少。

  src=在我个人看来,最有用的一点是,通过 CAN 总线,我可以直接看到和记录与跑赛道相关的数据,这对于提高圈速是很有帮助的。

  每个跑赛道的朋友应该都是希望自己越跑越快,不断提高自己的驾驶水平。稍微硬核一些的玩家,肯定会在车上采集数据,跑完之后再分析(感觉这方面的内容我又可以单独写一篇了,如果大家感兴趣,欢迎评论里说)。

  src=这里的数据主要包括了车速,侧向加速度,纵向加速度,横摆角速度,轮速,方向盘角度等。大部分数据都可以通过第三方硬件来间接获取,比如 Vbox 或 AiM 公司开发的产品。

  src=而所有这些数据都在 CAN 总线上可以直接读到,而且更新率也很快。车辆自己的控制算法都是通过这些信息实现的,所以自然是非常靠谱的。

  而之前提到的第三方硬件大多也会支持 CAN 总线连接,通过这个 桥梁 直接获取我们想要的信息。

  回到文章最初提到的《速度与激情》的场景,通过电脑操作就可以让另外一辆车子自动刹车或转向,这些是真的吗,怎么实现的。

  src=没错,理论上就是通过入侵 CAN 网络, 写 入一些信息而达到的。

  所以这个 CAN 总线有利也有弊,但大家也没必要担心自己的车子会不会也遇到这样的问题。我只能说基本上不会,现在各个车厂都在大力研发 Cyber Security 来防止 CAN 入侵发生。

  这个之后可以再说,与此同时也让我们 DIY 玩家越来越难了。我这里只是举一个例子,并不是要教大家如何控制别人的车辆(当然,这个我也不会)。

  对于发动机模块而言,如果掌握了和发动机模块交流的 钥匙 ,就可以要求重新写控制发动机的代码,当然前提是你要有正确的发动机代码。所以刷发动机,就是指把自己改写过的发动机控制代码重新写进发动机模块,从而实现自己想要的发动机性能,比如排气回火,增加马力等等。

  最后分享我第一次尝试改写发动机参数的对比视频,之后也会放出这个调校的具体教程。

  下一篇文章将以实际操作向大家进一步介绍 CAN 总线和最基本的引擎调校工作,希望大家继续关注分享。