您当前的位置: 首页 >> 业界/市场动态

Nvidia将Ada和SPARK引入无人驾驶汽车

作者:阜南县超林电子交流圈电子网 日期:2025-06-05 点击数:6

AdaCore 和 Nvidia 为安全关键型汽车软件中的 Ada 和 SPARK 编程语言开发了开源参考流程,特别是对于无人驾驶汽车。

该流程支持在 Nvidia DriveOS作系统之上更快地开发 ISO26262 软件。Nvidia 使用 SPARK 开发了具有 7m 行代码的 DriveOS,以及基于其 DRIVE AGX 的硬件上的应用程序的认证流程。

AGX-Orin 芯片基于 Ampere GPU 架构和 ARM Cortex A78AE 内核,被沃尔沃、梅赛德斯-奔驰、捷豹路虎、通用汽车、极氪和吉利等汽车制造商以及全球最大的汽车制造商丰田使用。

基于 Blackwell 架构、搭载 NeoverseV3AE 内核的 AGX-Thor 芯片预计将于今年晚些时候提供自动驾驶样品。中国电动汽车制造商比亚迪、自动驾驶班车制造商文远知行、沃尔沃、卡车制造商极光、大陆集团和理想汽车都在使用。

DriveOS 于 1 月在 Orin 芯片上获得了 TUD SUD 的 ASIL-D 认证,该芯片具有名为 Halos 的 AI 安全框架。

“自动驾驶汽车的时代已经到来,我们将在制造、企业以及它们模拟和设计汽车和汽车的方式中与 AI 合作,”Nvidia 首席执行官黄仁勋表示。“十多年来,我们一直在研究自动驾驶汽车。”

参考流程是向前迈出的关键一步,包括符合汽车认证标准 ISO-26262 最高完整性级别的软件组件。使用 SPARK 需要建立一个开发流程,该流程利用 Ada 形式语言及其 SPARK 子集的形式化方法和其他安全特性。

AdaCore 和 Nvidia 已决定将参考流程作为开源且不断发展的文档发布,从而允许整个行业采用 Ada 和 SPARK。

“这标志着开发人员在软件定义汽车上工作的一个重要转折点,”AdaCore的首席产品和收入官Quentin Ochem告诉eeNews Europe。

“这里的独特之处在于 Nvidia 的方法。通过采用 Ada 和 SPARK 并公开发布其 ISO 26262 认证文件,他们正在重塑这些职责的处理方式。Nvidia 没有让开发人员承担孤立、抽象的合规活动,而是将这些问题尽可能地接近开发人员的主要工件:代码本身。这与将验证、可追溯性和需求直接集成到开发流程中的增长趋势相一致,使正确性成为代码库的一个属性,而不仅仅是一个单独的过程。

“传统上,开发人员不得不身兼数职——除了编写代码之外,他们经常发现自己承担了 QA 工程师、验证工程师甚至需求工程师的责任,”他补充道。

“像汽车这样的安全关键领域受 ISO 26262 等标准的约束,需要严格的可追溯性、正确性证据和正式保证——这些责任远远超出了传统的软件工程。”

他还指出,Nvidia 决定开源认证工件是一项关键举措。

“很少看到主要技术提供商将其内部安全认证流程开放到这种程度。Nvidia 的 ISO 26262 文档可以现成使用,这是一件大事,它为其他汽车软件团队提供了一个具体、实用的起点。它降低了开发人员和公司的需求门槛,这些公司的目标是构建安全、经过认证的车辆软件,而无需重新发明轮子。

ISO-26262 参考流程可在 nvidia.github.io/spark-process/ 上获得,任何有兴趣采用这些语言的人都可以自由使用或定制。

ISO26262

该文件定义了一个基于 Spark 的 ISO-26262 合规流程,用于开发符合 ASIL D 和更低 ASIL 的安全关键型车辆软件单元子集。

该过程仅适用于完全使用 Ada 编程语言开发的软件单元,但面向部分或全部 Ada 代码符合 SPARK 子集的软件单元。虽然此过程的某些元素(例如所需的 Ada 编译器警告设置)通常适用于安全关键型 Ada 软件开发,但无法使用此流程开发将 Ada 与其他语言(例如 C、C++ 或汇编语言)混合的软件单元。

此过程涵盖与语言子集、软件单元设计、软件单元实施和软件单元验证相关的 ISO 26262 要求和目标。此外,该流程还涵盖了 ISO 26262 要求和与安全要求相关的目标,当它们以软件接口规范表达时。

此过程支持并排进行形式验证和非形式验证。根据此流程开发的单个软件单元可以进行整体正式验证、整体非正式验证,或者部分正式验证和部分非正式验证。

“简而言之,此举有助于为开发人员揭开安全认证的神秘面纱,并为更强大、更高效的软件定义汽车架构铺平道路,”Ochem 说。

采用新的编程语言涉及部署新环境、培训团队以适应新的形式、调整编程模式以及许多其他问题。但是,从过程的角度来看,编程语言可以互换,但 Ada 和 SPARK 是另一回事。

将其视为一种语言转变是一种可能性,这肯定会在传统的开发过程中产生价值。然而,这将错过该技术带来的关键机会,即将开发过程转变为验证驱动过程的能力,从而允许以比传统方法更严格、更具成本效益的方式演示软件属性。

Ada 语义旨在最大限度地降低漏洞风险,并最大限度地利用源代码中直接定义的语义信息。SPARK 使用这些属性来避免常见漏洞,并允许定义其他属性以正式验证以代替动态测试。

在 SPARK 中,可以保证基本属性,例如变量初始化、没有缓冲区溢出、数据范围,或者更普遍地说,否则最终会成为防御性代码,但它也提供了定义更高级要求的方法,这些要求可以以布尔断言的形式表示,并且无需运行测试即可正式证明实现是正确的。

在开发代码时考虑形式化验证会在开发过程的各个级别产生影响。建立一种以这种方式开发软件的方法可能是一个漫长的迭代路径,并且可能会错过技术的某些关键方面。

参考流旨在允许新的采用者跳过此步骤,并启动一个已经建立的流程,该流程已经过权威机构的审查并由行业进行试验。它并不意味着“按原样”使用,而是作为适合每个组织具体情况的定制流程的起点。

然而,Nvidia 指出,该流程并未涵盖软件架构设计规范、如何将现有 C/C++ 软件单元移植到这个基于 Spark 的进程,或者并发或软件安全分析。

本站所有文章、数据、图片均来自网友原创提供和互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱: