当前位置: 首页 > news >正文

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

在这里插入图片描述

文章目录

    • 一、引言
    • 二、ARINC 653背景
    • 三、整体系统架构
    • 四、应用/执行(APEX)接口
    • 五、ARINC 653 RTOS内部机制
    • 六、健康监测功能
    • 七、软件应用
    • 八、ARINC 653现状
    • 九、总结

一、引言

在现代航空领域,综合模块化航空电子设备(IMA)已成为飞机设计的核心要素,几乎在所有新服役的飞机型号中都占据重要地位。自波音 777 首次引入这一高密度航电封装概念后,其在军事和商业飞机领域迅速获得广泛认可,如洛克希德 C130 AMP、空客 A380 和波音 787 等飞机都采用了 IMA 技术。从商业角度来看,IMA 具有显著优势,它能够有效减少航电设备的重量和体积,从而使航空运输运营商能够承载更多产生收益的有效载荷,进而提升航空公司的盈利能力,为新飞机采购提供经济支持,并维持航空业的持续增长。在 IMA 的发展进程中,ARINC 653 发挥着不可或缺的关键作用。本文旨在全面且深入地概述 IMA 的软件架构、详细解析 ARINC 653 标准的核心要点及其当前的发展动态。

二、ARINC 653背景

回溯到 20 世纪 80 年代中期,航空电子行业在发展过程中逐渐认识到,所有数字航电系统存在一些共性组件,其中包括中央处理器、内存和 I/O 等硬件部分,同时,实时操作系统(RTOS)也因其重要性而成为备受关注的关键软件组件。当时的情况是,每个数字航电系统都在临时基础上各自开发 RTOS,这种分散式的开发方式不仅导致成本高昂,而且存在大量不必要的重复劳动。基于此,行业的标准化焦点开始从硬件领域逐渐向软件领域转移。尽管在制定 IMA 硬件标准方面,行业内存在一定的犹豫,但对于 IMA 软件标准,尤其是 ARINC 653(航空电子应用软件标准接口),却得到了全行业的积极响应与大力支持。

1997 年,航空公司电子工程委员会(AEEC)正式采纳了 ARINC 653 标准。随后,空客和波音在其最新款飞机中应用了这一标准,这一举措极大地巩固了 ARINC 653 作为行业标准的地位。自此,其行业认可度不断扩大,涵盖了整个供应链,从 IMA 系统供应商、各类模块和组件供应商、软件功能应用开发商,到 RTOS 供应商等众多相关方都积极参与其中。
在这里插入图片描述

ARINC 653 规范由四个部分组成:

  • ARINC Specification 653: Part 1:规定了必需的服务,这些服务是构建符合 ARINC 653 标准的系统的基础,涵盖了诸如分区管理、进程管理、时间管理、内存管理、分区间通信、分区内通信以及健康监测等多个方面,为航电软件的稳定运行提供了核心保障。
  • ARINC Specification 653: Part 2:定义了扩展服务,这些服务是在行业多年应用 IMA 系统的经验基础上总结得出的,对于应用程序具有重要的辅助价值,但并非强制要求在所有 ARINC 653 实现中使用,为系统的功能扩展提供了灵活性。
  • ARINC Specification 653: Part 3:提供了一致性测试规范,其主要目标是为测试 RTOS 是否符合 ARINC 653 标准提供详细的指导,最终期望建立一套标准的测试套件和测试代码,确保不同供应商的实现具有一致性和可靠性。
  • ARINC Project Paper 653: Part 4:聚焦于子集服务,旨在为非分区、单线程计算平台提供一个精简高效的 ARINC 653 子集,通过优化内存空间占用和提升处理器性能,满足特定场景的需求。

标准化的 RTOS 接口为航空电子软件开发带来了两大关键优势。首先,它清晰地界定了软件应用与底层核心软件之间的接口边界,使得两者能够独立开发。这意味着应用软件组件和 RTOS 的开发工作可以并行推进,大大缩短了开发周期。同时,基于这一标准开发的应用程序能够在符合 ARINC 653 标准的不同平台之间实现便捷移植,提高了软件的复用性和灵活性。其次,该标准接口定义确保了底层硬件平台和核心软件在演进过程中不会对应用软件产生过多影响,为飞机在整个使用寿命周期内的系统升级提供了经济高效的路径,降低了升级成本和风险。

航空运输行业精心制定的 ARINC 653 标准,作为标准化的 RTOS 接口定义,明确了航电应用软件与包括 RTOS 在内的底层核心软件之间的接口规范。这一标准化工作由航空公司用户社区通过 ARINC 发起,并吸引了众多利益相关方的积极参与,包括飞机制造商、航电供应商、RTOS 供应商、政府机构以及学术界等。软件专家们经过深入研讨,确定了航电设备的特定需求,这些需求包括:

  • 安全关键:必须满足美国联邦航空条例(FAR)第 25.1309 部分所定义的严格安全标准,确保在任何情况下软件系统的故障都不会对飞行安全造成威胁。
  • 实时性:系统对各种事件的响应必须在规定的时间期限内完成,以保证飞机的实时控制和操作的准确性和及时性。
  • 确定性:软件运行的结果必须是可预测和可重复的,以便在复杂的航空环境中提供稳定可靠的性能。

ARINC 653 是目前唯一能够全面支持这些严格需求的 RTOS 接口定义。此外,航电软件还需要按照 RTCA DO - 178 / EUROCAE ED - 12 标准进行严格的合格审定。这一过程要求极高的严谨性和对细节的关注,软件必须经过严格的验证和测试,以证明其符合相关政府标准,确保飞机的安全运行。因此,ARINC 653 的 RTOS 在设计上力求简单明了,同时保持高度的确定性,以降低系统的复杂性和潜在风险。

在 IMA 架构中,积极鼓励整合多种软件功能。RTOS 为此提供了一系列有效的机制,用于管理软件应用之间的通信流程以及它们所操作的数据。当系统级事件发生时,RTOS 能够及时执行相应的控制例程,这些例程的执行结果直接影响飞机的运行状态。随着 IMA 中软件功能的不断增加和复杂性的提升,现代软件工程技术,如面向对象分析与设计、结构化设计的功能分解、自顶向下设计和自底向上设计等,发挥了重要作用。这些技术能够显著简化软件开发过程,提高开发效率。其中一个重要优势是,软件可以被定义、开发、管理和维护为模块化组件,每个模块具有明确的功能和接口,便于独立开发和集成,提高了软件的可维护性和可扩展性。

ARINC 653 的调度模型采用了独特的两层架构。在顶层,通过固定时间调度软件分区,确保每个分区都能在规定的时间片内获得执行机会,从而使运行在这些分区中的应用能够充分访问 IMA 计算资源。在底层,每个分区可以利用中断和其他异步事件来满足其内部的实时需求,确保在分区边界内实时性要求得到满足。在整个过程中,RTOS 扮演着关键角色,它负责合理分配资源并严格执行所有分区规则,确保系统的稳定运行和资源的有效利用。

三、整体系统架构

ARINC 653 软件接口规范主要是为 IMA 系统量身定制的,但其中的一些概念也同样适用于传统的联邦式设备,尤其是那些包含多个分区功能的设备。

以典型的软件架构为例(如图 1 所示),系统主要由两大部分组成:应用软件和核心软件。应用软件负责执行具体的航空电子功能,如飞行控制、导航、通信等,这些功能直接关系到飞机的飞行安全和性能。核心软件则为应用软件提供了一个标准且通用的运行环境,确保应用软件能够稳定、高效地运行。核心软件进一步细分为以下几个关键部分:

  • 实时操作系统(RTOS):它是整个系统的核心调度器,负责对应用软件的需求做出逻辑响应,精确分配处理时间、通信通道和内存资源等关键要素。通过合理的调度算法,确保每个任务都能在规定的时间内得到执行,避免资源冲突和任务延迟。
  • 健康监测器(HM):其主要职责是密切监测系统的运行状态,一旦检测到硬件故障或软件异常,能够迅速启动相应的错误恢复或重新配置策略。这些策略是根据飞机的设计要求和系统的实际情况预先制定的,旨在确保系统在出现故障时能够保持一定的功能完整性,或者尽快恢复到正常运行状态。
  • 硬件接口系统(HIS):作为 RTOS 与硬件之间的桥梁,负责管理物理硬件资源,包括处理器、内存、I/O 设备等。它将 RTOS 的指令转换为对硬件的实际操作,同时将硬件的状态信息反馈给 RTOS,确保硬件资源的有效利用和系统的稳定运行。

在这个架构中,分区类似于通用计算机中的多任务应用,但具有更高的隔离性和安全性要求。每个分区由一个或多个并发执行的进程组成,这些进程根据应用的需求共享处理器资源。每个进程都具有独特的可识别属性,这些属性在系统调度、同步和整体执行过程中发挥着重要作用,例如进程的优先级、执行时间要求、资源需求等都会影响其调度顺序和执行方式。

RTOS 在系统中承担着至关重要的资源分配任务,它负责为每个应用程序精确分配处理器时间和内存区域。这些分配参数是可配置的,由系统集成商根据系统的整体性能需求和应用的特点进行合理设置。通过精心的配置,确保每个应用都能获得足够的资源来完成其功能,同时避免资源的浪费和冲突。

为了实现应用软件的高度可移植性,ARINC 653 采用了一种独特的分区间通信机制。在这种机制下,应用程序在发送或接收消息时,不需要包含关于自身所在分区或通信对方分区位置的明确信息。所有用于正确路由消息的必要信息都存储在由系统集成商开发和维护的配置表中,而不是由单个应用开发者负责。系统集成商通过精心配置环境,确保在 IMA 平台上托管的分区之间能够准确无误地进行消息路由,从而实现了应用程序在不同平台上的无缝移植和高效通信。

四、应用/执行(APEX)接口

APEX 接口的核心目标是在应用软件和 RTOS 之间构建一个通用且高效的接口。通过对这一接口边界(也称为 RTOS 接口)的标准化,实现了应用程序在不同 ARINC 653 兼容平台之间的可移植性,同时也促进了硬件和软件供应商之间的广泛竞争。这种竞争环境有助于降低开发成本和总体拥有成本,为航空电子行业带来了显著的经济效益。ARINC 653 RTOS 接口具有以下主要特点:

  • 精简高效且便于开发:该接口提供了满足 IMA 需求所需的最少数量的服务,避免了过多的复杂功能,从而降低了软件开发的难度。其设计理念旨在简化应用软件开发过程,帮助软件开发者更高效地生产出可靠的产品,提高软件的质量和稳定性。
  • 良好的可扩展性与兼容性:接口具有良好的可扩展性,能够轻松容纳未来系统的增强功能。在进行功能扩展时,能够保持与先前版本软件的兼容性,确保现有应用程序在系统升级过程中无需进行大规模的修改,保护了用户的投资和现有软件资产。
  • 满足多语言实时需求:能够同时满足 Ada 和 C 等常用编程语言的实时要求。不同的编程语言模型可以根据其认证和验证的关键级别,合理利用 RTOS 接口提供的底层服务,确保在不同语言环境下软件的实时性能和可靠性。
  • 解耦应用与硬件架构:有效地将应用软件与实际的处理器架构分离开来,最大限度地减少了硬件变化对应用软件的影响。应用软件通过该接口访问执行服务,而无需关注底层硬件的具体细节,提高了软件的可移植性和适应性,使得软件能够在不同硬件平台上稳定运行。
  • 语言独立性强:接口规范与具体的编程语言无关,这是支持使用不同高级语言编写的应用软件,以及同一语言但不同编译器生成的软件的必要条件。这种语言独立性为开发者提供了极大的灵活性,允许他们根据项目需求自由选择编译器、开发工具和开发平台,而无需担心接口不兼容的问题。

在通信方面,应用程序可以通过多种模式向 RTOS 发出通信请求。例如,应用可以请求执行某个功能并暂停等待请求完成,确保操作的顺序性和完整性;或者在发出请求后继续运行,并通过轮询方式查询请求的状态,以便及时了解操作的进展情况;也可以仅在事务完成时接收通知,减少不必要的资源占用和系统开销。这种多样化的通信模式选择,使得应用程序能够根据自身的需求和系统的实际情况,灵活地进行通信操作,提高了系统的整体性能和效率。

五、ARINC 653 RTOS内部机制

RTOS 在整个系统中肩负着确保应用程序调度和分发功能完整性的重要使命。它通过一系列复杂而精细的算法和机制,为每个分区合理分配处理时间,精确调度每个进程的执行顺序,确保系统的高效运行。同时,它还负责提供必要的内存和 I/O 资源,并通过与硬件管理机制的紧密协作,实现分区在时间和空间(内存)上的绝对隔离。这意味着在 IMA 平台上添加其他应用程序时,不会影响每个分区的时间确定性,即每个分区在特定时间的行为是可预测和稳定的,确保了系统的可靠性和安全性。

实现这种高可靠性的一种有效方法是采用时间片轮转和应用分组调度策略。具体来说,将应用程序划分为严格时间限制的组,每个组在每个时间片内都能确保获得特定数量的处理时间。在这个时间片内,组内的应用可以执行一定数量的预定义算法,确保其功能的实现。如果某个应用试图超出其分配的时间片,RTOS 会及时进行超时处理,防止其对其他应用造成干扰,保证系统的公平性和稳定性。

RTOS 具备强大的进程管理能力,能够准确识别周期性和非周期性进程,并根据它们的特点和系统的资源状况进行合理的调度和分发。同时,它还为每个分区提供详细的健康状态信息和故障数据,以便系统管理员和相关软件能够及时了解系统的运行状况,采取相应的措施进行维护和修复。由于 RTOS 在关键应用中需要高度可靠地运行,因此它必须符合严格的认证标准,这些标准与它所承担的功能集合相匹配。为了满足这些认证要求,RTOS 的设计尽可能简洁明了,减少不必要的复杂性和潜在的故障点。

在资源管理方面,RTOS 代表应用程序管理逻辑和物理资源,确保分配给不同应用的资源相互隔离,避免资源冲突和数据泄露。它负责全面管理内存和通信资源,确保每个应用都能获得足够的资源来完成其任务,同时不会干扰其他应用的正常运行。当系统发生与电源故障或硬件错误相关的中断时,RTOS 能够及时接收并处理这些中断,将相关事件准确地传递给健康监测器功能模块。健康监测器则根据这些信息,指导系统进行必要的恢复操作或采取其他应对措施,确保系统的稳定性和可靠性。此外,RTOS 还负责在规定的时间尺度内,将应用特定的软件中断或事件准确地传递给相应的应用程序,确保应用能够及时响应和处理这些事件,保证系统的实时性和响应性。

在处理通信请求时,RTOS 需要完成一系列复杂的操作。首先,它要根据应用的需求和系统的通信协议,设置合适的 I/O 格式,确保数据能够在不同设备和应用之间正确传输。然后,将格式化后的消息准确地传递给硬件接口,通过硬件接口将消息发送到目标设备或应用。为了确保时间确定性,ARINC 653 对每个消息的定义都包含了最大和最小响应时间,某些消息类型还允许应用设置超时规范。通过这些严格的时间限制和规范,确保了应用程序与 RTOS 之间的所有通信,包括请求、命令、响应、数据 I/O 等,都具有高度的可靠性和可预测性,保证了系统的实时性能和稳定性。

ARINC 653 的第一部分详细阐述了 RTOS 的多个关键方面,包括分区管理、进程管理、时间管理、内存管理、分区间通信、分区内通信和健康监测等。这些方面相互关联、相互协作,共同构成了一个完整的 RTOS 功能体系。基于对 RTOS 的严格定义,开发者可以在模拟 RTOS 接口的通用计算机上进行应用程序的集成和测试工作。这种开发方式使得开发者能够在无需实际硬件平台的情况下,提前对应用程序进行调试和优化,提高开发效率,降低开发成本。同时,由于 ARINC 653 标准的规范性和通用性,使得系统能够轻松托管各种不同类型的应用程序,而无需对 RTOS 进行大规模的修改。标准化的 RTOS 消息定义为未来接口的增强和扩展提供了清晰的路径,只要后续的 RTOS 定义是早期定义的超集,就能够确保在系统升级和功能扩展过程中不会出现兼容性问题,保证了系统的可持续发展和演进。

六、健康监测功能

健康监测器(HM)功能模块紧密集成在 RTOS 内部,并与由飞机设计师或系统集成商精心定义的恢复策略表进行交互。HM 的主要职责是全方位监测 IMA 平台内的硬件故障以及 RTOS 自身的故障。在硬件故障监测方面,通过内置测试(BIT)功能,能够有效检测内存和处理器等关键硬件组件的故障。一旦检测到硬件故障,硬件接口系统会根据具体的硬件实现方式进行本地硬件重新配置,这些重新配置操作通常在硬件层面进行,对 IMA 系统的其他部分保持透明,确保系统的稳定性不受硬件故障的过度影响。

RTOS 密切关注负责软件分区完整性的硬件状态,并在检测到软件或硬件完整性故障时,及时与 HM 功能模块进行通信。由于健康监测功能与特定的 IMA 平台和飞机安装紧密相关,因此其软件被划分为 RTOS 健康监测部分和恢复策略表部分。恢复策略表需要进行详细的配置定义,并嵌入相应的恢复策略。RTOS 具备强大的错误报告功能,应用程序可以方便地访问该功能。当应用程序检测到操作过程中的故障时,能够迅速将故障信息报告给 RTOS,RTOS 进而触发健康监测功能。应用程序也有责任查询系统的健康状态以及可能已经执行的重新配置操作,以便及时了解系统的运行状况并做出相应的调整。RTOS 必须严格遵循 RTOS 接口规范,为所有类型的应用程序提供标准的应用程序编程接口(API),确保系统的兼容性和可扩展性。

故障检测在多个层面展开,其核心目标是在故障传播到接口边界之前进行有效遏制。除了自身监测技术外,应用程序的违规行为、通信故障以及应用程序检测到的故障都会被及时报告给 RTOS。系统通过一个精心设计的故障恢复表来指定针对特定故障应采取的行动。这些行动由健康监测器启动,可能包括终止出现故障的应用程序,并启动备用应用程序来替代其功能,同时进行适当级别的报告,以便系统管理员和相关人员能够及时了解系统的运行状况。需要注意的是,具体的恢复行动在很大程度上依赖于 IMA 系统的整体设计架构和功能需求,不同的系统可能会根据自身的特点制定不同的恢复策略。

在健康监测过程中,存在两种类型的恢复表。一种是分区级别的恢复表,主要用于处理分区内的故障。当分区内发生错误时,本地分区健康监测表会发挥作用,它会明确定义错误的级别(是分区级别还是进程级别),并针对不同级别的错误制定相应的分区级别的行动方案。如果错误发生在进程级别,还会进一步定义具体的错误代码,以便更准确地定位和解决问题。另一种是系统级别的恢复表,用于处理涉及多个分区集成在一个模块上的故障情况。这种系统级别的恢复表能够协调多个分区之间的恢复操作,确保整个系统在复杂故障情况下的稳定性和可靠性。随着航空电子行业的不断发展,健康监测的可接受方法也在持续演变。预计在 2009 - 2010 年期间,ARINC 653 标准将对这些新的发展和变化进行更新和反映,以确保标准的时效性和有效性。

七、软件应用

应用软件在 IMA 平台上以模块化的方式进行开发,每个模块都被精心设计用来执行飞机上的特定功能。在现代航空电子技术的支持下,诸如飞行管理和数据链路通信管理等功能都可以通过软件实现,并利用通用的 IMA 计算资源来运行。这些应用软件的开发和验证过程严格遵循与其功能相适应的关键级别标准,确保软件的可靠性和安全性。在 IMA 平台的运行环境中,每个应用软件模块都能够独立地利用平台提供的资源进行操作,实现了功能的解耦和独立运行。

应用软件在系统中承担着重要的责任,其中包括特定功能的冗余管理。通过冗余设计,在部分组件出现故障时,系统能够自动切换到备用组件或备用路径,确保功能的连续性和可靠性。此外,应用软件还负责对来自外部传感器或其他系统的输入信号进行选择和故障监测。在信号选择方面,它能够根据预设的规则和算法,从多个输入信号中筛选出最可靠的信号进行处理,提高系统的准确性。在故障监测方面,它能够实时检测输入信号的异常情况,一旦发现故障,及时采取相应的措施,如报警、切换信号源或启动备份系统等,保障系统的安全运行。

模块化的软件设计理念在 IMA 系统中得到了充分的应用,通过软件分区的方式,能够有效地将航空电子功能隔离在一个通用的硬件环境中。这种设计使得应用软件在很大程度上独立于硬件,提高了软件的可移植性和复用性。然而,也有一些特殊的应用可能需要特定的 I/O 传感器,例如皮托管静压探头等,这些传感器对于某些特定的飞行参数测量至关重要。

软件模块可以由不同的独立开发团队进行开发,并方便地集成到 IMA 平台中。为了确保分区的完整性和独立性,分区负载映像是通过静态和独立的方式构建的。每个分区内的应用程序都作为独立的程序模块存在,与其他程序模块之间没有相互依赖关系。这些应用程序可能需要专门的控制和显示设备、I/O 处理功能以及相关的硬件支持,以实现其特定的功能。

在分区内,进程调度属性被巧妙地应用于改变进程的执行状态或执行顺序。通过这种方式,即使不同应用程序的关键级别存在差异,一个应用程序的行为也不会对其他应用程序的完整性造成损害。所有应用程序之间的通信都通过 RTOS 进行严格管理,RTOS 的通信机制确保了接口的合规性,防止任何应用程序垄断资源或导致其他应用程序长时间处于暂停状态。这种公平、高效的通信管理机制保证了系统的稳定性和可靠性,使得各个应用程序能够在 IMA 平台上协调运行。

在传统的应用程序开发中,I/O 处理通常与飞机上特定的传感器配置紧密相关,这在一定程度上限制了软件的可移植性和复用性。为了解决这个问题,在应用软件架构的分区设计中,应将飞机特定的 I/O 软件与应用的功能和算法元素进行合理分离。这样,传感器 I/O 调理在逻辑上被定义为与传感器相关的独立功能,使得传感器数据的处理更加集中和规范。

大多数应用程序需要以特定的速率获取功能数据,而在传统的飞机系统中,传感器处理往往是将应用程序与特定飞机系统紧密绑定的关键因素。通过将传感器处理功能从应用程序中分离出来,可以显著提高应用程序的可移植性。此外,这种分离还使得传感器数据能够集中管理,具有特定特征的传感器数据可以被多个应用程序共享,提高了数据的利用率。当传感器特性发生变化时,只需在传感器数据管理器中进行相应的调整,而无需对每个应用程序进行修改,进一步增强了应用软件的可移植性和复用性。在系统运行过程中,应用软件由 RTOS 的调度组件以确定性的方式进行调用,确保每个应用程序都能在规定的时间和条件下得到执行,保证了系统的实时性和稳定性。

八、ARINC 653现状

ARINC 653 标准为了更好地满足航空电子行业不断发展的需求,始终处于持续演进的过程中。其中,Part 1 正在进行更新,其主要目的是使术语与 RTCA DO - 297/EUROCAE ED - 124(综合模块化航空电子设备(IMA)开发指南和认证考虑因素)保持一致。这一术语的统一将有助于进一步加深行业内对 ARINC 653 原则的共同理解,促进不同组织和项目之间的沟通与协作。同时,也有利于在监管机构中获得更广泛的认可,确保标准的合规性和权威性。在更新过程中,对一些关键术语进行了详细的阐述和解释,例如:

  • 核心模块:被定义为包含硬件资源(如核心处理器和各类设备)的硬件组件。每个核心模块可以容纳一个或多个独立的处理器,其架构会对 RTOS 的实现产生一定的影响,但不会改变应用软件与 RTOS 之间通过 APEX 接口进行交互的方式。这意味着在不同的核心模块或同一核心模块内的不同处理器之间,应用软件能够保持良好的可移植性,只要其与 RTOS 的接口保持不变,就无需进行大规模的修改。
  • 核心软件:包括操作系统和支持软件,其主要功能是管理平台资源,为应用软件的执行创造一个稳定、高效的环境。核心软件在 IMA 系统中起着至关重要的桥梁作用,它协调硬件与应用软件之间的交互,确保系统的整体性能和功能实现。

ARINC 653 Part 2 定义了一系列扩展服务,这些服务虽然不是在所有 ARINC 653 实现中都必须使用,但在实际应用中却具有重要的价值。这些扩展服务是基于行业多年在 IMA 系统应用中的实践经验总结而来,能够为应用程序提供更多的功能支持和灵活性:

  • 文件系统:在 Part 2 中定义的文件系统为数据存储提供了一种通用的管理方式。它类似于桌面环境中的文件系统,能够有效地隐藏和管理模块上各种形式的数据存储细节。具体而言,它提供了一系列服务,如文件和目录的打开、关闭、读取、写入和删除等操作。不同的实现可能会支持不同类型的存储介质,如随机存取存储器(RAM)、闪存(Flash)、可擦除可编程只读存储器(EPROM)或基于网络的存储介质等。通过文件系统,多个分区可以方便地共享存储资源,同时文件系统会自动管理存储介质的底层细节,减轻了分区对存储管理的负担,提高了数据存储和访问的效率。
  • 采样端口数据结构:该结构为交换参数数据提供了一套标准化的定义,其中包括了一种标准化的方法来传达数据的状态信息。其主要目的是减少参数格式的不必要变化,从而降低对定制 I/O 处理的需求。在实际应用中,当应用程序正确使用这些标准化的数据结构时,可以显著提高应用的可移植性,并提升核心软件的运行效率。这与典型的航空数据总线(如 ARINC 429、ARINC 629、ARINC 664 P7 等)的原理类似,在这些数据总线上,消息负载格式遵循一套标准的类型和状态指示规则。由于分区间通信与数据总线通信有许多相似的目标和要求,因此采用类似的规则对于简化通信过程、提高通信可靠性具有重要意义。通过这种方式,能够更方便地在飞机总线和网络上实现 ARINC 653 分区间消息的传输和交换。
  • 多个模块时间表:ARINC 653 引入多个模块时间表的概念,旨在使 IMA 系统能够在不同时间灵活地调度不同的功能。例如,在数据加载功能中,数据加载分区在数据加载阶段会获得特定的时间和空间分配,以确保能够充分利用中央处理单元的带宽,实现快速、高效的数据加载。而在数据加载完成后,系统会通过内置机制自动切换到正常的飞行操作模式,此时数据加载功能处于停用状态。对于采用多个时间表的飞机,需要对每个模式以及模式之间的转换进行严格的认证,确保系统在不同模式下的稳定性和可靠性,以及模式转换过程中的平滑过渡。
  • 日志:在 ARINC 653 Part 2 中定义的日志是一种用于存储消息的重要手段。它具有在电源故障情况下保持存储数据完整性的能力,当模块电源恢复时,存储的数据可以被成功恢复。每个日志仅由一个分区访问,其内部结构由非易失性存储器(NVM)中的缓冲区组成。当应用程序向日志中写入消息时,消息首先被存储在缓冲区中,然后再写入内存。这种缓冲区机制使得应用程序能够快速连续地写入多个消息,而无需在每次写入消息后等待写入 NVM 的时间,提高了日志记录的效率和及时性。
  • 采样端口扩展:Part 2 中定义的采样端口扩展为采样端口增加了一些实用的服务,如 READ_UPDATED_SAMPLING_MESSAGE、GET_SAMPLING_PORT_CURRENT_STATUS 和 READ_SAMPLING_MESSAGE_CONDITIONAL 等。这些服务的主要目的是在应用程序读取采样端口消息时提供更大的灵活性,使应用程序能够根据不同的需求和条件更准确、高效地获取所需的信息,满足了复杂应用场景下对数据读取的多样化需求。
  • 服务访问点(SAPs):SAPs 是一种特殊的排队端口,在发送和接收消息时,它允许应用程序访问寻址信息。与普通的 ARINC 653 排队端口服务相比,SAP 服务具有额外的参数来支持地址信息的管理。在客户端/服务器应用场景中,通常会有多个可能的接收者,但对于特定的消息,必须指定唯一的接收者。由于接收者可能会实时变化,因此 SAP 为应用程序提供了一种有效的机制,使其能够对寻址过程进行一定程度的控制,确保消息能够准确无误地发送到目标接收者。

Part 3 of ARINC 653 专注于为测试 RTOS 是否符合 ARINC 653 标准提供详细的指导。其最终目标是建立一套全面、标准的测试套件和测试代码,以确保不同供应商提供的 RTOS 实现都能够严格遵循 ARINC 653 标准。目前,Part 3 仅涵盖了与 Part 1 中定义的 ARINC 653 必需服务相关的测试内容。对于扩展服务的一致性测试,将在未来的 ARINC 653 补充文档中提供。为了提高测试的准确性和可靠性,ARINC 积极鼓励 ARINC 653 操作系统的开发者共同合作,就独立测试的方法和标准达成共识,促进整个行业的标准化发展。

在行业需求的推动下,即将推出的 ARINC 653 文档 Part 4 将是一个精简高效的子集。随着 ARINC 653 的广泛应用,对于支持非分区、单线程计算平台的需求日益增长。Part 4 的主要目标是通过优化内存空间占用和提升处理器性能,满足这一特定场景的需求。具体而言,它致力于实现以下几个方面的目标:

  • 减少代码量和系统状态:通过对 RTOS 代码进行精简,去除不必要的功能和冗余代码,减少系统的状态数量,从而降低系统的复杂性。这不仅有助于提高系统的运行效率,还能够使系统更易于分析和验证,为采用正式证明技术提供了可能。
  • 简化动态和时间行为:简化系统的动态行为和时间特性,使其更易于理解和预测。通过采用更简单、直观的算法和机制,减少系统在运行过程中的不确定性,提高系统的稳定性和可靠性。同时,也便于使用正式方法对系统进行分析和验证,确保系统符合相关的标准和规范。
  • 提供必需服务:只提供满足系统基本功能需求的必需服务,避免包含任何未使用或无效的代码(如 deactivated 代码或 dead 代码)。这样可以进一步减少内存占用,提高系统的资源利用率,使系统更加轻量化和高效化。
  • 简化健康监测器:对健康监测器进行简化设计,在保证其基本功能的前提下,降低其复杂性和资源消耗。通过优化监测算法和减少不必要的监测项目,提高健康监测的效率和准确性,同时减轻系统的负担。

九、总结

ARINC 653 在综合模块化航空电子设备(IMA)的发展进程中扮演着极为关键的角色。从行业应用的实际情况来看,空客 A380 和波音 787 等先进飞机的航电系统套件充分体现了行业对 IMA 的高度重视和积极投入。在 IMA 架构下,核心软件具备强大的能力,能够支持多个航空电子应用程序的同时运行。这些应用程序可以并行开发,并高效地部署在同一个计算平台上,极大地提高了开发效率和系统集成度。

ARINC 653 的出现为航空电子行业创造了一个充满活力和竞争力的商业环境。在这个环境中,航电供应商能够方便地获取符合 EUROCAE ED - 12 和 RTCA DO - 178B 标准且达到 Level A(最严格的软件认证级别)的 RTOS。这种标准化和严格认证的市场环境促使供应商不断提升产品质量,确保只有最优质的产品能够在市场上立足,从而推动了整个行业的技术进步和发展。

除了显著降低 RTOS 的直接采购成本外,ARINC 653 还在航电应用软件的非经常性工程(NRE)成本管理方面发挥了重要作用。随着越来越多的 RTOS 产品遵循 ARINC 653 和 RTCA DO - 178B 标准,一个广泛接受和深入理解的行业生态环境正在逐渐形成。在这个环境中,应用开发者、软件工程师、程序员、监管机构以及整个航空电子社区都将从 IMA 的发展和 ARINC 653 的应用中受益。通过 IMA 原则的有效实施,数百万行的航空电子软件得以顺利开发和批准,这些软件能够满足飞机在整个使用寿命周期内的各种运营需求,为航空运输的安全、高效运行提供了坚实的技术保障。

综上所述,ARINC 653 不仅是一项技术标准,更是推动航空电子行业发展的重要力量,它在提高系统性能、降低成本、保障安全等方面都发挥着不可替代的作用,对现代航空电子技术的发展产生了深远的影响。

相关文章:

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

文章目录 一、引言二、ARINC 653背景三、整体系统架构四、应用/执行(APEX)接口五、ARINC 653 RTOS内部机制六、健康监测功能七、软件应用八、ARINC 653现状九、总结 一、引言 在现代航空领域,综合模块化航空电子设备(IMA&#xf…...

jenkins-node节点配置

一.简述: Jenkins有一个很强大的功能: 即:支持分布式构建(jenkins配置中叫节点(node),也被称为slave)。分布式构建通常是用来吸收额外的负载。通过动态添加额外的机器应对构建作业中的高峰期,或在特定操作系统或环境运行特定的构建…...

【Flink系列】5. DataStream API

5. DataStream API DataStream API是Flink的核心层API。一个Flink程序,其实就是对DataStream的各种转换。具体来说,代码基本上都由以下几部分构成: 5.1 执行环境(Execution Environment) Flink程序可以在各种上下文…...

【tailscale 和 ssh】当服务器建立好节点,但通过客户端无法通过 ssh 连接

背景 当服务器建立好节点,一切显示正常但通过客户端无法通过 vs code 中的 ssh 连接到服务器 问题解决 因为服务器是重装过的,所以忘记在服务器上下载 ssh 了。。。安装完成并启动 SSH 服务后便可正常连接! sudo apt update sudo apt in…...

TDengine 做 Apache SuperSet 数据源

‌Apache Superset‌ 是一个现代的企业级商业智能(BI)Web 应用程序,主要用于数据探索和可视化。它由 Apache 软件基金会支持,是一个开源项目,它拥有活跃的社区和丰富的生态系统。Apache Superset 提供了直观的用户界面…...

PCL 新增自定义点类型【2025最新版】

目录 一、自定义点类型1、前言2、定义方法3、代码示例二、合并现有类型三、点云按时间渲染1、CloudCompare渲染2、PCL渲染博客长期更新,本文最近更新时间为:2025年1月18日。 一、自定义点类型 1、前言 PCL库自身定义了很多点云类型,但是在使用的时候时如果要使用自己定义的…...

【记录52】el-table-column 添加fixed属性 滚动条无法滑动

问题: el-table-column 添加fixed属性 滚动条无法滑动 使用element UI组件,用到el-table的el-table-column的fixed属性时,当滚动条长度小于固定列时,滚动条无法通过鼠标去点击滑动操作 原因 fixed是用来固定列的属性,其…...

华为OD机试E卷 ---最大值

一、题目描述 给定一组整数(非负),重排顺序后输出一个最大的整数。 二、示例1 用例1 输入 10 9输出 910说明:输出结果可能非常大,所以你需要返回一个 字符串只而不是整数。 三、输入描述 数字组合 四、输出描述 最大的整数 五、解题思路 字符…...

服务器迁移MySQL

由于公司原有的服务器不再使用,需要将老的服务器上的MySQL迁移到新的服务器上,因此需要对数据进行备份迁移,前提是两台服务器已安装相同版本的MySQL,这里就不再讲解MySQL的安装步骤了,可以安装包、可以在线下载、可以容…...

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…...

【Linux系统】分区挂载

我们能够根据一个 inode 号在指定分区寻找目标文件的 struct inode,也能根据目录文件的内容,通过映射关系,找指定的 inode,可是,现在有个问题: 问题:inode 是不能跨分区使用的!Linu…...

进阶——十六届蓝桥杯嵌入式熟练度练习(按键+LCD)

高亮(一) 声明 char buf[21];unsigned char upled0x04;uint8_t key_val;uint8_t key_down,key_up,key_old;uint32_t key_time;uint8_t key_temp,key_flag;uint8_t line_flag; 按键代码 void key_proc(void) { key_valkey_scan();key_downkey_val&…...

简单介绍JSONStream的使用

地址 作用 这个模块是根据需要筛选出json数据中自己所需要的数据 使用 var JSONStream require("JSONStream"); var parse require("fast-json-parse"); var fs require("fs");fs.createReadStream("./time.json").pipe(JSONSt…...

LTX-Video 高效视频生成模型,一键处理图片文字

LTX-Video 是由 Lightricks 在 2024 年开发的一种视频生成模型,这种模型采用了 transformer 和 Video-VAE 技术,能够高效生成高分辨率视频。此外,LTX-Video 支持多种视频生成方式,包括从文本到视频和从图像到视频。 教程链接&…...

AUTOSAR从入门到精通专栏总目录

AUTOSAR通过分层、模块化和封装的特性,革命性地改变了汽车电子软件开发。它简化了软硬件接口,提高了软件复用性,降低了开发成本和周期。随着 AUTOSAR 在汽车电子系统开发领域的广泛应用,对其深入理解和熟练掌握已成为汽车电子软件…...

Windows环境本地配置pyspark环境详细教程

目录 一、背景简记二、本地单机spark环境配置详细步骤第一步:python环境安装第二步:安装jdk及配置环境变量安装包下载安装环境变量配置 第三步:安装Spark安装包下载安装配置环境变量 第四步:安装hadoop安装包下载安装配置环境变量…...

第8篇:从入门到精通:掌握Python异常处理

第8篇:异常处理 内容简介 本篇文章将深入探讨Python中的异常处理机制。您将学习异常的基本概念与类型,掌握使用try-except块处理异常的方法,了解finally语句的作用,以及如何抛出和定义自定义异常。通过丰富的代码示例&#xff0…...

聚铭网络6款产品入选CCIA《网络安全专用产品指南》

近日,中国网络安全产业联盟CCIA正式发布《网络安全专用产品指南》(第二版)(以下简称《指南》)。聚铭网络凭借突出技术优势、创新能力以及市场积累,旗下安全产品成功入选防火墙、网络安全审计、日志分析、网…...

高等数学学习笔记 ☞ 不定积分的积分方法

1. 第一换元积分法 1. 基础概念:形如的过程,称为第一换元积分法。 2. 核心思想:通过对被积函数的观察(把被积函数的形式与积分表的积分公式进行比较),把外部的部分项拿到的内部(求原函数), 然后进行拼凑,…...

08、如何预防SQL注入

目录 1、分析及其存在哪些危险 2、预防SQL注入 1、分析及其存在哪些危险 原理: SQL 注入是一种常见的网络攻击手段,攻击者通过在用户输入中插入恶意的 SQL 语句,利用程序对用户输入处理不当的漏洞,使恶意 SQL 语句被数据库服务器执行。 通常发生在应用程序将用户输入直接拼…...

如何发布自己的第一个Chrome扩展程序

如何发布自己的Chrome扩展程序 只需要六步即可完成Chrome扩展程序的发布 (1)首先打开google chrome 应用商城注册开发者账号的页面 (2)现在进行一个绑卡支付5美元的一次性注册费用即可。【不知道如何绑卡的支付的,文…...

ubuntu开机自启,其他方式

在 Ubuntu 22.04 中,如果不使用 .service 文件,仍然有其他方法可以让某个 .sh 文件随着系统启动而自动运行。以下是几种替代方法: 方法一:使用 crontab 的 reboot 选项 crontab 是 Linux 中用于设置周期性被执行的任务的工具。通…...

容器渗透横向

本质上要获得 1.获得容器IP段 2.获得主机IP段 3.获得本机IP 4.通过CNI或Docker0等扫描本机端口 Flannel 容器信息 rootubuntu-linux-22-04-desktop:/home/parallels/Desktop# k get po -A -o wide NAMESPACE NAME …...

软件测试—接口测试面试题及jmeter面试题

一,接口面试题 1.接口的作用 实现前后端的交互,实现数据的传输 2.什么是接口测试 接口测试就是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑关系 3.接口测试必要性 1.可以发现很…...

ansible之playbook剧本

Playbook 1.playbook的组成部分 开头 用 --- 表示,表示是一个yaml文件,但是可以忽略不写 Tasks(任务) 包含了在目标主机上执行的操作,操作还是由模板来执行。每一个任务都是一个ansible的模块,调用系统命…...

基于 Python 的财经数据接口库:AKShare

AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 安装 安装手册见…...

强网杯RS加密签名伪造及PyramidWeb利用栈帧打内存马

RS加密签名伪造及PyramidWeb利用栈帧打内存马 今年强网杯的一个新框架源代码如下 from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.events import NewResponse from pyramid.response import Response import utiluser…...

Java基础——概念和常识(语言特点、JVM、JDK、JRE、AOT/JIT等介绍)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研) 记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结网上借鉴&#xff0…...

搭建Node.js后端

从头开始搭建一个Node.js后端,并实现查询历史数据的功能,下面是详细的步骤说明,包括环境配置、项目初始化、代码编写、以及服务器启动。 1. 环境配置 1.1 安装 Node.js 和 npm 首先,你需要在你的电脑上安装 Node.js 和 npm&…...

RV1126+FFMPEG推流项目(9)AI和AENC模块绑定,并且开启线程采集

前面两篇已经交代AI和AENC模块的配置,这篇就让这两个模块绑定起来,绑定的原因是,Aenc从Ai模块拿到采集的原始数据进行编码。 使用 RK_MPI_SYS_Bind 把 AI 节点和 AENC 进行绑定,其中 enModId 是模块 ID 号选择的是 RK_ID_AI、s32C…...

vue编写一个可拖动的模块,并可以和任何其他组件组合使用

实现思路&#xff1a; 使用 Vue 的自定义指令&#xff08;directive&#xff09;来处理拖动逻辑。在 mounted 钩子中添加鼠标事件监听器&#xff0c;以实现拖动功能。在 unmounted 钩子中移除鼠标事件监听器&#xff0c;防止内存泄漏。 代码示例&#xff1a; <template&g…...

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理&#xff08;1&#xff09;为RestClient&#xff08;2&#xff09;为WebClient&#xff08;3&#xff09;为RestTemplate 注意 一、概述 官方文档…...

【蓝桥杯】Python算法——求逆元的两种算法

目录 零、前言一、逆元二、扩展欧几里得算法三、费马小定理四、总结 零、前言 距离25年蓝桥杯还有大概三个月时间&#xff0c;接下来重点应该会放在蓝桥杯备考方向&#xff0c;一起努力&#xff0c;一起加油 一、逆元 什么是逆元&#xff1f;这是数论中的一个基本概念。如果存…...

音频语言模型与多模态体系结构

音频语言模型与多模态体系结构 多模态模型正在创造语言、视觉和语音等以前独立的研究领域的协同效应。这些模型使用通用架构,将每种模式视为不同的“token”,使它们能够以一种与人类认知非常相似的方式联合建模和理解世界。 ​ ​可以将多模态分为两个主要领域:输入空间(…...

Redis的安装和配置、基本命令

一、实验目的 本实验旨在帮助学生熟悉Redis的安装、配置和基本使用&#xff0c;包括启动Redis服务、使用命令行客户端进行操作、配置Redis、进行多数据库操作以及掌握键值相关和服务器相关的命令。 二、实验环境准备 1. JAVA环境准备&#xff1a;确保Java Development Kit …...

2025.1.17——三、SQLi regexp正则表达式|

题目来源&#xff1a;buuctf [NCTF2019]SQLi1 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;正常注入 step 2&#xff1a;弄清关键字黑名单 1.目录扫描 2.bp爆破 step 3&#xff1a;根据过滤名单构造payload step 4&#xff1a;regexp正则注…...

flutter 常用UI组件

文章目录 1. Toast 文本提示框oktoastbot_toast2. loading 加载窗flutter_easyloading3. 对话框gex dialog4.下拉刷新pull_to_refresh5. pop 窗custom_pop_up_menu6. pin code 密码框pinput7. 二维码qr_flutter8. swiper 滚动组件carousel_sliderflutter_swiper_view9. Badge 角…...

基于微信小程序的健身房预约管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关&#xff08;RD Gateway&#xff09;中的一个重大漏洞&#xff0c;该漏洞可能允许攻击者利用竞争条件&#xff0c;导致拒绝服务&#xff08;DoS&#xff09;攻击。该漏洞被标识为CVE-2025-21225&#xff0c;已在2025年1月的补丁星期二更新中得到…...

如何学习Transformer架构

Transformer架构自提出以来&#xff0c;在自然语言处理领域引发了革命性的变化。作为一种基于注意力机制的模型&#xff0c;Transformer解决了传统序列模型在并行化和长距离依赖方面的局限性。本文将探讨Transformer论文《Attention is All You Need》与Hugging Face Transform…...

RPA赋能内容创作:打造小红书入门词语图片的全自动化流程

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 用RPA全自动化批量生产【入门词语】图片做小红书商单&#xff0c;保姆级工具开发教程 最近由…...

Quantum supremacy using a programmable superconducting processor 全文翻译,配公式和图

2019年&#xff0c;谷歌的量子霸权文章&#xff0c; 原文链接&#xff1a; https://www.nature.com/articles/s41586-019-1666-5 第一稿&#xff0c;公式和视图后续再加 。。。 Quantum supremacy using a programmable superconducting processor 使用可编程超导处理器的量…...

Jupyter notebook中运行dos指令运行方法

Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统&#xff09;指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…...

个人vue3-学习笔记

声明:这只是我个人的学习笔记(黑马),供以后复习用 。一天学一点,随时学随时更新。明天会更好的! 这里只给代码,不给运行结果,看不出来代码的作用我也该进厂了。。。。。 Day1 使用create-vue创建项目。 1.检查版本。 node -v 2.创建项目 npm init vue@latest 可…...

Ubuntu安装搜狗输入法

Ubuntu安装搜狗输入法 官网完整安装步骤调整默认输入法 官网 搜狗输入法 - 官网&#xff1a;https://shurufa.sogou.com/ 搜狗输入法Linux版 - 首页&#xff1a;https://shurufa.sogou.com/linux 搜狗输入法Linux版 - 安装指南&#xff1a;https://shurufa.sogou.com/linux/gu…...

【C】链表算法题2 -- 反转链表

leetcode链接https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/https://leetcode.cn/problems/reverse-linked-list/description/…...

1.7 ChatGPT:引领AI对话革命的致胜之道

ChatGPT:引领AI对话革命的致胜之道 随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,OpenAI 的 ChatGPT 已经成为了举世瞩目的技术突破。从普通的自动化客服到深入的创作与协作,ChatGPT 通过其卓越的语言理解和生成能力,改变了人们与计算机交互的方式…...

当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线

问题&#xff1a;当设置dialog中有el-table时&#xff0c;并设置el-table区域的滚动&#xff0c;看到el-table中多了一条横线&#xff1b; 原因&#xff1a;el-table有一个before的伪元素作为表格的下边框下&#xff0c;初始的时候已设置&#xff0c;在滚动的时候并没有重新设置…...

如何使用 useMemo 和 memo 优化 React 应用性能?

使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时&#xff0c;性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑&#xff0c;其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…...

turtle教学课程课堂学习考试在线网站

完整源码项目包获取→点击文章末尾名片&#xff01;...