CN117891712A - 车辆中的应用程序控制 - Google Patents
车辆中的应用程序控制 Download PDFInfo
- Publication number
- CN117891712A CN117891712A CN202311292372.1A CN202311292372A CN117891712A CN 117891712 A CN117891712 A CN 117891712A CN 202311292372 A CN202311292372 A CN 202311292372A CN 117891712 A CN117891712 A CN 117891712A
- Authority
- CN
- China
- Prior art keywords
- application
- vehicle
- command
- computer
- isolated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 18
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 240000005020 Acaciella glauca Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 229910052742 iron Inorganic materials 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 235000003499 redwood Nutrition 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了“车辆中的应用程序控制”。一种计算机包括处理器和存储器,并且存储器存储指令,所述指令可由处理器执行以在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;并且在接收到命令时,将命令传输到存储器中的位置。
Description
技术领域
本公开涉及车辆中的应用程序控制器。
背景技术
现代车辆通常包括控制器。控制器是不同的计算装置,例如电子控制单元(ECU)。控制器可以被编程用于通过执行应用程序来执行车辆的不同功能。应用程序可以控制车辆的特征。例如,应用程序可以基于制动踏板的位置来确定制动力;基于发动机的每分钟转数来换挡;确定由电动助力转向(EPAS)致动器施加的扭矩;将信息娱乐系统与操作者的移动装置配对等。应用程序可以用作车辆的部件的驱动程序,即,可以为部件提供软件接口。所述部件可以是传感器,诸如相机、雷达、超声波传感器、惯性测量单元、温度传感器、GPS传感器、轮速传感器等;可致动部件,诸如制动致动器、EPAS致动器、挡风玻璃刮水器、前照灯等;用户界面部件,诸如屏幕和显示器、扬声器、传声器等;或其他类型的部件。
发明内容
提供了用于隔离车辆上的应用程序的系统和技术。所述技术可用于在各种真实世界条件下测试新应用程序的性能。为了测试新应用程序,计算机被编程为在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;并且在接收到命令时,将命令传输到存储器中的位置。有利地,计算机阻止应用程序改变车辆的操作(使得车辆将像无应用程序的车辆一样操作)。服务器可以将应用程序无线地传输到大量要测试的车辆。然后,车辆可以在存储器中的位置中跟踪由应用程序输出的命令和与应用程序的性能相关的数据。在所述位置处跟踪由应用程序发出的命令,以示出应用程序在不被隔离的情况下将如何操作车辆。车辆可以将其相应位置的内容传输到服务器。可以在车辆上的隔离的软件环境中迭代地测试应用程序的更新版本,而不影响车辆的操作,直到认为测试完成为止。在完成应用程序的测试之后,应用程序可以包括在新车辆中和/或可以将应用程序传输到车辆以便以非隔离方式运行。
一种计算机包括处理器和存储器,并且存储器存储指令,所述指令可由处理器执行以在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;并且在接收到命令时,将命令传输到存储器中的位置。
在一个示例中,所述指令还可以包括用于防止由应用程序发送的消息在除存储器中的位置之外的目的地处被接收的指令。
在一个示例中,所述指令还可以包括用于防止应用程序消耗大于控制器的阈值量的处理能力的指令。
在一个示例中,所述指令还可以包括用于进行以下操作的指令:在从应用程序的隔离的软件环境外部接收到消息时,允许应用程序接收消息。
在一个示例中,所述指令还可以包括用于操作面向服务的架构的指令,并且应用程序被编程为通过面向服务的架构发布命令。在另一个示例中,所述指令还可以包括用于进行以下操作的指令:在接收到命令时,阻止命令通过面向服务的架构发布。
在另一个示例中,所述指令还可以包括用于进行以下操作的指令:在通过面向服务的架构接收到应用程序订阅的消息时,允许应用程序基于策略接收消息。在又一个示例中,所述策略可以指示允许应用程序接收的消息的类型。
在又一个示例中,所述策略已经用验证脚本进行了测试。
在一个示例中,所述指令还可以包括用于进行以下操作的指令:经由车辆的收发器从远离车辆的服务器接收应用程序。在另一个示例中,所述指令还可以包括用于进行以下操作的指令:基于应用程序的状态在隔离的软件环境中执行应用程序,状态经由收发器从服务器接收。
在另一个示例中,所述指令还可以包括用于进行以下操作的指令:在从服务器接收到应用程序之后发生钥匙关断循环时,激活应用程序使得应用程序可用于在隔离的软件环境中执行。
在一个示例中,所述指令还可以包括用于进行以下操作的指令:指示车辆的收发器将存储器中的位置的包括命令在内的内容传输到远离车辆的服务器。
在一个示例中,所述指令还可以包括用于进行以下操作的指令:将数据传输到所述位置,数据指示在应用程序输出命令的同时车辆的操作。
在一个示例中,应用程序可以是第一应用程序,命令可以是第一命令,指令还可以包括用于在隔离的软件环境之外执行第二应用程序的指令,并且第二应用程序可以被编程为发出致动部件的第二命令。
在一个示例中,隔离的软件环境可以由操作系统定义。
在一个示例中,隔离的软件环境可以由操作系统之上的平台定义。
在一个示例中,隔离的软件环境可以是虚拟机。
在一个示例中,隔离的软件环境可以是容器。
一种方法包括:在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;以及在接收到命令时,将命令传输到存储器中的位置。
附图说明
图1是示例性车辆的框图。
图2是车辆的示例性软件架构的图示。
图3是车辆的示例性面向服务的架构的框图。
图4是用于控制车辆上的应用程序的示例性过程的过程流程图。
具体实施方式
参考附图,贯穿若干视图,其中相似附图标记指示相似零件,计算机105包括处理器和存储器,并且存储器存储指令,所述指令可由处理器执行以在车辆100的控制器115上的隔离的软件环境250中执行应用程序205;在从应用程序205接收到致动车辆100的部件120的命令时,阻止命令被传输到部件120;并且在接收到命令时,将命令传输到存储器中的位置。
参考图1,车辆100可以是任何乘用或商用汽车,诸如轿车、卡车、运动型多功能车、跨界车、货车、小型货车、出租车、公共汽车等。
计算机105是基于微处理器的计算装置,例如,通用计算装置(其包括处理器和存储器、电子控制器或类似装置)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、前述各者的组合等。通常,在电子设计自动化中使用诸如VHDL(VHSIC(超高速集成电路)硬件描述语言)的硬件描述语言来描述诸如FPGA和ASIC的数字和混合信号系统。例如,ASIC是基于制造前提供的VHDL编程而制造的,而FPGA内部的逻辑部件可基于例如存储在电连接到FPGA电路的存储器中的VHDL编程来配置。因此,计算机105可以包括处理器、存储器等。计算机105的存储器可以包括用于存储可由处理器执行的指令以及用于电子存储数据和/或数据库的介质,和/或计算机105可以包括诸如提供编程的前述结构的结构。计算机105可以是耦合在一起的多个计算机。
计算机105可以通过通信网络110(诸如控制器局域网(CAN)总线、以太网、WiFi、局域互连网(LIN)、车载诊断连接器(OBD-II))和/或通过任何其他有线或无线通信网络传输和接收数据。计算机105可以通信地耦合到用于部件120和传感器125的控制器115并且经由通信网络110通信地耦合到收发器130。
控制器115是基于微处理器的计算装置,例如,通用计算装置(其包括处理器和存储器、电子控制单元(ECU)或类似装置)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、前述各者的组合等。通常,在电子设计自动化中使用诸如VHDL(VHSIC(超高速集成电路)硬件描述语言)的硬件描述语言来描述诸如FPGA和ASIC的数字和混合信号系统。例如,ASIC是基于制造前提供的VHDL编程而制造的,而FPGA内部的逻辑部件可基于例如存储在电连接到FPGA电路的存储器中的VHDL编程来配置。每个控制器115因此可以包括处理器、存储器等。每个控制器115的存储器可以包括介质,所述介质用于存储可由处理器执行的指令以及用于电子地存储数据和/或数据库,和/或控制器115可以包括提供编程的结构,诸如前述结构。
控制器115可以被编程用于执行车辆100的不同功能。例如,控制器115可以包括发动机控制模块、车身控制模块、约束装置控制模块、附件控制模块、动力转向控制模块、防抱死制动控制模块等。车辆100可以包含50至100个控制器115。
控制器115(例如,控制器115的子集)可以通信地耦合到相应部件120。部件120可致动以执行动作或任务。例如,部件120可以包括可物理致动的部件,诸如制动致动器、电动助力转向(EPAS)致动器、挡风玻璃刮水器等;灯,诸如前照灯、转向指示灯、制动灯、乘客舱灯等;用户界面部件,诸如屏幕和显示器、扬声器、传声器等;或其他类型的部件。部件120可以例如通过作为车辆100的推进系统、制动系统和/或转向系统的一部分来影响车辆100的操作。
车辆100的推进系统生成能量并且将能量转换成车辆100的运动。推进系统可以为常规的车辆推进子系统,例如,常规的动力传动系统,其包括联接到将旋转运动传递到车轮的变速器的内燃发动机;电动动力传动系统,其包括电池、电动马达和将旋转运动传递到车轮的变速器;混合动力传动系统,其包括常规的动力传动系统和电动动力传动系统的元件;或任何其他类型的推进装置。推进系统可以包括与计算机105和/或人类操作员通信并从其接收输入的至少一个控制器115。人类操作员可以经由例如加速踏板和/或换挡杆来控制推进系统。
制动系统通常是常规的车辆制动子系统并且阻止车辆100的运动,由此使车辆100减慢和/或停止。制动系统可以包括摩擦制动器,诸如盘式制动器、鼓式制动器、带式制动器等;再生制动器;任何其他合适类型的制动器;或者它们的组合。制动系统可以包括与计算机105和/或人类操作员通信并从其接收输入的至少一个控制器115。人类操作员可以经由例如制动踏板来控制制动系统。
转向系统通常是常规的车辆转向子系统并且控制车轮的转弯。转向系统可以是具有电动助力转向的齿条与小齿轮系统、线控转向系统(这两者是公知的),或者任何其他合适的系统。转向系统可以包括与计算机105和/或人类操作员通信并从其接收输入的至少一个控制器115。人类操作员可以经由例如方向盘来控制转向系统。
控制器115(例如,控制器115的子集)可以通信地耦合到相应传感器125。传感器125可以提供关于车辆100的操作的数据,例如,车轮转速、车轮取向以及发动机和变速器数据(例如,温度、燃料消耗等)。传感器125可以检测车辆100的位置和/或取向。例如,传感器125可以包括全球定位系统(GPS)传感器;加速度计,例如压电系统或微机电系统(MEMS);陀螺仪,例如速率陀螺仪、环形激光陀螺仪或光纤陀螺仪;惯性测量单元(IMU);以及磁力计。传感器125可检测外部世界,例如车辆100周围环境的对象和/或特性,诸如其他车辆、道路车道标记、交通信号灯和/或标志、行人等。例如,传感器125可包括雷达传感器、超声波传感器、扫描激光测距仪、光探测和测距(LIDAR)装置以及图像处理传感器(诸如相机)。
收发器130可以适于通过任何合适的无线通信协议(诸如蜂窝、低功耗(BLE)、超宽带(UWB)、WiFi、IEEE 802.11a/b/g/p、蜂窝-V2X(CV2X)、专用短程通信(DSRC)、其他RF(射频)通信等)无线地传输信号。收发器130可以适于与远离车辆100(即,与车辆100不同且间隔开)的服务器135通信。服务器135可以位于车辆100的外部。例如,服务器135可以与另一车辆相关联(例如,V2V通信),与基础设施部件相关联(例如,V2I通信),与紧急响应者相关联,与和车辆100的所有者相关联的移动装置相关联,与车辆100的车队所有者或管理者相关联,与车辆100的制造商相关联等。收发器130可以是一个装置或者可以包括单独的传输器和接收器。
参考图2,示出了用于在车辆100的控制器115上运行的软件的架构200。架构200包括操作系统210、在操作系统210上运行的平台215、平台215的服务220和应用程序编程接口(API)255以及供应用程序205在平台215上运行的应用程序空间225。平台215和操作系统210可以在面向服务的通信(SoC)层230上运行,所述SoC层在操作系统210与用于车辆100上的特定硬件的软件包(例如,用于传感器125的驱动程序235、用于传感器125或部件120的车载支持包240、通信网络110、用于操作系统210的启动加载程序245等)之间对接。SoC层230可以被实施为面向服务的架构300,如下面关于图3所描述的。
操作系统210是管理硬件、软件资源以及用于应用程序205的服务220和API 255的系统软件。操作系统210可以是适合于嵌入式系统的任何操作系统,例如,LINUX、QNX等。
平台215可以在操作系统210之上提供附加功能。例如,平台215可以是Autostar自适应平台,其提供特定于汽车环境的功能,例如服务220。平台215可以实施用于自适应应用的Autostar运行时。Autostar自适应平台和用于自适应应用程序的Autosar运行时可以遵循由联盟Autostar颁布的标准。
服务220可以包括更新和配置管理、通信管理、身份和访问管理、执行管理、状态管理等。用于更新和配置管理的服务220处理更新软件包、应用程序205和平台215。用于通信管理的服务220处理下面关于图3描述的面向服务的架构300。用于身份和访问管理的服务220为访问管理操作提供标准化接口。用于执行管理的服务220处理平台215的初始化、应用程序205的启动和关闭以及平台215和应用程序205的生命周期管理。用于状态管理的服务220处理平台215的操作状态,包括传入事件以及这些事件和设置对应内部状态的请求的优先级排序。
应用程序205在应用程序空间225中运行。应用程序205是安装在控制器115中的一者上的软件程序,例如导航应用程序、用于传感器125(诸如相机)中的一者的数据处理程序、驾驶员辅助系统(诸如主动巡航控制)等。应用程序205可以直接或间接地控制车辆100的部件120。应用程序205可以基于来自传感器125的数据、来自操作员的输入、来自其他应用程序205的输入等来控制部件120。例如,应用程序205可以基于制动踏板的位置来确定制动力,基于发动机的每分钟转数来换挡,确定由电动助力转向(EPAS)致动器施加的扭矩,将信息娱乐系统与操作员的移动装置配对等。举其他示例,应用程序205可以控制部件120的更复杂的致动,例如防抱死制动、悬架系统的控制或高级驾驶员辅助系统(ADAS)(诸如自动制动、车道保持辅助等)。
计算机105可以被编程为经由收发器130从远离车辆100的服务器135接收应用程序205中的一个。服务器135可以将应用程序205与应用程序205的状态一起传输到车辆100。所述状态可以指示应用程序205是要隔离的还是不要隔离的,如下所述。服务器135可以提供要隔离的应用程序205以用于测试目的,而不是用于车辆100的操作。非隔离应用程序205b可以用于操作车辆100。计算机105可以从服务器135接收应用程序205和状态作为单次下载。
计算机105可以被编程为激活应用程序205,使得应用程序205可用于执行。例如,计算机105可以使用服务220进行更新和配置管理,如由Autosar颁布的标准中所述。计算机105可以在从服务器135接收到应用程序205之后并且在执行应用程序205之前激活应用程序205。例如,计算机105可以在从服务器135接收到应用程序205之后发生钥匙关闭循环时,即,在接收到应用程序205之后关闭车辆100时,激活应用程序205,由此防止干扰车辆100的行程。
计算机105可以被编程为在控制器115中的一者上执行应用程序205。计算机105基于从服务器135接收的应用程序205的状态在隔离的软件环境250中(或外部)执行应用程序205。如果根据从服务器135接收的状态,应用程序205是隔离的应用程序205a,则计算机105可以在车辆100的控制器115上的应用程序空间225中的隔离的软件环境250中执行应用程序205。如果根据从服务器135接收的状态,应用程序205是非隔离应用程序205b,则计算机105可以在车辆100的控制器115上的隔离的软件环境250外部执行应用程序205。计算机105可以激活应用程序205,使得应用程序205可用于在隔离的软件环境250中或其外部执行,这取决于状态,例如,使用服务220进行更新和配置管理。
隔离的软件环境250限制在隔离的软件环境250内部运行的软件与在隔离的软件环境250外部运行的软件之间的交互。例如,隔离的软件环境250可以是由平台215定义的隔离分区、由操作系统210定义的隔离分区或命名空间、虚拟机、容器等,如下面依次描述的。如果计算机105包括多个隔离的应用程序205a,则每个隔离的应用程序205a可以具有其自己的隔离的软件环境250。
隔离的软件环境250可以是由平台215限定的隔离分区。例如,应用程序205可以在平台215的单个软件集群中运行。软件集群是包括一个或一组应用程序205和/或模型以及用于那些应用程序205和/或模型的参数的软件包。计算机105可以通过使用服务220进行更新和配置管理来建立用作隔离的软件环境250的软件集群。计算机105可以通过使用用于身份和访问管理的服务220来为软件集群提供单独的寻址,例如虚拟地址空间。
隔离的软件环境250可以由操作系统210定义。例如,隔离的软件环境250可以是Linux内的命名空间和/或控制组,或者是QNX内的自适应分区、资源限制和/或沙箱。Linux内的命名空间可以相对于进程树、网络接口、挂载等来限制在命名空间中操作的应用程序205可用的系统的视图。Linux内的控制组可以限制在控制组中操作的应用程序205的资源使用。QNX内的自适应分区可以限制在自适应分区中操作的应用程序205的资源使用,并且资源限制可以限制特定进程的资源使用。QNX内的沙箱化可以限制在沙箱中操作的应用程序205的网络访问。
隔离的软件环境250可以是虚拟机。虚拟机运行与车辆100的操作系统210分开的一个或多个应用程序205以及其自己的操作系统、服务、API等。虚拟机从操作系统210借用资源,例如CPU时间、存储器、存储装置等。使用内核来提供用于虚拟机的资源的隔离。
隔离的软件环境250可以是容器,即,应用程序205可以被容器化。容器化意指将软件代码(在这种情况下为应用程序205中的一个)仅与操作系统库和执行软件代码所必需的其他软件打包,使得容器化应用程序205可以部署到不同的计算环境。计算机105可以运行用于选择操作系统210和/或平台215的任何合适的容器,例如,用于Linux的runC、用于Linux的containerd等。
计算机105可以被编程为防止隔离的应用程序205a消耗大于控制器115的阈值量的处理能力。可以选择阈值以允许在控制器115上运行的非隔离的应用程序205b的可靠性能。计算机105可以防止比作为隔离的软件环境250(例如控制组、自适应分区、对虚拟机的使用限制等)的特征的阈值更大的消耗。
参考图3,计算机105被编程为操作面向服务的架构300。面向服务的架构300在计算机105、控制器115和通信网络110上实施。面向服务的架构300是软件环境,即根据计算机105和/或控制器115存储且可执行的程序指令来实施的,其中通信网络110上的装置(例如,计算机105和/或控制模块115)上的应用程序205充当消息主题的发布者305或订阅者310。消息主题是可以在应用程序205之间发送消息的一类数据或更新。消息主题的示例可以包括由传感器125产生的不同类型或类别的数据,例如,消息主题可以是来自相机或特定相机的图像数据、来自温度传感器的发动机温度、来自GPS传感器的位置更新等;对部件120的命令,例如,消息主题可以是所请求的加速度、挡风玻璃刮水器的致动模式等;等等。
给定消息主题的发布者305向该消息主题的订阅者310发送关于消息主题的消息;例如,数据处理程序可以是图像数据的发布者305,并且驾驶员辅助系统可以是图像数据的订阅者310。又例如,GPS程序可以是位置更新的发布者305,并且导航应用程序可以是位置更新的订阅者310。每个控制器115可以安装有多个应用程序205。应用程序205可以是特定消息主题的发布者305或订阅者310。同一应用程序205可以是一个消息主题的发布者305和不同消息主题的订阅者310。
计算机105可以被编程为在从用于隔离的应用程序205a的隔离的软件环境250外部接收到消息时,允许隔离的应用程序205a接收消息,例如,选择性地允许隔离的应用程序205a接收消息。例如,消息可以是隔离的应用程序205a订阅的通过面向服务的架构300发送的消息,即,隔离的应用程序205a是消息的消息主题的订阅者310。例如,计算机105可以存储策略并且允许隔离的应用程序205a基于策略接收某些消息。所述策略可以由服务220实施以进行通信管理。所述策略可以指示允许隔离的应用程序205a接收的一种或多种类型的消息,例如消息主题。例如,所述策略可以列出允许隔离的应用程序205a接收的消息的类型,并且禁止接收其他类型。替代地,所述策略可以列出禁止隔离的应用程序205a接收的消息的类型,并且允许接收其他类型。计算机105可以在接收到针对隔离的应用程序205a的消息(例如,通过面向服务的架构300接收到隔离的应用程序205a所订阅的消息)时,允许隔离的应用程序205a基于策略(例如,基于指示允许隔离的应用程序205a接收该类型的消息的策略)接收消息。计算机105可以在接收到针对隔离的应用程序205a的不同消息(例如,通过隔离的应用程序205a订阅的面向服务的架构300上的另一消息)时,阻止隔离的应用程序205a基于策略(例如,基于指示不允许隔离的应用程序205a接收该类型的消息的策略)接收消息。因此,可以针对隔离的应用程序205a如何响应车辆100行驶的环境和情境来测试隔离的应用程序205a,因为隔离的应用程序205a接收指示那些环境和情境的数据。
隔离的应用程序205a可以被编程为发送命令以致动车辆100的部件120中的一者,例如,通过面向服务的架构300发布命令。计算机105被编程为在从隔离的应用程序205a接收到致动部件120的命令时,阻止命令被传输到部件120,例如阻止命令通过面向服务的架构300发布。例如,计算机105可以防止由隔离的应用程序205a发送的消息在除计算机105的存储器中的位置(下面描述)之外的目的地处被接收。计算机105可以防止由隔离的应用程序205a发送的消息通过通信网络110传输到除计算机105的存储器中的位置之外的目的地。计算机105可以防止来自隔离的应用程序205a的所有命令在除所述位置之外的目的地处被接收。因此,可以防止隔离的应用程序205a影响车辆100的操作。
计算机105可以被编程为执行隔离的软件环境250外部的应用程序205,即非隔离应用程序205b。计算机105可以被编程为在接收到针对非隔离应用程序205b的消息时,允许非隔离应用程序205b接收消息。非隔离应用程序205b可以被编程为发送命令以致动车辆100的部件120中的一者,例如,通过面向服务的架构300发布命令。计算机105可以被编程为允许来自非隔离应用程序205b的命令被传输到组件120,例如,通过以面向服务的架构300发布。
计算机105可以将数据传输到存储器中的位置。计算机105可以被编程为在从隔离的应用程序205a接收到致动部件120的命令时,将命令传输到所述位置。计算机105可以被编程为将其他数据传输到所述位置。其他数据可以指示在隔离的应用程序205a输出命令的同时车辆100的操作或在隔离的应用程序205a输出命令的同时车辆100的环境条件。例如,其他数据可以包括指示部件120中的一些的致动的数据、来自传感器125的数据、指示车辆100的位置和/或当前时间的数据等。位置可以由计算机105的存储器中的地址指定,或由计算机105的存储器中的多个地址(例如,连续或不连续的地址)指定。
本文描述的指令可以例如在安装之前用验证脚本进行测试。例如,可以用验证脚本来测试上述策略。例如,验证脚本可以遍历连接到隔离的软件环境250的面向服务的架构300的端口,例如,如上述策略所指定,以确定能够与隔离的应用程序205a通信的发布者305和订阅者310是否在预设列表上。预设列表可以包括被批准在测试应用程序205时使用的发布者305和订阅者310。替代地或另外,验证脚本可以确定隔离的应用程序205a的清单是否允许隔离的应用程序205a消耗大于阈值量的处理能力。
计算机105可以被编程为指示收发器130向服务器135传输存储器中的位置的包括命令在内的内容。例如,如果收发器130具有足够高的信号强度以进行传输,则计算机105可以在预定时间传输位置的内容,或者在收发器130具有足够高的信号强度的预定时间之后的下一个时间传输位置的内容。预定时间可以是在车辆100的行程结束时,如车辆100关闭所指示的。替代地或另外,预定时间可以是周期性的,即,以定期重复间隔或行驶的距离。可以基于计算机105的存储器中的位置的容量来选择间隔或距离。
图4是示出用于控制车辆100上的隔离的应用程序205a的示例性过程400的过程流程图。计算机105的存储器存储用于执行过程400的步骤的可执行指令,和/或可以以诸如上述的结构来实施编程。过程400可以在车辆100开启时开始。作为过程400的总体概述,计算机105在隔离的软件环境250中执行隔离的应用程序205a。在从用于隔离的应用程序205a的隔离的软件环境250外部接收到消息时,计算机105允许或阻止隔离的应用程序205a基于策略接收消息。在从隔离的应用程序205a接收到致动车辆100的部件120的命令时,计算机105阻止命令被传输到部件120,并且替代地将命令传输到计算机105的存储器中的位置。响应于满足传输所述位置的内容的条件,计算机105指示收发器130将所述位置的内容传输到服务器135。只要车辆100保持开启,计算机105就继续执行前述步骤。响应于车辆100关闭,计算机105确定是否已经从服务器135接收到应用程序205。如果是,则计算机105激活应用程序205。
过程400在框405中开始,其中计算机105在车辆100的控制器115上的隔离的软件环境250中执行隔离的应用程序205a,如上所述。
接下来,在决策框410中,计算机105确定计算机105是否已经从隔离的应用程序205a的隔离的软件环境250外部接收到消息,例如,通过面向服务的架构300接收到隔离的应用程序205a订阅的消息主题的消息,如上所述。在接收到消息时,过程400前进到框415。否则,过程400前进到决策框420。
在框415中,计算机105基于策略来路由消息,例如,如果策略指示隔离的应用程序205a具有许可,则允许隔离的应用程序205a接收消息,或者如果策略指示禁止隔离的应用程序205a,则阻止隔离的应用程序205a接收消息,如上所述。在框415之后,过程400前进到决策框420。
在决策框420中,计算机105确定计算机105是否已经从隔离的应用程序205a接收到致动车辆100的部件120的命令,如上所述。在接收到命令时,过程400前进到框425。否则,过程400前进到决策框430。
在框425中,计算机105阻止命令被传输到部件120,如上所述。计算机105将命令传输到计算机105的存储器中的位置,如上所述。计算机105将其他数据传输到在隔离的应用程序205a输出命令的同时生成的位置,如上所述。在框425之后,过程400前进到决策框430。
在决策框430中,计算机105确定是否传输存储器中的位置的内容,如上所述。如果是,则过程400前进到框435。如果否,则过程400前进到决策框440。
在框435中,计算机105指示收发器130将存储器中的位置的内容传输到服务器135,如上所述。在框435之后,过程400前进到决策框440。
在决策框440中,计算机105确定车辆100是否仍然开启。如果是,则过程400返回到框405以继续在隔离的软件环境250中执行隔离的应用程序205a。如果否,则过程400前进到决策框445。
在决策框445中,计算机105确定计算机105是否已经从前一次钥匙关闭以来经由收发器130从服务器135接收到应用程序205,例如新的应用程序205或已经在车辆100上的应用程序205的更新,如上所述。如果是,则过程400前进到框450。如果否,则过程400结束。
在框450中,计算机105激活应用程序205,使得应用程序205可用于在隔离的软件环境250中或在隔离的软件环境250外部执行,这取决于与应用程序205一起接收的状态。在框450之后,过程400结束。
一般来讲,所描述的计算系统和/或装置可采用多种计算机操作系统中的任一种,包括但决不限于以下版本和/或种类:Ford应用;AppLink/Smart Device Link中间件;Microsoft/>操作系统;Microsoft/>操作系统;Unix操作系统(例如,由加利福尼亚州红杉海岸的Oracle公司发布的/>操作系统);由纽约州阿蒙克市的国际商业机器公司发布的AIX UNIX操作系统;Linux操作系统;由加利福尼亚州库比蒂诺市的苹果公司发布的Mac OSX和iOS操作系统;由加拿大滑铁卢的黑莓有限公司发布的BlackBerry操作系统;以及由谷歌公司和开放手机联盟开发的安卓操作系统;或由QNX软件系统公司提供的/>CAR信息娱乐平台。计算装置的示例包括但不限于车载计算机、计算机工作站、服务器、台式机、笔记本、膝上型计算机或手持计算机、或某一其他计算系统和/或装置。
计算装置通常包括计算机可执行指令,其中所述指令可由诸如以上列出的那些的一个或多个计算装置执行。可以从使用多种编程语言和/或技术创建的计算机程序编译或解译计算机可执行指令,所述编程语言和/或技术单独地或者组合地包括但不限于JavaTM、C、C++、Matlab、Simulink、Stateflow、Visual Basic、Java Script、Python、Perl、HTML等。这些应用中的一些可以在诸如Java虚拟机、Dalvik虚拟机等虚拟机上编译和执行。通常,处理器(例如,微处理器)接收来自例如存储器、计算机可读介质等的指令,并执行这些指令,从而执行一个或多个过程,包括本文所述过程中的一者或多者。此类指令和其他数据可使用各种计算机可读介质来存储和传输。计算装置中的文件通常是存储在诸如存储介质、随机存取存储器等计算机可读介质上的数据的集合。
计算机可读介质(也称为处理器可读介质)包括参与提供可由计算机(例如,由计算机的处理器)读取的数据(例如,指令)的任何非暂时性(例如,有形)介质。此类介质可采用许多形式,包括但不限于非易失性介质和易失性介质。指令可通过一种或多种传输介质来传输,所述一种或多种传输介质包括光纤、电线、无线通信,包括构成联接到计算机的处理器的系统总线的内部件。共同形式的计算机可读介质包括例如RAM、PROM、EPROM、FLASH-EEPROM、任何其他存储器芯片或盒式磁带、或计算机可从中读取的任何其他介质。
本文所述的数据库、数据存储库或其他数据存储可包括用于存储、存取/访问和检索各种数据的各种机制,包括分层数据库、文件系统中的文件集、专用格式的应用程序数据库、关系型数据库管理系统(RDBMS)、非关系数据库(NoSQL)、图形数据库(GDB)等。每个这样的数据存储通常被包括在采用诸如以上提及中的一种的计算机操作系统的计算装置内,并且以各种方式中的任何一种或多种来经由网络进行访问。文件系统可从计算机操作系统访问,并且可包括以各种格式存储的文件。除了用于创建、存储、编辑和执行已存储的程序的语言(诸如上述PL/SQL语言)之外,RDBMS通常还采用结构化查询语言(SQL)。
在一些示例中,系统元件可以被实施为一个或多个计算装置(例如,服务器、个人计算机等)上、存储在与其相关联的计算机可读介质(例如,磁盘、存储器等)上的计算机可读指令(例如,软件)。计算机程序产品可以包括存储在计算机可读介质上的用于实施本文描述的功能的此类指令。
在附图中,相同的附图标记指示相同的要素。此外,可以改变这些要素中的一些或全部。关于本文描述的介质、过程、系统、方法、启发等,应当理解,虽然此类过程等的步骤已被描述为按照某一有序的顺序发生,但是可以通过以与本文所述顺序不同的顺序执行所述步骤来实践此类过程。还应当理解,可以同时执行某些步骤,可以添加其他步骤,或者可以省略本文所述的某些步骤。
除非本文作出相反的明确指示,否则权利要求中使用的所有术语意图给出如本领域技术人员所理解的普通和通常的含义。具体地,除非权利要求叙述相反的明确限制,否则使用诸如“一个”、“该”、“所述”等单数冠词应被解读为叙述所指示的要素中的一者或多者。形容词“第一”和“第二”贯穿本文档用作标识符,并且不意在表示重要性、次序或数量。“响应于”和“在确定……时”的使用指示因果关系,而不仅是时间关系。
已经以说明性方式描述了本公开,并且应理解,已经使用的术语意在是描述性的词语的性质,而不是限制性的。鉴于以上教导,本公开的许多修改和变化是可能的,并且本公开可以不同于具体描述的其他方式来实践。
根据本发明,提供了一种计算机,所述计算机具有处理器和存储器,存储器存储指令,所述指令可由处理器执行以:在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;并且在接收到命令时,将命令传输到存储器中的位置。
根据一个实施例,所述指令还包括用于防止由应用程序发送的消息在除存储器中的位置之外的目的地处被接收的指令。
根据一个实施例,所述指令还包括用于防止应用程序消耗大于控制器的阈值量的处理能力的指令。
根据一个实施例,所述指令还包括用于进行以下操作的指令:在从应用程序的隔离的软件环境外部接收到消息时,允许应用程序接收消息。
根据一个实施例,所述指令还包括用于操作面向服务的架构的指令,并且应用程序被编程为通过面向服务的架构发布命令。
根据一个实施例,所述指令还包括用于进行以下操作的指令:在接收到命令时,阻止命令通过面向服务的架构发布。
根据一个实施例,所述指令还包括用于进行以下操作的指令:在通过面向服务的架构接收到应用程序订阅的消息时,允许应用程序基于策略接收消息。
根据一个实施例,所述策略指示允许应用程序接收的消息的类型。
根据一个实施例,所述策略已经用验证脚本进行了测试。
根据一个实施例,所述指令还包括用于经由车辆的收发器从远离车辆的服务器接收应用程序的指令。
根据一个实施例,所述指令还包括用于进行以下操作的指令:基于应用程序的状态在隔离的软件环境中执行应用程序,状态经由收发器从服务器接收。
根据一个实施例,所述指令还包括用于进行以下操作的指令:在从服务器接收到应用程序之后发生钥匙关闭循环时,激活应用程序使得应用程序可用于在隔离的软件环境中执行。
根据一个实施例,所述指令还包括用于进行以下操作的指令:指示车辆的收发器将存储器中的位置的包括命令在内的内容传输到远离车辆的服务器。
根据一个实施例,所述指令还包括用于进行以下操作的指令:将数据传输到位置,数据指示在应用程序输出命令的同时车辆的操作。
根据一个实施例,应用程序是第一应用程序,命令是第一命令,指令还包括用于在隔离的软件环境外部执行第二应用程序的指令,并且第二应用程序被编程为发出致动部件的第二命令。
根据一个实施例,隔离的软件环境由操作系统定义。
根据一个实施例,隔离的软件环境由操作系统之上的平台定义。
根据一个实施例,隔离的软件环境是虚拟机。
根据一个实施例,隔离的软件环境是容器。
根据本发明,一种方法包括:在车辆的控制器上的隔离的软件环境中执行应用程序;在从应用程序接收到致动车辆的部件的命令时,阻止命令被传输到部件;以及在接收到命令时,将命令传输到存储器中的位置。
Claims (15)
1.一种方法,其包括:
在车辆的控制器上的隔离的软件环境中执行应用程序;
在从所述应用程序接收到致动所述车辆的部件的命令时,阻止所述命令被传输到所述部件;以及
在接收到所述命令时,将所述命令传输到所述存储器中的位置。
2.如权利要求1所述的方法,其还包括防止由所述应用程序发送的消息在除所述存储器中的所述位置之外的目的地处被接收。
3.如权利要求1所述的方法,其还包括防止所述应用程序消耗大于所述控制器的阈值量的处理能力。
4.如权利要求1所述的方法,其还包括在从所述应用程序的所述隔离的软件环境外部接收到消息时,允许所述应用程序接收所述消息。
5.如权利要求1所述的方法,其还包括操作面向服务的架构,其中所述应用程序被编程为通过所述面向服务的架构发布所述命令。
6.如权利要求5所述的方法,其还包括在接收到所述命令时,阻止所述命令通过所述面向服务的架构进行发布。
7.如权利要求5所述的方法,其还包括在通过所述面向服务的架构接收到所述应用程序订阅的消息时,允许所述应用程序基于策略接收所述消息。
8.如权利要求1所述的方法,其还包括经由所述车辆的收发器从远离所述车辆的服务器接收所述应用程序。
9.如权利要求8所述的方法,其还包括基于所述应用程序的状态在所述隔离的软件环境中执行所述应用程序,所述状态经由所述收发器从所述服务器接收。
10.如权利要求1所述的方法,其还包括将数据传输到所述位置,所述数据指示在所述应用程序输出所述命令的同时所述车辆的操作。
11.如权利要求1所述的方法,其中所述隔离的软件环境由操作系统定义。
12.如权利要求1所述的方法,其中所述隔离的软件环境由操作系统之上的平台定义。
13.如权利要求1所述的方法,其中所述隔离的软件环境是虚拟机。
14.如权利要求1所述的方法,其中所述隔离的软件环境是容器。
15.一种计算机,其包括处理器和存储器,所述存储器存储指令,所述指令能够由所述处理器执行以执行根据权利要求1至14中的一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/046,238 | 2022-10-13 | ||
US18/046,238 US20240126594A1 (en) | 2022-10-13 | 2022-10-13 | Application control in a vehicle |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117891712A true CN117891712A (zh) | 2024-04-16 |
Family
ID=90469680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311292372.1A Pending CN117891712A (zh) | 2022-10-13 | 2023-10-08 | 车辆中的应用程序控制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240126594A1 (zh) |
CN (1) | CN117891712A (zh) |
DE (1) | DE102023127489A1 (zh) |
-
2022
- 2022-10-13 US US18/046,238 patent/US20240126594A1/en active Pending
-
2023
- 2023-10-08 CN CN202311292372.1A patent/CN117891712A/zh active Pending
- 2023-10-09 DE DE102023127489.9A patent/DE102023127489A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102023127489A1 (de) | 2024-04-18 |
US20240126594A1 (en) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10424127B2 (en) | Controller architecture for monitoring health of an autonomous vehicle | |
US10796572B2 (en) | Automated map anomaly detection and update | |
JP6056424B2 (ja) | 車載プログラム更新装置 | |
US10845800B2 (en) | Vehicle software check | |
CN110171429A (zh) | 车辆中无线升级的自动传输和安装 | |
CN115334110A (zh) | 用于车辆控制的系统架构、通信方法、车辆、介质及芯片 | |
CN108394458B (zh) | 方向盘反馈机构 | |
US20200283004A1 (en) | Method and system for overriding vehicle systems based on special conditions | |
US11760355B2 (en) | Assistance by towed vehicle | |
CN112631645A (zh) | 车辆软件检查 | |
US20200377127A1 (en) | Vehicle control system and vehicle control interface | |
KR102313799B1 (ko) | 차량용 클러스터 장치 및 제어 방법 | |
US20240126594A1 (en) | Application control in a vehicle | |
US10439427B2 (en) | Determining a fuel quantity to charge a vehicle battery | |
CN116142185A (zh) | 自适应巡航控制激活 | |
WO2022205443A1 (zh) | 软件升级方法及装置 | |
US20180059686A1 (en) | Collision-warning system | |
CN113815637A (zh) | 基于驾驶辅助功能调度通知的方法,设备及存储介质 | |
CN113386758A (zh) | 车辆及其控制装置 | |
US12026996B2 (en) | Vehicle data storage activation | |
US20240053747A1 (en) | Detection of autonomous operation of a vehicle | |
US20230334914A1 (en) | Vehicle data storage activation | |
WO2024116627A1 (ja) | 制御装置、リソース管理方法、リソース管理プログラム | |
US20230150496A1 (en) | Adaptive cruise control | |
US20230373479A1 (en) | Adaptive cruise control with load |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |