软件定义汽车(SDV)调试——如何做到 适配软件定义汽车(SDV)?(中)

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是系统思考、大胆设计、小心求证;三是“一张纸制度”,也就是无论多么复杂的工作内容,要在一张纸上描述清楚;四是要坚决反对虎头蛇尾,反对繁文缛节,反对老好人主义。

不觉间来到八月,横坐在电脑前,敲击点文字,对自己也算一个时间的记忆,多年后再次点击,也期待那时会像触发记忆的闸口,让现在的这点岁月传递至那时那刻。

三、从硬件主导到软件赋能

上图为我们呈现了一种传统且经典的基于域的车辆架构。这种架构的设计初衷,在于从结构和层次的角度对车辆进行清晰且有条理的划分。就如同构建一座复杂而有序的城市,将不同的功能区域明确界定,以保障整体的高效运行。在车辆中,底盘、动力系统、车身以及信息娱乐系统等具有相似功能特性的模块,被合理地归类到各个不同的域中。

以高级驾驶辅助系统(ADAS)的添加为例,这就像是在一座已经规划好的城市中新建一个功能独特的区域。由于ADAS具有独特的功能需求,必须单独创建一个新域,并将其对应的控制单元精准地连接到中央网关,以确保新功能能够顺利融入整个车辆系统。在传统架构里,每一个特性或功能都如同一个独立的“小王国”,由其专属的控制单元(ECU)来统治。ECU中的微控制器,就像是一位精明的“管家”,是专门为映射该功能的软件而精心挑选的。它与硬件紧密配合,为特定功能量身定制配置,例如专门负责电动车窗控制的“电动车窗ECU”,或者掌管安全气囊触发的“安全气囊触发ECU”等。然而,受限于其单一的功能定位,这些微控制器的计算能力需求和内存容量,与智能手机等先进设备中的片上系统(SoC)相比,就像是小池塘与大海的差距,被严格控制在较低水平。

时代的车轮滚滚向前,汽车行业也迎来了软件定义汽车(SDV)的新时代。在这个时代,特性和功能不再像传统架构中那样分散在众多独立的ECU中,而是被巧妙地整合到数量更少但性能却显著更高的芯片上。这些芯片如同超级大脑,拥有强大的计算能力和海量的存储空间,能够轻松应对各种复杂的功能需求。图2为我们展示了一个极具前瞻性和可行性的方案示例,即从基于域的架构逐步过渡到具有中央计算机的区域架构。这一转变,就像是从传统的分散式小城镇管理模式,迈向现代化的大都市集中管理模式,将带来效率的极大提升和资源的优化配置。

在区域架构中,功能的分配发生了根本性的变革。原本集中在域控制器中的功能,如今转移到了区域控制单元和中央处理器上。与基于域架构将类似功能划分到不同域的做法不同,区域架构根据功能在车辆中的实际位置进行分配。这种创新的分配方式,就如同根据城市的地理区位来规划功能区域,使得车辆电气系统的布局更加合理,大大降低了系统的复杂性。同时,它也为标准化生产提供了便利,就像统一的建筑规范让城市建设更加高效有序。

在一个区域内部,设备由一个或多个ECU进行精细控制。这些ECU就像是区域内的“基层管理者”,负责协调区域内设备的运行。而它们又与本地主机或区域网关进行紧密通信,就像基层管理者向上级领导汇报工作并接受指令一样。通过这种通信机制,多个数据流和功能得以共享同一块硬件,实现了资源的高效利用。这就像是在一个大型办公楼中,不同部门通过共享会议室、打印机等公共资源,提高了整体的工作效率。

按照这种区域架构的设计思路,一辆结构相对简单的汽车可以巧妙地划分为三到四个区域,各个区域分工明确、协同合作,共同保障车辆的正常运行。而对于那些功能更为复杂、技术更为先进的高端车型,则可以考虑划分为六个区域,以满足其多样化的功能需求。

区域的划分方式具有极高的灵活性和可变性,就像一幅可以随意挥洒的画卷,设计师可以根据车辆的具体需求和设计理念,自由调整区域的边界和功能分配。同时,层次结构中的元素划分也同样灵活,能够适应不同车型和不同技术发展阶段的要求。此外,这种从传统架构到区域架构的转变并非一蹴而就,而是一个循序渐进的过程。图2中展示的三个发展阶段,是众多制造商基于自身技术实力和市场需求,经过深思熟虑后认为可能实现的过渡路径。这就如同攀登一座高峰,我们可以选择不同的路线和节奏,逐步迈向软件定义汽车的新高峰。

四、从基于域的架构到软件定义汽车(SDV)

车身域配备了众多分布式执行器、传感器以及传感器电子控制单元(ECU),它将成为首批向区域架构过渡的域之一。这种初步方案能够降低车辆内部线束的复杂性。设备在本地连接到区域网关,减少了数据线和电源线的数量与长度。区域网关不仅充当处理中心,还作为电源分配模块。网关与中央计算集群之间的通信链路仅需通过少数几条高速网络连接即可建立。这意味着,在安全关键系统中所需的冗余设计,也能以更少的材料投入得以实现。

第二阶段远不止“仅仅”通过简化线束来减轻重量这么简单。在此阶段,单个控制单元和中央计算机单元对计算能力的需求日益增加。电子控制单元(ECU)的数量得到整合,中央计算机成为车辆的“大脑”。例如,底盘控制不再与动力系统一起通过运动域控制器进行外包,而是可以成为区域架构的一部分。

区域架构的最终目标是打造一款完全由软件定义的汽车,该汽车理想地将传感器、执行器、区域模块和数据连接的标准化组件结合在一起。区域聚合器负责流量管理和实时处理。它将不同类型、具有不同关键程度、安全性和保密性要求的数据进行整合。它必须确保数据能够顺利进入和离开数据高速公路,并且最终将以太网数据包转换为控制器局域网(CAN)或本地互联网络(LIN)总线信号,同时不损害上述每比特信息的各项要求。

区域控制器负责扩展网络处理。传感器、执行器以及某些功能在本地连接到区域控制器。这些区域控制器也可被视为迷你网关,因为它们将CAN或LIN与以太网连接在一起。最后,区域ECU通过高速以太网骨干网络连接到车辆的中央“大脑”。

除了上述所有功能外,区域处理器还能够执行应用处理和高级网关服务。这种架构对数据传输、所使用的微控制器以及边缘智能提出了很高的要求。然而,其优势也十分明显:由于中央计算机集中了所需功能,控制器可重复使用且易于更新。

如图展示了一个方案,该方案除了传感器和执行器上的终端微控制单元(MCU)外,还包含四个区域控制器。上述要求描述清楚地表明,这些必须是具备实时能力且具有功能安全特性的高性能微控制器。目前,各半导体制造商正在开发适用于此类应用的芯片,或者相关芯片已经上市。

在下图中,中央计算机硬件清单的首位是三个所谓的高性能片上系统(SoC),它们是高端芯片,如高通的骁龙系列、英伟达的Drive Orin/Thor、恩智浦的S32N55超级车辆集成处理器或瑞萨的第五代R-Car。目前,其他半导体制造商也在为高性能计算(HPC)开发类似的SoC。这些芯片包括由Arm®提供的目前最强大的Cortex-A/R核心组成的大规模多核架构,以及用于加速特殊任务的额外核心(例如,骁龙中的Hexagon数字信号处理器(DSP)、某些R-Car衍生产品中的CEVA-X DSP)。

五、调试与追踪工具的硬件需求

在软件定义汽车(SDV)领域,尽管目前尚未形成关于“标准”SDV架构的统一定义,但对于SDV所将采用的硬件和软件栈类型,业界已广泛达成共识,勾勒出了清晰的技术轮廓。

从调试与追踪工具的角度来看,虽然支持所有芯片这一要求看似不言而喻,实则蕴含着巨大的挑战与关键意义。其首要任务在于,要能够针对SDV中安装的具备大量不同核心的异构芯片架构,实现高效且精准的多核调试。在SDV复杂的系统架构里,非对称多处理(AMP)系统占据着重要地位。这类系统拥有多个核心,每个核心都如同精密仪器中的独立部件,承担着特定且不可替代的任务,它们协同工作,共同支撑起汽车软件系统的稳定运行。

劳特巴赫(Lauterbach)公司推出的TRACE32® PowerView软件,堪称调试领域的得力助手。它具有卓越的兼容性和强大的功能,能够为任何核心架构组合提供一致且友好的用户界面,以及丰富而实用的功能集。借助单个调试探头,开发人员便可以轻松驾驭多达16个同步的PowerView实例,对各类复杂的多核配置进行细致入微的调试[1]。这种强大的调试能力,极大地提高了开发效率,缩短了调试周期,为SDV的快速迭代和优化提供了有力保障。

在SDV的系统中,每个核心都具有高度的独立性和个性化特征。它们可以拥有各自独特的核心架构,就像不同的建筑有着不同的设计风格;具备不同的内存模型,如同不同的仓库有着不同的存储规则;运行着不同的操作系统,仿佛不同的城市有着不同的管理方式;采用不同的地址转换机制,恰似不同的地图有着不同的坐标系统;拥有独立的调试符号,便于开发人员快速定位和解决问题;以及独立的物理地址空间,确保数据的安全性和独立性。为了满足如此复杂多样的调试需求,TRACE32®提供了灵活多样的连接方式。开发人员可以通过菊花链(JTAG)将多个设备串联起来,实现数据的顺序传输和调试;采用星形拓扑结构(cJTAG/串行线调试(SWD)),以中心节点为核心,实现与多个设备的并行通信和调试;或者使用TRACE32® CombiProbe的两根探头,将多个独立的多核片上系统(SoC)巧妙地连接起来,进行集中调试。这种多样化的连接方式,为开发人员提供了更多的选择和灵活性,使他们能够根据具体的系统架构和调试需求,选择最适合的调试方案。

然而,在实际的调试过程中,传统的停机模式调试往往显得力不从心。例如,对于那些仅在实时运行时才会悄然出现的“海森堡错误(heisenbugs)”,它们就像隐藏在黑暗中的幽灵,难以捉摸。又或者那些仅偶尔出现、成因错综复杂的错误,如同迷雾中的谜团,让开发人员难以找到问题的根源。在这些情况下,传统的调试方法往往无法提供足够的信息来解决问题。而追踪扩展模块提供的程序流数据则如同明亮的探照灯,能够穿透迷雾,揭示问题的本质。它可以在完全不影响被测应用程序正常运行的情况下,精确地显示在何时执行了哪些指令,以及每条指令的执行耗时多久。这对于深入分析程序的运行逻辑、定位性能瓶颈以及排查隐藏的错误具有至关重要的作用。此外,代码覆盖率测量和时序分析也是软件开发过程中不可或缺的环节,它们同样需要在较长时间内收集详细的追踪信息,以确保软件的可靠性和稳定性。

TRACE32®追踪工具凭借其强大的功能和卓越的性能,为开发人员提供了强大的支持。借助该工具,开发人员可以在任何提供追踪接口或片上缓冲区的多核SoC上,轻松捕获实时追踪数据。无论你使用的是对称多处理(SMP)系统,这种系统中多个核心共享相同的内存和操作系统,协同处理任务;还是非对称多处理(AMP)系统,各核心独立运行不同的任务;亦或是集成非对称多处理(iAMP)系统,将多种处理模式集成于一体;甚至是它们的任意组合,TRACE32®追踪工具都能游刃有余地应对。现代多核SoC具有先进的数据合并技术,它会将所有核心的追踪数据巧妙地合并在一起。因此,开发人员只需获取一个追踪样本,就能同时捕获所有核心的片外追踪数据,大大简化了数据收集和分析的过程,提高了工作效率。

在SDV项目中选定调试器或追踪工具之前,进行全面而深入的评估是至关重要的。开发人员需要提出一系列关键问题,诸如“该工具是否确实支持包括高性能计算(HPC)SoC在内的所有芯片?”高性能计算SoC作为SDV的核心计算单元,其性能和稳定性直接影响到整个系统的运行效果。如果调试工具无法支持这些关键芯片,将给开发和调试工作带来巨大的困难。“我是否能够调试所有核心,包括高通骁龙芯片上的Hexagon数字信号处理器(DSP)等加速器?”在SDV中,各种加速器如Hexagon DSP等发挥着重要的作用,它们能够加速特定的计算任务,提高系统的整体性能。如果调试工具无法对这些加速器进行有效的调试,将无法充分发挥其优势,甚至可能导致系统性能下降。因此,这类问题的答案直接关系到项目的成功与否,开发人员必须给予高度重视,确保所选工具能够满足项目的实际需求。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者