功能安全--外部看门狗的设计陷阱
前言
随着软件定义汽车的言论被越来越多的主机厂认可,主机厂对于汽车电子的软件方面的要求越来越严格,众多国内车厂开始要求各ECU至少要通过ASIL B(汽车安全完整性等级),部分安全件甚至要求过ASIL D。尤其是要出口到欧洲或其他发达国家的车子,通过ASIL等级认证是硬性条件,而通过ASIL B或以上等级的认证,功能安全与信息安全是无法绕开的大山。其中外部看门狗是功能安全实施方案中的重要项, 如果它的设计不合理会对软件稳定性造成重大影响甚至会对硬件成本造成重大影响(重新Layout,重新打板)。下面我将分享一个我在功能安全实施中遇到的关于看狗设计不合理导致的软件无法启动问题。
正文
外部看门朐作为监控软件正常运行的机制,在功能安全的要求中它的开启不能够由软件控制,而是由硬件保证的,软件只能做喂狗操作。这里隐藏了一个不算是陷阱的陷阱,现在主流mcu的性能很强,软件运行速度很快为了保证看门狗能及时发现软件异常,它的喂狗区间会设置的比较小。一般情况下这种设计是不大可能出现问题的,但是在功能安全实施的过程中就容易出现喂狗时间范围过小导致软件无限重启的问题。问题源头除了涉及功能安全之外还涉及到了信息安全的实施。
功能安全在实施过程中对看门狗有影响的部分是芯片的安全机制,它主要影响是在软件的启动阶段。在运行芯片的安全机制的时候,芯片的外围设备尚处于未全部初始化的状态,此时是无法与外部看门狗通信执行喂狗操作的。当芯片的安全机制运行时间过长时(芯片的安全机制运行时间为什么会很长就是另一个话题了)就会导致看门狗喂狗超时引起mcu复位,软件卡死在启动阶段。
信息安全在实施过程中端看门狗有影响的部分也是在软件的启动阶段,不过它是软件最开始启动/未启动阶段(主要与信息安全实施方案有关)。信息安全影响看门狗的根本原因与功能安全一样,信息安全运行时无法执行喂狗动作,引起看门狗喂狗超时从而导致软件一直重启卡死在启动阶段。
解决上述问题的方案有不少,例如:“将执行芯片安全机制的时机延后,修改安全启动的方式等等...”;但是能够根本解决问题的就是加长喂狗的区间范围,否则换一个项目或者客户的对启动时间的需求变严了等都会让问题重新出现。
尾言
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情