在《Nvidia自驾平台软件栈浅析-Overview》一文中,我们已对Nvidia自驾平台软件栈的整体架构有所了解。这次,我们将进一步深入DriveOS的内部,探寻其细节。
DriveOS位于底层硬件和Hypervisor之上,这一结构在以下图中得到了清晰的展示:
Hypervisor,其名称源于Supervisor,象征着更高的权限等级,实质上是虚拟机的核心。它有两种实现方式:Type-1和Type-2。Type-1是直接建立在硬件之上的,DriveOS下的Hypervisor正是这种类型;而Type-2则是建立在操作系统之上。以下图展示了这两种实现方式的区别。
简而言之,Hypervisor在NVIDIADRIVEAGX上的作用是运行多个操作系统。之所以需要这样做,是因为DRIVEAGX能够同时支持ADAS和座舱应用。此外,基于重量级内核的Linux无法满足功能安全的要求,而QNX这类微内核的安全性更易于得到保障。因此,QNX在座舱和ADAS领域得到了广泛应用。
Nvidia的Hypervisor针对ARMv8.2架构进行了优化。在DriveOS5.1.6.0版本之后,Nvidia将8个核心进行了划分,其中2个核心专供DriveOS使用,剩余的6个核心则分配给QNX或Linux使用。相较于之前所有OS共享8个核心的做法,这种划分可能有助于提高安全性。
DriveOS为DRIVEAGX平台提供了基础服务,包括但不限于下表所列内容:
除了Hypervisor、I/O、Storage以及PartittionMonitor等提供系统底层支持外,媒体组件如GPU、Codec、Display、Video以及Audio也被单独列出,它们将被DriveOS有效调度和分配。这些媒体硬件作为核心IP,实际上是由NvMedia软件进行管理的,我们将在后续文章中详细解析。
最后,DriveOS还包含了Nvidia的核心技术,如cuDNN(深度神经网络库)、TensorRT(推理软件栈)以及CUDA(并行计算平台和API模型)。
综上所述,DriveOS的核心目标是在单一硬件平台上实现高效的多操作系统支持。
Nvidia还详细列出了虚拟化框架下的关键组件:
以及这些组件所提供的重要规格和功能,如AUTOSAR多OS监控和快速恢复机制,它有助于多个操作系统协同控制关键硬件资源,如GPU隔离、主CPU群和外部CPU核之间的资源隔离,以及实现ADAS与座舱域计算资源的并行加载、初始化和运行等。