具体实施方式
本公开的各方面可以在对存储器或数据存储部件具有受监管,受限制,授权或以其他方式限制的“写入访问”权限的任何环境,装置,***或方法中实现。如这里所使用的,“写入访问”意味着提交对存储器位置的改变的可用性或授权,该改变是将数据,值,命令,指令或任何其他数据,元素或标识符存储或重写到存储器位置,不管数据,元素或标识符执行的功能如何,或者不管环境,装置,***或方法的功能或实施方式如何。统称地,“访问”数据可以指从数据存储中读取,查看或以其他方式接收数据,如上所述的“写入”数据,或其组合。如本文所使用的,“受监管”***是对访问具有限制的***,访问例如是对***的数据或值的写入访问,由此仅经批准或授权的实体,各方,功能等被使得能够或以其它方式被允许访问受监管或受限制的元素。在一个非限制性示例中,仅单个授权功能可以具有对特定数据元素的写入访问。
虽然将描述“一组”各种元件,但应理解“一组”可包括任何数量的相应元件,包括仅一个元件。同样如这里所使用的,虽然元件或部件可以被描述为“感测”或“测量”相应的值,数据,函数等,但是感测或测量可以包括确定指示相应的值,数据,函数等或与相应的值,数据,函数等相关的值,而不是直接感测或测量该值,数据,函数等本身。感测或测量的值,数据,函数等可以进一步提供给附加部件。例如,可以将值提供给控制器模块或处理器,并且控制器模块或处理器可以对该值执行处理以确定代表所述值,数据,函数等的代表值或电气特性。
连接参考(例如,附接,联接,连接和接合)将被广义地解释,并且可包括元件集合之间的中间构件和元件之间的相对移动,除非另有指示。因此,连接参考不一定推断两个元件直接连接并且处于彼此固定关系。在非限制性示例中,可以选择性地配置连接或断开连接以提供,启用,禁用等各个元件之间的电气连接。可以通过切换逻辑或被配置为启用或禁用相应元件或部件之间的连接的任何其他连接器来启用或操作非限制性示例配电总线连接或断开连接。
如本文所使用的,“***”或“控制器模块”可包括至少一个处理器和存储器。存储器的非限制性示例可以包括随机存取存储器(RAM),只读存储器(ROM),闪存,或一种或多种不同类型的便携式电子存储器,例如盘,DVD,CD-ROM等,或这些类型的存储器的任何合适的组合。处理器可以被配置为运行任何合适的程序或可执行指令,其被设计为执行各种方法,功能,处理任务,计算等,以启用或实现本文描述的技术操作或操作。该程序可以包括计算机程序产品,其可以包括用于携带或具有存储在其上的机器可执行指令或数据结构的机器可读介质。这种机器可读介质可以是任何可用介质,其可以由通用或专用计算机或具有处理器的其他机器访问。通常,这样的计算机程序可以包括例程,程序,对象,部件,数据结构,算法等,其具有执行特定任务或实现特定抽象数据类型的技术效果。
如本文所使用的,“数据存储”可以包括存储在存储器中的数据值,其中数据值仅可通过单个功能,程序,实体等(“写入器”)写入-可访问。可以通过本领域技术人员理解的数字安全机制来管理或以其他方式调节数据存储的写入-可访问性。虽然只有一个写入器具有对数据存储的写入-访问,但是数据存储可以具有或包括具有读取访问以便以单向关系读取,查看或以其他方式接收数据的多个功能,程序或实体。与数据存储相反,“数据存储队列”可以包括存储在存储器中的数据值或数据值集,其中数据值可由一组一个或多个功能,程序,实体等写入-可访问。可以通过本领域技术人员理解的数字安全机制来管理或以其他方式调节数据存储队列的写入-可访问性。另外,数据存储队列可以包括仅具有读取-访问以便以单向关系读取,查看或以其他方式接收数据的单个功能,程序或实体。在非限制性示例中,该读取操作可以是“一次性”的或破坏性的(例如,在访问操作之后移除数据)。
现在将详细参考本公开的方面,其一个或多个非限制性示例在附图中示出。通过解释本公开而不是对本公开的限制来提供每个示例。实际上,对于本领域技术人员显而易见的是,在不脱离本公开的范围或精神的情况下,可以在本公开中进行各种修改和变化。因此,本公开旨在覆盖落入所附权利要求及其等同物的范围内的这些修改和变化。
本公开的示例方面涉及能够灵活地访问受监管***(例如航空电子***)的内部数据的***和方法。航空电子***的非限制性示例可包括但不限于飞行管理***(FMS),机场表面地图***(ASMS)等。特别地,通常需要在软件编译时定义的接口来访问来自FMS的内部数据。但是,改变或更改访问接口需要修改源代码,重新编译,这会增加成本,增加验证并增加测试负担。当在软件测试中使用内部数据访问时尤其如此。创建编译程序的多个版本可能非常昂贵且难以维护。由于这种额外的测试和重新认证要求,访问接口可能更改很难并且更改成本高昂。因此,所公开方面的一个优点是提供一种方法和***,其能够对诸如航空电子***或FMS的写入-访问调节或受限***的内部数据进行灵活的写入-访问。
本公开的各方面提供了一种技术,用于选择,定制或以其他方式灵活地定义在运行时由航空电子***输入或接收的数据。特别地,在一些实施方式中,本公开的***可以包括配置工具,该配置工具使***操作员能够选择(例如,经由用户接口)此后哪些数据在运行时由航空电子***输入或接收或者以其它方式从航空电子***提供,用于存储在或写入存储器。
因此,本公开的各方面提供了一种定制或以其他方式定义数据,值,参数等的技术,该数据,值,参数等在运行时由受监管***(例如,航空电子***)的数据存储单元中的存储器接收并提交或写入该存储器。此外,本公开的各方面能够实现增强,灵活且稳健地编辑,修改或更新飞行测试数据,测试,调试和分析服务中问题。在又一实例中,本公开的各方面可以提供或启用向嵌入式***上或在其外部运行的第三方应用的“开放”或可访问接口,以与***交互(例如,嵌入式高级间隔管理(A-IM)应用或在电子飞行包(EFB)上运行的应用)。
尽管参考诸如FMS的航空电子***讨论了本公开的示例方面,但是在不偏离本公开的范围的情况下,本文描述的主题可以用于或应用于提供对其他***,运载器,机器,工业或机械资产,或部件的内部数据的灵活访问。
示例性附图仅用于说明的目的,并且附图中反映的尺寸,位置,顺序和相对大小可以变化。
现在参考图1,示出了示例性飞行器10,其具有机身和至少一个涡轮发动机,示为左发动机***12和右发动机***14。左发动机***12和右发动机***14可以基本相同。虽然示出了涡轮发动机12,14,但是飞行器10可包括更少或额外的发动机***,或替代的推进发动机***,例如基于螺旋桨的发动机。
示出的飞行器10还包括多个传感器,***和部件(统称为线路可替换单元(LRU)16,18)以及至少一个服务器20或计算单元,示为两个飞行管理***或飞行控制计算机,在飞行器10的机头附近靠近彼此定位。服务器20中的至少一个还可以包括存储器。
LRU 16,18和服务器20可以通过限定数据通信网络22的传输或通信线路可通信地互连,数据通信网络22横穿飞行器10的至少一部分。可以包括附加的LRU 16,18。虽然描述了服务器20,但是本公开的各方面可以包括显示来自多个***的数据的任何计算***,飞行计算机或显示***。
服务器20的存储器可包括随机存取存储器(RAM),闪存,或一种或多种不同类型的便携式电子存储器等,或这些类型的存储器的任何合适组合。LRU 16,18或服务器20可以与存储器可操作地耦接,使得LRU 16,18或服务器20或其上的任何计算机程序或进程可以访问存储器(例如,“共享存储器”)的至少一部分。
图1中示出的飞行器10仅是本公开的一个非限制性示例环境的示意图,并且用于示出多个LRU 16,18和服务器20可以位于整个飞行器10上。LRU 16,18和服务器20的确切位置与本公开的方面没有密切关系。另外,在本公开的方面中可以包括更多或更少的LRU16,18或服务器20。
通信网络22示意性地示为总线,但是可以包括多个数据通信连接器和接口,例如,以太网或光纤电缆,以及路由或交换部件,以促进LRU 16,18和服务器20之间的通信互连。此外,通信网络22的配置和操作可以由适用于特定飞行器环境的一组共同标准或规则来定义。例如,飞行器10上的通信网络22可以由ARINC 664(A664)标准,ARINC 429(A429)标准或ARINC 653(A653)标准定义或配置。
图2示出了用于提供对受监管***的内部数据的灵活写入-访问的***30。如图所示,***30可以包括示意性地示出彼此交互的一组环境。***30可以包括编程环境32,编程环境32具有编程编辑器40接口,用于编码,编辑或以其他方式开发用于受监管***的源代码42。编程环境32的非限制性示例可以包括用于存储源代码元素,编码数据,修订历史等的第一数据存储(显示为“源代码数据库”44)。编程环境32还可以包括第二数据存储,用于存储与受监管***有关并用于受监管***的操作的信息。例如,第二数据存储可以包括一组受监管***数据变量定义,显示为“数据存储”或“数据存储队列”定义信息46。在一个非限制性示例中,数据存储定义信息可以由配置工具功能(以下称为“配置工具”43)开发或以其他方式识别。
***30还可以包括灵活写入器环境34,其可以包括授权参数写入器接口52,其适于或配置成接收输入参数54并从请求生成器56生成写入请求指令以用于将输入参数54更新,写入,存储,或者提交到受监管***中的存储器。如本文所使用的,“灵活”指示各个部件是用户可访问的,以在***30中引入或注入特定动作(诸如功能动作,包括但不限于写入功能)。在这个意义上,它们是不由***30启动的独立引入动作,但是可以包括使用***30的功能元件的实施方式。
进一步示出的***30包括一个非限制性示例的受监管***环境36,其包括或限定受监管***60。在一个非限制性示例中,受监管***60可包括FMS。受监管***60可包括一组数据存储队列62,一组数据存储64,灵活写入器功能72和授权写入器66,包括授权写入器功能68。如这里所使用的,“授权”写入器66或“授权”写入器功能68是具有对所示代表性数据存储64的写入-访问的代表性单个功能,程序或实体。与授权写入器66或授权写入器功能68相反,“灵活”写入器功能72被配置为自发地或独立地(并且在受监管***60的正常操作或指令之外)生成写入-访问命令,以更新在相应的数据存储队列62或数据存储64中的数据,值等,如本文所述。
虽然***30示出了编程环境32,灵活写入器环境和受监管***环境36被示出为彼此接近,但是将理解本公开的非限制性方面中在相应的环境32,34,36之间出现时间或物理间隔。例如,编程环境32很可能在受监管***60在任何其他环境(例如飞行器的FMS)中实施之前很好地被利用。类似地,灵活写入器环境34可以包括移动开发部件,诸如移动电子设备(膝上型电脑,平板电脑等),其可以相对于其他方式固定的受监管***60(例如,可以相对于特定的飞行器“固定”)可输送。另外,应当理解,每个相应的***32,34,36可以包括用于利用环境32,34,36的相应接口,包括但不限于用户接口(例如,图形用户接口,诸如鼠标的交互设备),以及连接接口(通用串行总线,以太网通信端口等)。
在编程活动期间(例如,在编程环境32中),配置工具43可以包括或以其他方式知道如何在所开发的受监管***60的该组数据存储64,数据存储队列62,平台环境,处理器等中维护数据的先前知识。响应于受监管***源代码42的开发,编程编辑器40或配置工具43可以生成一个或多个可加载配置文件,示出为定义文件48和定义数据文件50。在一些实施方式中,配置工具43或其他***部件可以被配置或适于解析受监管***源代码42(或其衍生物)以提供所有可用数据存储队列62或数据存储64的列表。定义文件48或定义数据文件50可以共同地或单独地指示或以其他方式通知航空电子***的数据-写入部件关于数据存储,数据存储队列或其组合的标识。例如,在一个非限制性示例中,定义文件48可以包含嵌入式***的普通存储器布局,而定义数据文件50还可以包含数据类型和变量名,以使得更容易定义输入参数54。在非限制性示例中,数据-写入部件可以包括灵活写入器环境34,授权参数写入器接口52,请求生成器56,灵活写入器功能72,或其子集。
在一些实施方式中,除了受监管***源代码42之外,配置工具43还可以分析或以其他方式使用受监管***60的一个或多个二进制目标文件来确定***60的存储器布局。例如,编译器可以选择性地创建上下文子句(也可以称为表示规范)。此上下文子句可以包含描述存储器布局的表格。除了受监管***源代码42(其仍可用于确定嵌套数据结构的依赖性)之外,配置工具43还可以使用上下文子句作为输入。基于目标处理器架构(例如,实施受监管***60的处理器),配置工具43还知道字节对齐和字节顺序以调整可加载配置文件48,50中的偏移。
如图所示,在一些非限制性方面,定义数据文件50可以包括用于每个识别的数据存储,数据存储队列等的附加信息。附加信息可包括但不限于偏移,大小,参数等。在一些实施方式中,定义文件48或定义数据文件50可以指定在受监管***60的运行时可以写入或重写的某些数据群组(例如,特定数据存储64或特定数据存储队列62)。
在一些实施方式中,除了指定数据存储或数据存储队列定义或数据文件之外,可加载配置文件48,50还可以指定特定数据存储队列62或数据存储64内的特定数据条目(例如,参数)。可加载配置文件48,50可以提供关于写入-访问命令要写入多少字节的指令(例如,偏移,类型,大小等)。例如,偏移可以描述从特定数据项开始的数据存储64的开头起的字节数;大小可以描述特定数据项占用的字节数;类型可以定义如何解释这些字节。
具体地,可加载配置文件48,50还可以提供或启用授权参数写入器52或灵活写入器功能72来解码或编码要写入数据存储队列62或数据存储64的参数数据。例如,要写入数据存储队列62或数据存储64的编码参数数据可以是一组序列化数据(例如,序列化字节)。授权参数写入器52或灵活写入器功能72可以基于可加载配置文件48,50中包含的信息对序列化数据进行编码。
在运行时(可以包括飞行器的运行时操作,或者例如,受监管***60的基于测试或基于维护的“运行时”),用户,功能,***或程序可以期望数据存储队列62或数据存储64的参数值的变化。可以通过这里描述的***30实现对参数值的这种“灵活”改变。
例如,用户,功能,***或程序可以访问灵活写入器环境34,以便生成更新或以其他方式写入或重写由输入参数54指示的特定参数(或参数集)的请求。该响应由请求生成器56生成,由可加载配置文件48,50编码或通知,并通过通信58提供给受监管***60或灵活写入器功能72。
如果所请求的参数更新指向数据存储队列62中的参数,则灵活写入器功能72可以继续通过通信74直接生成写入-可访问的命令(也通过可加载配置文件48,50编码或通知)到数据存储队列62。这假设灵活写入器功能72是数据存储队列62的多个写入-可访问写入器中的一个。在另一个非限制性示例中,灵活写入器功能72可以利用外部实体可能不知道的***-内部上下文数据潜在地补充经由通信58传来的数据(例如,运行时生成的事件索引或从航空数据库传来的上下文数据)。
如果所请求的参数更新指向数据存储64中的参数,则灵活写入器功能72不能直接更新数据存储64,因为灵活写入器功能72不是具有对数据存储的写入-访问的单个写入器(单个写入器示出为授权写入器66)。在这种情况下,灵活写入器功能72可以通过通信76向授权写入器66生成命令。作为响应,授权写入器66可以通过授权写入器功能68指示或生成写入-可访问指令,示出为指令通信70。灵活写入器功能72还可以被配置或适于利用另一通信78拦截授权指令通信70(示意性地示出拦截框80中的指令通信70),并且替换,注入或以其他方式更新授权指令通信70以包括请求的数据存储64的参数更新。在一个非限制性示例中,可以通过可加载配置文件48,50进一步编码或通知替换,注入或以其他方式更新授权指令通信70。然后将与所请求的参数更新通信的更新的授权指令传送到数据存储64,其中修改的授权写入-访问指令被执行,或以其他方式写入存储器。
配置工具43,编程环境32,灵活写入器环境34,灵活写入器功能72或受监管***环境60或其部件中的每一个可以由一个或多个计算设备实施,示意性地表示在图3中。如图所示,计算设备110可以称为控制器模块或微控制器。计算设备110可以是独立的,或者可以嵌入到计算***或环境32,34,36中。在另一个非限制性示例中,诸如柔性写入器环境34的相应部件可以位于另一运载器或飞行器的子部件上或作为该子部件。
计算设备110可以包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备,包括但不限于处理器核心,微处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA),控制器,微控制器,控制器模块等。在另一个非限制性示例中,一个或多个处理器112可以包括可操作地连接的处理器或处理器执行核心。存储器114可以包括一个或多个非暂时性计算机可读存储介质,例如RAM,ROM,EEPROM,EPROM,闪存设备,磁盘等,或其组合。存储器114可以存储数据116,例如数据存储64或数据存储队列62。存储器114还可以存储指令118,其由处理器112执行以执行本公开所描述的操作或功能。
显而易见的是,本公开的优点在于其能够实现对数据的真正可配置和动态写入-访问,而无需重新编译和重新认证飞行器***(例如,飞行管理***)。
这里讨论的技术参考服务器,数据库,软件应用和其他基于计算机的***,以及所采取的动作和发送到这些***以及从这些***发送的信息。本领域普通技术人员将认识到,基于计算机的***的固有灵活性允许部件之间和部件之中的各种可能的配置,组合以及任务和功能的划分。例如,这里讨论的服务器进程可以使用单个服务器或组合工作的多个服务器来实施。数据库和应用可以在单个***上实现或跨多个***分布。分布式部件可以顺序或并行操作。
在未描述的范围内,各个方面的不同特征和结构可以根据需要彼此组合使用。该一个特征不能在所有方面中示出,并不意味着被解释为它不能有,而是为了描述的简洁而完成。因此,可以根据需要混合和匹配不同方面的各种特征以形成新方面,无论是否明确地描述了新方面。本公开内容涵盖本文描述的特征的组合或置换。
例如,根据本公开,当写入数据存储队列62或数据存储64时,还可以包括用于写入器(例如,授权参数写入器52,灵活写入器功能72,或其组合)的反馈机制,以了解写入是成功的。例如,这可以在运行时发生以进行确定性(自动)测试。在另一个非限制性示例中,反馈机制可以包括当数据存储队列62的用户实际读取所请求的数据或事件变化时至写入器或用于写入器的通知。在又一个非限制性示例中,双向数据存储队列62可以支持外部访问(例如,在受监管***60外部)以读取所请求的数据或事件变化以确认已经发生写入。
本书面描述使用示例来公开本公开的各方面,包括最佳模式,并且还使本领域技术人员能够实践本公开的各方面,包括制造和使用任何装置或***以及执行任何结合的方法。本公开的可专利范围由权利要求限定,并且可以包括本领域技术人员想到的其他示例。如果这些其他示例具有与权利要求的字面语言没有不同的结构元件,或者如果它们包括与权利要求的字面语言无实质差别的等效结构元件,则这些其他示例意图在权利要求的范围内。
本发明的进一步方面由以下条项的主题提供:
1.一种用于对受监管***的数据进行运行时写入访问的***,包括:数据存储,数据存储具有受限写入访问;授权写入器,授权写入器与数据存储通信地连接,并且通过生成从授权写入器输送到数据存储的运行时指令通信而被授权对数据存储具有写入访问,运行时指令通信定义写入数据存储的授权数据;和灵活写入器,灵活写入器未被授权对数据存储具有写入访问,并且适于接收未经授权的数据输入,灵活写入器与授权写入器通信地连接,并且被配置为:将指令传送给授权写入器,以生成运行时指令通信;和在从授权写入器到数据存储的输送期间,利用未经授权的数据输入替换运行时指令通信,以便将未经授权的数据输入提交给数据存储。
2.根据任何在前条项的***,其中受监管***是航空电子***。
3.根据任何在前条项的***,其中航空电子***是飞行管理***或机场表面地图***中的至少一个。
4.根据任何在前条项的***,其中***是测试***、调试***或分析***。
5.根据任何在前条项的***,其中未经授权的数据输入包括受监管***的飞行测试数据。
6.根据任何在前条项的***,其中***是编程开发***。
7.根据任何在前条项的***,进一步包括可加载配置文件,可加载配置文件定义用于数据存储的写入访问指令。
8.根据任何在前条项的***,其中灵活写入器进一步被配置为接收可加载配置文件,并根据数据存储的写入访问指令形成包括未经授权的数据输入的替换运行时指令通信。
9.根据任何在前条项的***,其中灵活写入器进一步被配置为通过根据数据存储的写入访问指令对数据输入进行编码来形成替换运行时指令通信。
10.根据任何在前条项的***,其中未经授权的数据输入是受监管***参数,并且灵活写入器被配置为通过替换运行时指令通信来重写受监管***参数。
11.根据任何在前条项的***,其中受监管***由ARINC 664标准、ARINC 429标准或ARINC 653标准中的至少一个来监管。
12.一种将未经授权的参数写入运行时受监管***的写入访问受限数据存储的方法,该方法包括:通过未被授权写入数据存储的灵活写入器功能接收未经授权的参数;通过灵活写入器功能指示授权的写入器功能,以生成被授权写入数据存储的运行时指令通信;在从授权的写入器功能到数据存储的输送期间,利用包括未经授权的参数的替换通信替换运行时指令通信;和执行替换通信并将未经授权的参数写入数据存储。
13.根据任何在前条项的方法,其中数据存储包括预定义的参数存储器访问,并且其中替换运行时指令通信包括根据通知预定义的参数存储器访问的写入指令的数据存储配置文件来编码未经授权的参数。
14.根据任何在前条项的方法,其中替换运行时指令通信包括以下中的至少一个:修改运行时指令通信以包括未经授权的参数,注入与未经授权的参数的运行时指令通信,或者拦截运行时指令通信。
15.根据任何在前条项的方法,其中执行替换通信包括至少基于替换通信是授权通信的假设来执行替换通信。
16.根据任何在前条项的方法,其中,替换通信是授权通信的假设至少基于源自于授权写入器功能的替换通信。
17.一种用于通过未授权写入器更新运行时受监管航空电子***中的写入访问受限参数的***,该***包括:数据存储,数据存储具有受限于与未授权写入器不同的单个授权写入器的写入访问;未授权写入器,未授权写入器具有请求生成器,请求生成器被配置为生成包括更新参数值的未授权写入请求,并且未授权写入器与受监管航空电子***通信地连接;以及受监管航空电子***的灵活写入器功能,灵活写入器功能被配置为接收未授权写入请求并指示单个授权写入器生成被授权写入数据存储的运行时指令通信,并被配置为利用包括更新参数值的修改的运行时指令通信替换由单个授权写入器生成的运行时指令通信,由此数据存储接收修改的运行时指令通信并将更新参数值提交到数据存储。
18.根据任何在前条项的***,其中***是测试***、调试***或分析***。
19.根据任何在前条项的***,其中更新参数值包括受监管***的飞行测试数据。
20.根据任何在前条项的***,其中受监管***由ARINC 664标准、ARINC 429标准或ARINC 653标准中的至少一个监管。