因为长期做高安全(Safety, 不是security)系统的工作,所以在Partitioning上略懂一点。毕竟曾浪费了大量的精力。
目前高安全领域越来越多的标准提到了Partitioning的概念:
-
航电:的DO-297和DO-178,基本上是Partitioning在工程领域的源头。
-
汽车:ISO-26262,AUTOSAR
-
医疗器械:最新的YY-T 0664-2020也采用了IEC62304-2015里Partitioning的概念。
现如今AUTOSAR培训满天飞,但在这些标准、构架背后的内涵,很少被解释。无论是中英文资料,都言之不详。
尽管有超过10年的相关经验,但真的讲解Partitioning,以我的完全不相关的学术专业、繁杂混乱的知识体系,是不够格的。这个话题本应是根正苗红的计算机科学、计算机理论研究者来讲解。所以我只能"浅析"一下。当然,一方面受个人水平限制,另一边Partitioning确实也不难懂,内容难度相对较低。
标准里的Partitioning是怎么说的?
民航:称为“分区”
DO-297: Partitioning - An architectural technique to provide the necessary separation and independence of functions or applications to ensure that only intended coupling occurs. The mechanisms for providing the protection in an IMA platform are specified to a required level of integrity.
中国民航局2022年明传电报:(针对软件)
汽车:没从业过,不知道中文怎么叫
ISO-26262: partitioning separation of functions or elements (3.41) to achieve a design
Note 1 to entry: Partitioning can be used for fault (3.54) containment to avoid cascading failures (3.17). To achieve freedom from interference (3.65) between partitioned design elements (3.41), additional non-functional requirements can be introduced.
AUTOSAR: 直接上图

医疗:翻译为“划分”
IEC62304\YY-T 0664: 没有直接说明,但表明是一种function或software的segregation,也是风险(risk)segregation的支撑。有例图。YY-T 0664中称为“划分”。

有兴趣的朋友可以问问chatgpt,看看得到怎样的答案。
Partitioning的适用范围
首先不妨限制Partitioning的适用范围,因为这个范围太广,很多问题会困扰我们。
如果我们把一个高安全设备的工作情况,划分为一个物理域,其有一个子域——数字电子域。
-
物理域:任何和设备工作、安全相关的问题,包括模拟电子类问题、机械问题、等等所有的问题,都放在这个域里面。
-
数字域:所有数字逻辑的东西,包括软件、硬件的数字逻辑,都放在这里。显而易见,是物理域的一个子域。
为什么这么划分?
简单原因:因为实际工程中Partitioning的作用范畴,仅能够限于数字域。所以大多情况下大家称之为“构架”问题。
例:有这样一个高安全设备,已经取得了航空/医疗/汽车领域的高安全等级认证(DAL A/CLASS C/ASIL D)。突然,老板让你加入一段新的代码,实现一个小小的新功能。
于是你决定:
-
因为新功能的代码使得设备的CPU占用量和各类总线的占空比提高,于是功耗也提高了,电磁辐射也提高了。你会决定这是物理域的工作,因为设备在取得认证的时候跑的程序是特别设计的测试程序,当时的功耗已经接近设备满载,射频、功放、高速总线满载运转,完全覆盖了你当前的情况,所以你认为这段新的代码对供电、热设计、EMC乃至产品寿命没有任何影响。
但是你意识到,即便是这样,这段代码如何嵌入已有的产品,才不会影响具有极高安全性的原软件运行。你有几个选择:
-
我不在乎,我把代码嵌入后重新做所有的分析和测试。
-
我不想做那么多,我要采用一种软件的隔离方式,让新的软件对旧的毫无影响。
-
也许运气好,有一个空闲的MCU子系统或者FPGA子系统供你调用,从物理上已经形成隔离。
-