Franso 发表于 2022-7-8 20:47:04

以丰田汽车底层控制代码为例,自动档汽车是不是可靠性不够?

丰田算老牌汽车企业了,底层控制代码也是乱成一锅粥{:sweat:}
这还怎么让人相信自动档的可靠性呢{:sad:}


        这次事件看样子不是胡编乱造的,作者查了美国高速公路管理局的官网,文章标题为NHTSA-NASA Study of Unintended Acceleration in Toyota Vehicles

        前几年闹得沸沸扬扬的丰田刹不住事件最近又有新进展。十月底俄克拉荷马的一次庭审,2007年一辆2005年凯美瑞暴冲(Unintended Acceleration,UA)致一死一伤事件中丰田被判有责。引起广泛关注的是庭审中主要证人Michael Barr的证词让陪审团同意丰田的动力系统软件存在巨大漏洞可能导致此类事件。这是丰田在同类事件中第一次被判有责。庭审过后丰田马上同意支付300万美元进入调解程序。
        出于好奇,我漫不经心地下载了Barr的286页证词,却一下子被吸引住了。几天内读完,算是对这次事件进行了一次深入了解。下面就从外行角度总结一下这份证词并尝试以更简单的语言解释里面提到的暴冲原因以及丰田犯下的错误。
        Barr的证词下载自他的个人博客Barr Code,但现在该文已经被删除。
        Michael Barr是谁?他是一位拥有20年以上行业经验的嵌入式系统工程师。在十八个月中,有12位嵌入式系统专家,包Barr,受原告诉讼团所托,被关在马里兰州一间高度保安的房间内对丰田动力控制系统软件(主要是2005年的凯美瑞)源代码进行深度审查。这房间没有英特网,没有手机信号,他们进出不能携带任何纸张、记录甚至皮带。最后的调查结果被写入一份800页,13章的详细报告。而鉴于保密协议,调查内容一直没有公布,直至俄克拉荷马这次庭审才首度部分公开(报告本身似乎还没公开)。
        ……
        前面都是电子系统,后面马上进入机械运作,足以造成灾难了。所以仅仅拥有软件级别的防护还不足够,丰田的做法是在主CPU之外单独设置了一块监视芯片,从硬件级别对系统的运作进行监视。监视芯片有两个任务。第一,它运行一种叫做系统卫士(System Guard)的程序,原理上来说是专门用于防止暴冲。主CPU和监视芯片上都会运行系统卫士,可是研究发现Task X一旦死亡,这些系统卫士统统都不起作用了。第二,它运行一个被称为“刹车回声检查(Brake Echo Check)”的程序。这个程序从代码上来看似乎可以检测出Task X的死亡,并且采取相应措施:关闭节气门。听起来像是好消息,但是同样有问题:首先这个程序不太可靠,即使正常运行,理论上也有失效的可能。最关键的是该程序不会自动运行,需要司机先对刹车踏板有“动作”才会触发。注意这里我特意没用“踩刹车”这个词,因为根据分析“触发动作”十分令人困惑。它分两种情况:如果Task X死亡的那一刻司机的脚不在刹车踏板上,那么触发动作是踩刹车。还算可以理解。另一种情况,如果Task X死亡那一刻司机的脚踩在刹车踏板上,那么触发动作是完全释放刹车踏板。没错,察觉车子在不正常加速的司机需要停止踩刹车才能让控制系统关闭节气门!这种违背人类认知的行为应该不是丰田工程师特意设计的。如果是,他们到底在想什么啊?

        还有一些别的匪夷所思的发现。比如丰田的软件28万行代码包含了超过一万一千个全局变量。如果你不知道什么是全局变量,那么只需要知道软件设计的一般原则是要尽量少使用全局变量,因为有可能带来无法预测的结果。这里的“少”的意思是“尽量接近零”,绝对不会是一万一千个。

AWEN2000 发表于 2022-7-8 21:36:27

如果丰田都无法信任,那么国内那些新贵出品的电车更不敢了

Franso 发表于 2022-7-8 21:49:33

AWEN2000 发表于 2022-7-8 21:36
如果丰田都无法信任,那么国内那些新贵出品的电车更不敢了
(引用自2楼)

丰田的手动档是不是比自动档更可靠{:biggrin:}

gyzzg2030 发表于 2022-7-8 22:01:29

楼主可以考虑中500万怎么花了

prow 发表于 2022-7-8 22:12:53

代码是一方面,主要还是要靠测试

1a2b3c 发表于 2022-7-8 22:29:20

那还是淘宝上买一个自动驾驶改装套件吧:)
估计更靠谱些,

gzhuli 发表于 2022-7-8 22:44:41

据说汽车ECU都是用matlab建模仿真然后直接生成的代码,里面的变量和算法没人看得懂。

lusson 发表于 2022-7-8 22:52:47

gzhuli 发表于 2022-7-8 22:44
据说汽车ECU都是用matlab建模仿真然后直接生成的代码,里面的变量和算法没人看得懂。 ...
(引用自7楼)

不全部是。

如果是AUTOSAR架构的话,BSW部分很有可能是买的,比如买Vector的,这个可以直接配置生成。
但应用层代码很多不是,当然很多公司都有自己的标准模块,配置一下就能用了。

lgg88 发表于 2022-7-9 09:00:13

任何东西都没有绝对的安全,不管汽车,飞机。就算代码写得很好,一样的也有出错的概率

Colgates 发表于 2022-7-9 09:01:59

本帖最后由 Colgates 于 2022-7-9 09:13 编辑

Franso 发表于 2022-7-8 21:49
丰田的手动档是不是比自动档更可靠
(引用自3楼)

好奇楼主的可靠不可靠关注点放在在换挡方式上。车的系统有几十样,有安全方面有舒适方面有动力方面。存在就是硬道理,丰田在全世界保有量第一,你说可不可靠?代码论也是扯谈,代码每个人判断的合理与否有不同标准,代码达到目的就是正确代码。把c转汇编,会发现一大堆重复又累赘的汇编代码,道理一样

1a2b3c 发表于 2022-7-9 09:16:53

Colgates 发表于 2022-7-9 09:01
好奇楼主的可靠不可靠关注点放在在换挡方式上。车的系统有几十样,有安全方面有舒适方面有动力方面。存在 ...
(引用自10楼)

楼主都可以想自己改装自动驾驶了,还怕这点代码,哈哈。

redworlf007 发表于 2022-7-9 14:24:47

文章里面说尽量少使用全局变量?胡球说的吧。

yeahmen 发表于 2022-7-9 15:35:45

话说代码不是边调边理解么,哥俩几个屋里一坐,花生啤酒瓜子壳看出来写的有安全隐患。。。

jasonzhu8888 发表于 2022-7-9 19:09:06

听说这样的代码是所有的运行分支和可能的情况都必须测试到。测试代码是主代码的几十倍。

qwe2231695 发表于 2022-7-9 23:56:20

最后好像说是位翻转导致的

Franso 发表于 2022-7-25 23:59:27

lgg88 发表于 2022-7-9 09:00
任何东西都没有绝对的安全,不管汽车,飞机。就算代码写得很好,一样的也有出错的概率 ...
(引用自9楼)

全局变量这么多,更容易出bug?

f117_2r 发表于 2022-7-26 12:00:21

听老师机讲。国产车就得买手动的。要不你就等着被坑吧

lhj200304 发表于 2022-7-26 15:46:19

f117_2r 发表于 2022-7-26 12:00
听老师机讲。国产车就得买手动的。要不你就等着被坑吧
(引用自17楼)

现在都是电动车了,哪还有手动挡呀

TINXPST 发表于 2022-7-26 16:48:18

想起当年雷克萨斯在美国的刹车门事件,油门被卡住不能回弹,踩刹车无效,车毁人亡,车厂赔了大几百万美刀。也不知道现在是不是所有汽车ECU程序都是刹车优先了?

Franso 发表于 2022-7-26 19:59:06

lhj200304 发表于 2022-7-26 15:46
现在都是电动车了,哪还有手动挡呀
(引用自18楼)

你不会买油车手动档么{:biggrin:}

Franso 发表于 2022-7-27 11:07:05

gzhuli 发表于 2022-7-8 22:44
据说汽车ECU都是用matlab建模仿真然后直接生成的代码,里面的变量和算法没人看得懂。 ...
(引用自7楼)

这帮专家审查的是用matlab生成的C代码么{:lol:}
页: [1]
查看完整版本: 以丰田汽车底层控制代码为例,自动档汽车是不是可靠性不够?