掌桥专利:专业的专利平台
掌桥专利
首页

用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统

文献发布时间:2023-06-19 11:26:00


用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统

技术领域

本发明涉及一种用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统。

背景技术

车辆、如轿车包括用于控制车辆功能的控制器。传统上,在此对于每个控制单元使用一个自己的控制器。因此,为车辆的横向动力系统或为各个驾驶员辅助系统分别使用单独的控制器。

在此不利的是,在车辆的有限结构空间中必须容纳多个控制器。这是不利的,因为车辆设计的灵活性因此较差。另一个主要缺点是控制器是相应精确地为要执行的功能而设计的,即在所提供的存储器和计算能力方面进行设计。这是不利的,因为因此只能在现有硬件限制的框架内通过软件更新来加装功能。

因此,在现代车辆中,越来越多地使用通用控制器,其承担对多种车辆功能的控制。为此,通用控制器具有多个计算核心,这些计算核心中的一个或多个计算核心可以分别被指派不同的功能。存储区域也可以被指派给不同的功能单元。

因为在一个(通用)控制器上捆绑了多种功能,所以更加频繁地需要更新控制器,即更新软件。通用控制器具有不同的分区,操作系统(例如基于Autosar OS的系统)存储在其中一个分区上,该操作系统控制其他应用程序的执行。用于控制器的控制功能的相应应用程序则存储在其他各个分区上。

例如,Autosar OS操作系统可以存储在第一分区上。用于控制横向动力系统的软件可以存储在第二分区上,而用于控制驾驶员辅助功能的软件可以存储在第三分区上。

在更新功能之前,必须检查要更新的功能是否对安全性是至关重要的。如果是这样的情况,则必须在更新后使用测试车辆进行驾驶测试。这耗费大量时间,而且不经济。

该缺点由于在通用控制器中所使用的编程语言通常要求在即使仅更改一个组件的情况下也重新编译所有组件而变严重。这意味着未更改的程序段被频繁地重新编译。这导致一系列不必要的驾驶测试和等待时间。

发明内容

因此,从该现有技术出发,本发明的目的是减少在更新控制器之后所需的驾驶测试的次数。特别地,本发明的另一个目的是加快控制器的更新。本发明的另一个特别的目的是降低在编译期间所需的计算能力。

所述目的通过根据权利要求1所述的方法、根据权利要求10所述的计算机可读存储介质、根据权利要求11所述的控制器以及通过根据权利要求12所述的系统来解决。

所述目的特别是通过一种用于在一个控制器上、特别是在车辆、优选轿车的一个控制器上执行程序组件的方法来解决,该方法包括以下步骤:

-接收至少一个第一程序单元和至少一个第二程序单元;

-生成第一和第二代理定义,代理定义规定对程序单元的至少一个功能和/或存储区域的访问,第一代理定义被分配给第一程序单元并且第二代理定义被分配给二程序单元;

-编译第一程序单元和第二程序单元以生成第一程序组件、第二程序组件,并编译第一和第二代理定义以生成第一和第二代理组件;

-在一个控制器上执行第一程序组件和第二程序组件,第一程序组件使用第一和第二代理组件来调用和/或使用第二程序组件的至少一个功能。

本发明的核心在于,为程序单元生成代理定义,这些代理定义又被编译成代理组件。第一程序组件和第二程序组件可以分别使用这些代理组件来调用其他程序组件的功能。亦即,第一和第二程序组件之间的接口由第一和第二代理组件形成。因此,在仅更改一个程序组件但不更改接口时,可以放弃对未更改的组件的编译。

在一个实施方式中,第一和第二程序组件可以被构造成二进制文件,所述二进制文件能够分别由控制器的一个计算核心执行。

因此,第一和第二程序组件可以构成各个二进制文件,各二进制文件例如可以作为图像存储在一个控制器的各分区上,并且因此能由所述一个控制器的计算核心执行。在本申请的范围内,控制器的计算核心也可以包括控制器的处理器的处理器核心。

在一个实施方式中,所述执行可以包括:在控制器的第一计算核心上执行第一程序组件和/或第一代理组件,以及在控制器的第二计算核心上执行第二程序组件和/或第二代理组件。

亦即能够实现不同的计算核心执行不同的程序组件。在此可以动态或静态地规定程序组件至计算内核的分配。

在一个实施方式中,第一和/或第二程序单元可以包括编程语言的源代码,特别是嵌入式C语言。

嵌入式C语言已在控制器的硬件相关的编程中被证明是可靠的。由此提供了一种易于转换的实施方式。

在一个实施方式中,所述第一和/或第二代理定义可以给出第一或第二程序组件的功能的地址。

对于实现本发明来说特别有利的是,代理定义包含关于能通过哪些存储器地址来调用程序组件的功能的说明。同样有利的是,代理定义包含有关共享存储区域的说明。利用所述实施例提供了一种简单方式来规定第一和第二程序组件之间的接口。

在一个实施方式中,所述方法可以包括如下步骤:

-接收第三程序单元,该第三程序单元在其接口方面与所述第二程序单元相同;

-仅编译第三程序单元以生成第三程序组件;

-在控制器上执行第一程序组件和第三程序组件,第三程序组件使用第一和第二代理组件来调用和/或使用第一程序组件的至少一个功能。

第三程序单元例如可以是第二程序单元的更新版本,在该更新版本中没有改变接口。现在无需重新编译第一程序单元。第三程序组件可以使用第一和第二代理组件来访问第一程序组件的功能和存储区域,从而也不必再重新生成这些功能和存储区域。

在一个实施方式中,可以使用规则集合来执行第三程序单元的编译,该规则集合可以包括至少一个规则,该至少一个规则可以给出是否需要为了编译第三程序单元而编译第一程序单元。

一个规则可以给出如下条件,即,各个程序组件在发生更改的情况下何时重新编译。因此,在一个实施方式中,一个规则可以给出:当程序组件改变了其功能的功能定义时,必须重新编译该程序组件。在一个实施方式中,另一个可能的规则可以给出:当共享存储区域(Shared Memory)的大小发生了改变时,必须重新编译程序组件。

在一个实施方式中,第一程序组件可以包括用于控制器的操作系统,和/或第一组件可以被配置用于控制车辆的横向动力,和/或第三程序组件可以被配置用于控制车辆的至少一个驾驶员辅助系统。

在一个优选实施方式中,可以通过代理组件执行在横向动力系统的控制和至少一个驾驶员辅助系统的控制之间的通信。

在频繁更新组件的情况下,上述优点特别重要,因为否则频繁的更新将导致所有组件的编译,这将花费大量时间并且需要在车辆中进行进一步的驾驶测试。

所述目的尤其是还通过计算机可读存储介质来解决,所述计算机可读存储介质包含指令,当所述指令由至少一个处理器执行时,所述指令使所述至少一个处理器实施上述方法。

存在与结合所述方法已经描述的优点相似或相同的优点。

所述目的尤其是还通过一种控制器来解决,所述控制器被配置成使用根据所述方法生成的第一程序组件、第二程序组件和代理组件来控制所连接的车辆的功能。

存在与结合所述方法已经描述的优点相似或相同的优点。

所述目的尤其是还通过一种系统来解决,该系统包括:

-具有控制器的车辆;

-计算机单元,该计算机单元被配置成:

о接收至少一个第一程序单元和至少一个第二程序单元;

о生成第一和第二代理定义,代理定义规定对程序单元的至少一个功能和/或存储区域的访问,第一代理定义被分配给第一程序单元并且第二代理定义被分配给二程序单元;

о编译第一程序单元和第二程序单元以生成第一程序组件、第二程序组件以及第一和第二代理组件;

所述控制器被配置用于执行第一和第二程序组件,第一程序组件使用第一和所述第二代理组件来调用和/或使用第二程序组件的至少一个功能。

所述系统可以包括上述存储单元。

存在与结合所述方法已经描述的优点相似或相同的优点。

所述系统可以实施前述方法步骤中的几个步骤或所有步骤。

附图说明

下面借助实施例进一步解释本发明。图中:

图1示出车辆的示意图;

图2示出一个控制器的三个计算核心的示意图;

图3示出三个程序组件以及它们之间通信的示意图;

图4示出采用规则集合生成三个程序组件的示意图;以及

图5示出程序组件更新的示意图.

具体实施方式

在下文中,相同的附图标记用于相同或相同作用的部件。

图1示出了具有控制器2以及驾驶员辅助系统3和横向动力系统4的车辆1。在当前实施例中,驾驶员辅助系统3是自动制动系统,该自动制动系统在前方行驶的车辆突然制动时使车辆1停止。因此,驾驶员辅助系统3是对于安全关键的系统。

横向动力系统4控制基本上与车辆1的横向力有关的功能,例如转向。

驾驶员辅助系统3和横向动力系统4与控制器2通信连接。例如,控制器2、驾驶员辅助系统3和横向动力系统4可以通过车辆总线、例如CAN总线彼此连接。

在所示的实施例中,控制器2是具有多个处理器和存储装置的通用控制器2。在存储装置中设有三个分区,其中一个操作系统分区存储基于Autosar OS的操作系统。驾驶员辅助分区存储用于实施期望的驾驶员辅助功能的程序组件。在该实施例中也就是自动制动系统。横向动力学分区存储用于实施横向动力学的程序组件。

当应该安装在控制器2上执行的程序组件的新版本时,将控制器与开发计算机5有线或无线连接。开发计算机5也可以是所谓的测试仪或其他装置,利用该装置可以将程序组件加载到控制器2上。在一个实施例中,开发计算机5被构造为与控制器2无线连接的移动终端。

控制器也可以具有移动无线电模块或无线局域网(WLAN)模块,所述移动无线电模块或无线局域网模块被构造成能与开发计算机5通信连接。

图2详细示出了控制器2的逻辑结构。控制器2包括用于执行程序组件的三个虚拟执行环境10、20、30。控制器2的处理器的计算核心分别被指派给所述执行环境10、20、30中的每个执行环境。因此,第一虚拟执行环境10具有第一计算核心11和第二计算核心12。第二虚拟执行环境20具有第三计算核心21和第四计算核心22。第三虚拟执行环境30具有第五计算核心31和第六计算核心32。

通过相应的计算核心11、12、21、22、31、32执行的程序组件可以经由硬件层7相互通信。这意味着硬件层7提供如下装置,这些装置允许由第一计算核心11执行的程序组件调用由第三计算核心21执行的程序组件的功能。

图3示出了由不同计算核心执行的各程序组件之间的通信。为此,图3示出了第一、第二和第三虚拟执行环境10、20、30。在图3的实施例中,控制器2的操作系统可以在第一虚拟执行环境10中执行。在该实施例中,第二虚拟执行环境20可以通过程序组件23、24执行驾驶员辅助系统。在该实施例中,第三虚拟执行环境30可以通过程序组件33、34控制车辆1的横向动力系统。

如上所述,驾驶员辅助系统例如可以是自动化的自动制动系统。在通过自动制动系统制动时,可能还需要由自动制动系统来控制横向动力系统。这意味着自动制动系统必须访问横向动力系统的功能。例如,自动制动系统可以调用由程序组件34提供的功能。

对于这样的功能调用,第一虚拟执行环境10的计算组件23发送信号S,该信号经由代理接口25转发到第一虚拟执行环境10的至内部通信单元14的另一代理接口13。信号S从内部通信单元14出来被传输至代理接口15,该代理接口又与第三虚拟执行环境30的代理接口35通信连接。然后,代理接口35使用信号S在程序组件34中启动功能调用。

图4和图5示出了刚刚描述的组件的首次编译以及单个程序组件的更新。

图4示出了两个程序单元8、9,这两个程序单元在所示的实施例中为嵌入式C语言源代码文件。为了创建可执行的程序组件,必须编译源代码并链接不同的程序组件。为此使用链接器-编译器单元40。链接器-编译器单元40包括代理生成单元41和链接器42。代理生成单元41被配置用于识别各程序单元8、9之间的功能调用和访问。代理生成单元41从这些信息生成代理组件13、25。另外,生成能由控制器2执行的程序组件23、24。

图5示出了更新程序单元9的情况。为此,链接器-编译器单元40接收更新的程序单元9',在该更新的程序单元中各个功能的实施已被优化。接口和对其他功能的访问保持不变。链接器-编译器单元40、此处特别是链接器42对程序单元9'进行分析并将其与现有程序单元9进行比较。

规则存储单元50存储规则R1-R4,这些规则给出在什么条件下仅编译程序单元9'就足够了或者是否必须重新编译所有程序单元8、9'。

因此,规则R1例如给出:当程序单元9'更改共享存储区域(所谓的共享内存)的大小时,必须编译所有程序单元8、9'。

在使用规则R1-R4和/或已经存在的程序组件23、24和/或已经存在的代理组件25、13的情况下,链接器-编译器单元40分析是否仅需要编译程序单元9'。在所示的实施例中,链接器-编译器单元40确定仅需要编译程序单元9',从而生成新的程序组件24',该新的程序组件代替先前的程序组件24。在此,程序组件24′被配置成使用代理组件25来访问程序组件23的功能和存储区域。

总而言之,仅需重新编译一个唯一程序单元。这降低了要提供的计算功率,从而能够更快地更新程序。此外,如果重新编译的组件不是对于安全关键的组件,则无需使用测试车辆进行新的驾驶测试。由此能够节省可观的成本。

1 车辆

2 控制器

3 驾驶员辅助系统

4 横向动力系统

5 开发计算机

6 汇编/二进制文件

7 硬件层

8、9、9' 程序单元

10 第一虚拟执行环境

11 第一计算核心

12 第二计算核心

13、15、25、35 代理接口

14 内部通信单元

20 第二虚拟执行环境

21 第三计算核心

22 第四计算核心

23、24、24'、33、34 程序组件

30 第三虚拟执行环境

31 第五计算核心

32 第六计算核心

40 链接器-编译器单元

41 代理生成单元

42 链接器

50 规则存储单元

R1-R4 规则

S 信号

相关技术
  • 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统
  • 电机控制器的直流电流限流方法、电机控制器及计算机可读存储介质
技术分类

06120112919241