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

车载控制器启动优化方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:53:33


车载控制器启动优化方法、装置、电子设备及存储介质

技术领域

本申请涉及车载控制器技术领域,具体涉及一种车载控制器启动优化方法、装置、电子设备及存储介质。

背景技术

随着汽车技术的发展,ECU(Electronic Control Unit,车载控制器)需要满足更复杂的ADAS(Advanced Driving Assistance System,高级驾驶辅助系统)功能、更频繁的ETH(Ethernet,以太网)通信请求、更全面的环境感知等一系列复杂需求,因此,异构多核芯片逐渐成为车载计算平台的主流,也就需要ECU上具有更大量的存储介质和计算空间。

目前,大多数整车计算处理器使用EMMC(Embedded Multi Media Card,内嵌式存储器)作为启动和存储介质,EMMC内部的Flash Memory(闪存)均属于NAND Flash。NANDFlash与NOR Flash都属于非易失性存储器,相比于NOR Flash,NAND Flash写入性能好、大容量下成本低。但NAND Flash不支持片上执行,只能将EMMC中存储的镜像按section(代码块或代码段,简称块)搬运到异构多核芯片的RAM(Random Access Memory,随机存取存储器)或者外部DDR(Double Data Rate SDRAM,双倍速率同步动态随机存储器)中,再运行镜像。由于每个镜像的section没有按照NAND Flash的sector(扇区)存储在EMMC中,因此,在搬运过程中,需要将读取的sector的Memory(内存)搬运到其他位置进行裁剪,再二次搬运到RAM或DDR中的运行地址进行运行,进而导致启动时间长、启动速度慢。

发明内容

鉴于以上所述现有技术的缺点,本申请提供一种车载控制器启动优化方法、装置、电子设备及存储介质,以解决上述搬运代码块需要对扇区中读取的内存进行裁剪和二次搬运,导致车载控制器启动时间长、速度慢的技术问题。

本申请提供了一种车载控制器启动优化方法,所述方法包括:获取车载控制器的启动源程序;对所述启动源程序进行分块编译,得到多个代码块,并对每一代码块进行对齐处理,得到多个对齐后的代码块,以使每一对齐后的代码块的代码块大小为扇区大小的整数倍;自所述车载控制器的存储空间中一扇区的扇区首地址开始,将所述多个对齐后的代码块按序存入所述存储空间,以启动所述车载控制器,所述存储空间为非易失存储空间。

于本申请的一实施例中,若所述车载控制器包括主核和至少一个从核,则所述启动源程序包括所述主核的主核引导源程序、所述主核的主核启动源程序和每个从核的从核启动源程序。

于本申请的一实施例中,对所述启动源程序进行分块编译,得到多个代码块,包括:对所述主核引导源程序进行分块编译,得到所述主核引导源程序对应的多个代码块以及每一代码块的运行地址;对所述主核启动源程序进行分块编译,得到所述主核启动源程序对应的多个代码块以及每一代码块的运行地址;对每个从核的从核启动源程序进行编译,得到每个从核启动源程序对应的多个代码块以及每一代码块的运行地址。

于本申请的一实施例中,自所述车载控制器的存储空间中一扇区的扇区首地址开始,将所述多个对齐后的代码块按序存入所述存储空间,包括:将所述主核引导源程序对应的多个对齐后的代码块确定为多个主核引导对齐代码块,利用多个主核引导对齐代码块的运行地址对多个主核引导对齐代码块进行排序,并自所述存储空间的第一引导分区的分区首地址开始,按序将多个主核引导对齐代码块存入所述第一引导分区,所述主核引导源程序对应的多个对齐后的代码块基于对所述主核引导源程序对应的多个代码块进行对齐处理得到;将所述主核启动源程序对应的多个对齐后的代码块确定为多个主核启动对齐代码块,利用多个主核启动对齐代码块的运行地址对多个主核启动对齐代码块进行排序,并自所述第一引导分区的主核启动目标扇区首地址开始,按序将多个主核启动对齐代码块存入所述第一引导分区,所述主核启动源程序对应的多个对齐后的代码块基于对所述主核启动源程序对应的多个代码块进行对齐处理得到;将每个从核的从核启动源程序对应的多个对齐后的代码块确定为每个从核的多个从核启动对齐代码块,利用每个从核的多个从核启动对齐代码块的运行地址对每个从核的多个从核启动对齐代码块进行排序,并自所述第一引导分区中每个从核对应的从核启动目标扇区首地址开始,按序将每个从核的多个从核启动对齐代码块存入所述第一引导分区,每个从核的从核启动源程序对应的多个对齐后的代码块基于对每个从核的从核启动源程序对应的多个代码块进行对齐处理得到。

于本申请的一实施例中,将所述多个对齐后的代码块按序存入所述存储空间之前,所述方法包括:对所述存储空间中的第一引导分区进行设置,以从所述第一引导分区启动所述车载控制器;确定所述第一引导分区的总容量,若所述第一引导分区的总容量小于预设容量阈值,则对所述第一引导分区进行扩容,以使所述第一引导分区的总容量等于所述预设容量阈值;自所述第一引导分区的分区首地址开始,从所述第一引导分区中划分出主核引导镜像存储区域,以存储多个主核引导对齐代码块;在所述主核引导镜像存储区域之后,自所述第一引导分区的一扇区的扇区首地址开始,从所述第一引导分区中划分出主核启动镜像存储区域,以存储多个主核启动对齐代码块,所述主核启动镜像存储区域中首个扇区的扇区首地址为所述主核启动目标扇区首地址;在所述主核引导镜像存储区域之后,自所述第一引导分区的一扇区的扇区首地址开始,从所述第一引导分区中划分出从核启动镜像存储区域,得到每个从核对应的从核启动镜像存储区域,以将每个从核的多个从核启动对齐代码块存储在每个从核对应的从核启动镜像存储区域,每个从核对应的从核启动镜像存储区域中首个扇区的扇区首地址为每个从核对应的从核启动目标扇区首地址。

于本申请的一实施例中,将所述多个对齐后的代码块按序存入所述存储空间之后,所述方法包括:所述车载控制器上电之后,所述主核从所述第一引导分区的分区首地址开始,按序将每一主核引导对齐代码块搬运至每一主核引导对齐代码块的运行地址,得到主核引导镜像并运行,以根据主核引导镜像的代码指令使能第一从核并启动所述主核,所述至少一个从核包括所述第一从核;所述第一从核被使能后,从所述第一从核对应的从核启动目标扇区首地址开始,按序将所述第一从核对应的每一从核启动对齐代码块搬运至所述第一从核对应的每一从核启动对齐代码块的运行地址,得到所述第一从核对应的从核启动镜像并运行,完成所述第一从核的启动;所述主核从所述主核启动目标扇区首地址开始,按序将每一主核启动对齐代码块搬运至每一主核启动对齐代码块的运行地址,得到主核启动镜像并运行,完成所述主核的启动并使能第二从核,所述至少一个从核包括所述第二从核;所述第二从核被使能后,从所述第二从核对应的从核启动目标扇区首地址开始,按序将所述第二从核对应的每一从核启动对齐代码块搬运至所述第二从核对应的每一从核启动对齐代码块的运行地址,得到所述第二从核对应的从核启动镜像并运行,完成所述第二从核的启动。

于本申请的一实施例中,对一代码块进行对齐处理,包括:确定所述代码块的代码块大小;将所述代码块的代码块大小对所述扇区大小进行取余运算,得到待填充数据大小;若所述待填充数据大小大于或等于预设阈值,则按照所述待填充数据大小和预设字符对所述代码块进行数据填充,得到所述对齐后的代码块。

于本申请的一实施例中,对所述启动源程序进行分块编译,得到多个代码块,还包括:根据每个代码块的启动时间和/或运行频率对每个代码块配置不同的优先级,所述优先级包括第一优先级和第二优先级,所述第一优先级高于所述第二优先级;若一代码块的优先级为所述第一优先级,则配置所述代码块在随机存取存储器中的运行地址,所述车载控制器的运行内存包括所述随机存取存储器;若一代码块的优先级为所述第二优先级,则配置所述代码块在双倍速率同步动态随机存储器中的运行地址,所述车载控制器的运行内存还包括所述双倍速率同步动态随机存储器。

于本申请的一实施例中,自所述车载控制器的存储空间中一扇区的扇区首地址开始,将所述多个对齐后的代码块按序存入所述存储空间,还包括:自所述第一引导分区的主核引导冗余目标扇区首地址开始,按序将多个主核引导对齐代码块再次存入所述第一引导分区;自所述第一引导分区的主核启动冗余目标扇区首地址开始,按序将多个主核启动对齐代码块再次存入所述第一引导分区;自所述第一引导分区中每个从核对应的从核启动冗余目标扇区首地址开始,按序将每个从核的多个从核启动对齐代码块再次存入所述第一引导分区。

于本申请的一实施例中,还提供一种车载控制器启动优化装置,所述装置包括:获取模块,用于获取车载控制器的启动源程序;编译模块,用于对所述启动源程序进行分块编译,得到多个代码块;对齐模块,用于对每一代码块进行对齐处理,得到多个对齐后的代码块,以使每一对齐后的代码块的代码块大小为扇区大小的整数倍;存储模块,用于自所述车载控制器的存储空间中一扇区的扇区首地址开始,将所述多个对齐后的代码块按序存入所述存储空间,以启动所述车载控制器,所述存储空间为非易失存储空间。

于本申请的一实施例中,还提供一种电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的车载控制器启动优化方法。

于本申请的一实施例中,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行如上所述的车载控制器启动优化方法。

本发明的有益效果:本发明提供一种车载控制器启动优化方法、装置、电子设备及存储介质,该方法通过对代码块进行对齐处理,以使得到的对齐后的代码块的代码块大小为扇区大小的整数倍,自车载控制器的存储空间中一扇区的起始地址开始,将对齐后的代码块按序存入存储空间内,能够实现各代码块的存储起始地址与存储空间中扇区的起始地址对齐,以在启动车载控制器时便于搬运,无需裁剪和二次搬运,提高搬运效率,进而缩短启动时间和提高启动速度。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

图1是本申请的一示例性实施例示出的一种车载控制器启动优化方法的实施环境示意图;

图2是本申请的一示例性实施例示出的一种车载控制器启动优化方法的流程图;

图3是本申请的一示例性实施例示出的EMMC分区示意图;

图4是本申请的一示例性实施例示出的一种传统的代码块存储示意图;

图5是本申请的一示例性实施例示出的另一种改进的代码块存储示意图;

图6是本申请的一示例性实施例示出的一种车载控制器启动优化装置的框图;

图7是本申请的一示例性实施例示出的电子设备的一种结构示意图。

具体实施方式

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,遂图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

需要说明的是,本申请中,“第一”、“第二”等仅为对相似对象的区分,并非是对相似对象的顺序限定或先后次序限定。所描述的“包括”、“具有”等变形,表示该词语的主语所涵盖的范围除该词语所示出的示例外,并不排他。

可以理解的是,在本申请中记载的各种数字编号、步序编号等标号为描述方便进行的区分,并不用来限制本申请的范围。本申请标号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

在下文描述中,探讨了大量细节,以提供对本申请实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本申请的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本申请的实施例难以理解。

本申请的实施例分别提出一种车载控制器启动优化方法、一种车载控制器启动优化装置、一种电子设备、一种计算机可读存储介质以及一种计算机程序产品,以下将对这些实施例进行详细描述。

请参阅图1,图1是本申请的一示例性实施例示出的一种车载控制器启动优化方法的实施环境示意图。

如图1所示,实施环境可以包括车载控制器101和计算机设备102,其中,车载控制器101可以是车载异构多核控制器、车载同构多核控制器、车载单核控制器等中的至少一种,计算机设备102可以是微型计算机、嵌入式计算机、神经网络计算机等中的至少一种,计算机设备102可以配置在车载控制器101中,计算机设备102也可以是独立的计算机设备,此处均不进行限制。可以使用该计算机设备102实现自动对车载控制器101的启动镜像进行优化配置。可以手动将启动源程序输入至计算机设备102,或者通过其他计算机设备、服务端或云端等将启动源程序发送至计算机设备102,以使计算机设备102进行处理。

示例性的,计算机设备102获取车载控制器的启动源程序;对启动源程序进行分块编译,得到多个代码块,并对每一代码块进行对齐处理,得到多个对齐后的代码块,以使每一对齐后的代码块的代码块大小为扇区大小的整数倍;自车载控制器的存储空间中一扇区的扇区首地址开始,将多个对齐后的代码块按序存入存储空间,以启动车载控制器,其中,存储空间为非易失存储空间。可见,本申请实施例的技术方案通过对代码块进行对齐处理能够实现各代码块的存储起始地址与存储空间中扇区的起始地址对齐,以在启动车载控制器时便于搬运,无需裁剪和二次搬运,提高搬运效率,进而缩短启动时间和提高启动速度。

需要说明的是,本申请实施例所提供的车载控制器启动优化方法一般由计算机设备102具体执行,相应的车载控制器启动优化装置一般设置于计算机设备102中。

请参阅图2,图2是本申请的一示例性实施例示出的一种车载控制器启动优化方法的流程图。该方法可以应用于图1所示的实施环境,并由该实施环境中的计算机设备102具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其他实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。

如图2所示,在一示例性的实施例中,车载控制器启动优化方法至少包括步骤S210至步骤S230,详细介绍如下:

步骤S210,获取车载控制器的启动源程序。

在本申请的一个实施例中,车载控制器可以是车载异构多核控制器,或者是车载同构多核控制器,或者是车载单核控制器,此处进行限制。对于车载异构多核控制器而言,其包括主核(Master Core)和至少一个从核(Slave Core),启动源程序可以包括主核的主核引导源程序、主核的主核启动源程序和从核的从核启动源程序等中至少之一。计算机设备可以通过服务端或云端获取车载控制器对应的启动源程序,也可以人为地将车载控制器的启动源程序输入至计算机设备中,此处也不进行限制。

步骤S220,对启动源程序进行分块编译,得到多个代码块,并对每一代码块进行对齐处理,得到多个对齐后的代码块,以使每一对齐后的代码块的代码块大小为扇区大小的整数倍。

在本申请的一个实施例中,一般通过运行存储在EMMC中的启动源程序对应的镜像文件(Image,简称镜像)来启动车载控制器,因此,在启动之前,需要对启动源程序进行编译得到启动源程序对应的镜像文件,即启动镜像。一般来说,车载异构多核控制器的RAM只有1MB级别的大小,相对于64GB级别的EMMC,RAM空间太小,只能将镜像从EMMC中按块搬运到RAM和DDR中运行。基于此,可以通过编译器对启动源程序进行分块编译,即将启动源程序划分为多个模块,分别对每个模块进行编译,得到多个代码块,由该多个代码块组成启动镜像。

在本申请的一个实施例中,若车载控制器包括主核和至少一个从核,则启动源程序包括主核的主核引导源程序、主核的主核启动源程序和每个从核的从核启动源程序。

在该实施例中,对于车载异构多核控制器而言,其包括主核和从核,从核的数量可以是一个,也可以是多个。因此,车载异构多核控制器的启动源程序可以包括主核的主核引导源程序、主核的主核启动源程序和每个从核的从核启动源程序,相应的,对启动源程序进行分块编译得到的多个代码块可以包括主核引导源程序对应的多个代码块、主核启动源程序对应的多个代码块、每个从核的从核启动源程序对应的多个代码块,相应的,启动镜像包括主核引导镜像、主核启动镜像、每个从核的从核启动镜像。换言之,若启动源程序包括主核引导源程序,则对主核引导源程序进行分块编译,得到主核引导源程序对应的多个代码块,构成主核引导镜像;若启动源程序包括主核启动源程序,则对主核启动源程序进行分块编译,得到主核启动源程序对应的多个代码块,构成主核启动镜像;若启动源程序包括每个从核的从核启动源程序,则对一从核的从核启动源程序进行分块编译,得到该从核的从核启动源程序对应的多个代码块,构成该从核的从核启动镜像,由此分别得到每个从核的从核启动源程序对应的多个代码块,分别构成每个从核的从核启动镜像。

由于分块编译得到每个代码块的代码块大小随机,其不一定是扇区大小的整数倍,直接将代码块存储在EMMC中可能会存在代码块的存储起始地址与其存入的扇区的起始地址不对齐的情况,在启动时需要先将扇区读取的内容搬运到其他位置进行裁剪,再拷贝到运行内存中的运行地址,造成搬运效率不高,进而导致启动时间长、启动速度慢。因此,编译完成后,需要对构成启动镜像的每个代码块进行对齐处理,以使得到的每个对齐后的代码块的代码块大小为扇区大小的整数倍。由对齐处理得到的多个对齐后的代码块构成处理后的启动镜像,若车载控制器包括主核和至少一个从核,相应的,处理后的启动镜像包括处理后的主核引导镜像、处理后的主核启动镜像、处理后的从核启动镜像。

在本申请的一个实施例中,对启动源程序进行分块编译,得到多个代码块,包括:对主核引导源程序进行分块编译,得到主核引导源程序对应的多个代码块以及每一代码块的运行地址;对主核启动源程序进行分块编译,得到主核启动源程序对应的多个代码块以及每一代码块的运行地址;对每个从核的从核启动源程序进行编译,得到每个从核启动源程序对应的多个代码块以及每一代码块的运行地址。

在该实施例中,对于车载异构多核控制器也即车用异构多核芯片而言,其包括多个异构核心,一个主核和至少一个从核,若从核的数量有多个,可以预先确定将优先启动的从核为第一从核,如果还有其他从核,将其他从核为第二从核,第一从核可以是一个或者多个,第二从核也可以是一个或者多个。在启动车载异构多个控制器时,先启动主核引导程序,以使能第一从核并启动主核的操作系统即主核启动镜像,若车载异构多核控制器还包括第二从核,再由主核使能第二从核。因此,可以分别对主核的主核引导源程序、主核的主核启动源程序和每个从核的从核启动源程序进行分块编译,得到各自对应的多个代码块。在编译时,可以将编译生成的各代码块的运行地址进行保存,以通过运行地址对后续对齐后的代码块进行排序,以及便于在进行车载控制器启动时按序将代码块搬运到其对应的运行地址进行运行。运行地址也叫链接地址,即在编译连接时确定的地址,是指将代码块搬运到运行内存进行运行时,该代码块头部在运行内存中所对应的地址。

在本申请的一个实施例中,对启动源程序进行分块编译,得到多个代码块,还包括:根据每个代码块的启动时间和/或运行频率对每个代码块配置不同的优先级,优先级包括第一优先级和第二优先级,第一优先级高于第二优先级;若一代码块的优先级为第一优先级,则配置代码块在随机存取存储器中的运行地址,车载控制器的运行内存包括随机存取存储器;若一代码块的优先级为第二优先级,则配置代码块在双倍速率同步动态随机存储器中的运行地址,车载控制器的运行内存还包括双倍速率同步动态随机存储器。

在该实施例中,通常运行内存包括RAM和DDR,其中,RAM是与CPU(CentralProcessing Unit,中央处理器)直接交换数据的内部存储器,它可以随时读写(刷新时除外),而且速度很快。因此,在编译阶段,将对启动时间和运行时间影响显著的代码块优先分配到RAM,将运行频率不高的代码块分配到DDR,也可以进一步优化车载控制器的启动和运行时间。具体的,可以根据每个代码块的启动时间、运行时间和运行频率等对代码块配置不同的优先级,可以将对启动时间和运行时间影响显著的代码块配置第一优先级,将运行频率不高的代码块配置第二优先级,第一优先级高于第二优先级;对第一优先级的代码块配置其在RAM中的运行地址,以便在启动时将该代码块搬运到RAM中运行;对第二优先级的代码块配置其在DDR中的运行地址,以便在启动时将该代码块搬运到DDR中运行。

在本申请的一个实施例中,对一代码块进行对齐处理,包括:确定代码块的代码块大小;将代码块的代码块大小对扇区大小进行取余运算,得到待填充数据大小;若待填充数据大小大于或等于预设阈值,则按照待填充数据大小和预设字符对代码块进行数据填充,得到对齐后的代码块。

在该实施例中,可以通过数据填充的方式对代码块进行对齐处理,以使对齐后的代码块的代码块大小是EMMC的NAND Flash的扇区大小的整数倍,以一个代码块为例,对齐处理的流程如下:

计算该代码块的代码块大小,将该代码块大小作为被除数,并将扇区大小作为除数,根据该被除数和该除数计算余数,以将该余数作为待填充数据大小。对该待填充数据大小与预设阈值进行比较,若该待填充数据大小大于或等于预设阈值,则按照该待填充数据大小和预设字符对该代码块进行数据填充,即填充数据的数据大小等于该余数。由该代码块和填充数据构成对齐后的代码块。

示意性的,预设阈值可以为1,或者0.9,或者其他数值;预设字符可以是16进制A5,或者16进制C3,或者其他字符;可以在代码块尾部进行数据填充,即填充数据的起始位置为该代码块结束位置的后一位。

需要说明的是,对齐处理不是在编译阶段进行的对运行地址的对齐,而是在编译结束后,以填充方式,让所有代码块在EMMC中的存储起始地址是EMMC的NAND Flash的扇区大小的整数倍。

在本申请的一个具体实施例中,若分块编译得到主核引导源程序对应的多个代码块,按照上述对齐处理流程对主核引导源程序对应的一代码块进行对齐处理,并将得到的对齐后的代码块作为主核引导源程序对应的对齐后的代码块,由此得到主核引导源程序对应的多个对齐后的代码块,构成处理后的主核引导镜像;若分块编译得到主核启动源程序对应的多个代码块,按照上述对齐处理流程对主核启动源程序对应的一代码块进行对齐处理,并将得到的对齐后的代码块作为主核启动源程序对应的对齐后的代码块,由此得到主核启动源程序对应的多个对齐后的代码块,构成处理后的主核启动镜像;若分块编译得到从核启动源程序对应的多个代码块,按照上述对齐处理流程对从核启动源程序对应的一代码块进行对齐处理,并将得到的对齐后的代码块作为从核启动源程序对应的对齐后的代码块,由此得到从核启动源程序对应的多个对齐后的代码块,构成处理后的从核启动镜像。

步骤S230,自车载控制器的存储空间中一扇区的扇区首地址开始,将多个对齐后的代码块按序存入存储空间,以启动车载控制器。

在本申请的一个实施例中,存储空间为非易失存储空间,具体可以是EMMC,或者其他非易失性存储器。由于对代码块进行了对齐处理,对齐后的代码块比对齐前的代码块的数据量大,如果不按照代码块的先后顺序搬运对齐后的代码块,可能会因为对齐处理造成对启动源程序的镜像文件的破坏,导致车载控制器无法正常启动,例如:两个相邻的代码块A和B,代码块A在代码块B前面,对代码块A和代码块B进行对齐处理后,如果没有按照先后顺序存储,即先存储对齐后的代码块B,再存储对齐后的代码块A,在启动车载控制器时,会先搬运对齐后的代码块B,再搬运对齐后的代码块A,可能会造成对齐后的代码块A尾部的填充数据将对齐后的代码块B的头部数据进行覆写,从而破坏代码块B,也就破坏了启动源程序的镜像文件,因而导致车载控制器无法正常启动。因此,可以将多个对齐后的代码块按序存入存储空间内,进而实现按序搬运,能够避免后续运行加载对齐后的代码块时可能因为对齐处理导致对启动源程序的镜像文件的破坏,以保证车载控制器的正常启动。对于EMMC而言,可以将多个对齐后的代码块存入EMMC的引导分区或者用户数据分区或者其他分区,此处不进行限制。由于对齐后的代码块的代码块大小为扇区大小的整数倍,并且在存储时从EMMC中任一扇区的起始地址即扇区首地址开始存储,能够让代码块的存储起始地址对齐EMMC的NAND Flash的某一扇区的扇区首地址,以在启动时便于搬运,不需要将读取的扇区中的存储数据先搬到其它位置进行裁剪,再拷贝到运行内存的运行地址进行运行,提高搬运效率,进而缩短启动时间和提高启动速度。

在本申请的一个实施例中,自车载控制器的存储空间中一扇区的扇区首地址开始,将多个对齐后的代码块按序存入存储空间,包括:将主核引导源程序对应的多个对齐后的代码块确定为多个主核引导对齐代码块,利用多个主核引导对齐代码块的运行地址对多个主核引导对齐代码块进行排序,并自存储空间的第一引导分区的分区首地址开始,按序将多个主核引导对齐代码块存入存储空间的第一引导分区,主核引导源程序对应的多个对齐后的代码块基于对主核引导源程序对应的多个代码块进行对齐处理得到;将主核启动源程序对应的多个对齐后的代码块确定为多个主核启动对齐代码块,利用多个主核启动对齐代码块的运行地址对多个主核启动对齐代码块进行排序,并自第一引导分区的主核启动目标扇区首地址开始,按序将多个主核启动对齐代码块存入第一引导分区,主核启动源程序对应的多个对齐后的代码块基于对主核启动源程序对应的多个代码块进行对齐处理得到;将每个从核的从核启动源程序对应的多个对齐后的代码块确定为每个从核的多个从核启动对齐代码块,利用每个从核的多个从核启动对齐代码块的运行地址对每个从核的多个从核启动对齐代码块进行排序,并自第一引导分区中每个从核对应的从核启动目标扇区首地址开始,按序将每个从核的多个从核启动对齐代码块存入第一引导分区,每个从核的从核启动源程序对应的多个对齐后的代码块基于对每个从核的从核启动源程序对应的多个代码块进行对齐处理得到。

在该实施例中,通过前述实施例中的对齐处理方式,对主核引导源程序对应的多个代码块进行对齐处理,得到主核引导源程序对应的多个对齐后的代码块。将主核引导源程序对应的对齐后的代码块命名为主核引导对齐代码块,得到多个主核引导对齐代码块。因此,对于主核引导源程序对应的每个代码块而言,其运行地址也为对其进行对齐处理后得到的主核引导对齐代码块的运行地址。

相应的,按照上述方式得到主核的多个主核启动对齐代码块以及每个主核启动对齐代码块的运行地址、每个从核的多个从核启动对齐代码块以及每个从核启动对齐代码块的运行地址,此处不再赘述。

请参阅图3,图3是本申请的一示例性实施例示出的EMMC分区示意图。如图3所示,EMMC分区由Boot(引导)分区、RPMB(Replay Protected Memory Block,回放保护内存块)分区、GPP(General Purpose Partitions,通用分区)分区和UDA(User Data Area,用户数据区)分区共同组成,其中,Boot分区包括第一Boot分区即Boot0和第二Boot分区即Boot1,GPP分区包括第一GPP分区、第二GPP分区、第三GPP分区和第四GPP分区。UDA分区是整个EMMC中最大的分区,主要用于存储系统和用户数据,通常在此分区分成Boot子分区、System(操作系统)子分区和UDA子分区。一般来说,操作系统的镜像存放在UDA分区中,但相对于UDA分区,Boot分区在存储的稳定性、可靠性及擦除次数上都远比UDA分区要好,启动也更快。因此,可以将对齐后的代码块存放在第一引导分区。

可以将首先启动的主核引导镜像放在第一引导分区的分区首地址即EMMC的Boot0的0地址进行启动,将后续启动的主核启动对象和从核启动镜像放在EMMC的Boot0的固定地址,以在启动主核或使能从核时,从固定地址读取主核启动镜像或从核启动镜像。

在存储时,如果没有做好地址排序,可能会出现先搬运后面地址的对齐后的代码块,再搬运前面地址的对齐后的代码块的情况,进而可能造成启动镜像文件的损坏,导致启动功能异常。因此,在存储时需要对多个对齐后的代码块进行排序。

在存储主核引导对齐代码块时,可以根据其运行地址从小到大的顺序对相应的主核引导对齐代码块进行先后排序,并按照此顺序依次将主核引导对齐代码块存入存储空间的第一引导分区,其中,第一个主核引导对齐代码块从第一引导分区的起始地址即分区首地址开始存储,下一个主核引导对齐代码块的存储起始地址为上一个主核引导对齐代码块的存储结束地址的后一位。实现了每个主核引导对齐代码块在存储空间的起始地址均与扇区的起始地址对齐,以在启动车载控制器时便于搬运,无需裁剪和二次搬运,提高搬运效率,进而启动时间和加快启动速度。并且,将主核引导对齐代码块从第一引导分区的分区首地址开始存储,能够实现在启动车载控制器时直接从Boot0分区的0地址搬运主核引导对齐代码块,运行主核引导镜像,进一步缩短车载控制器的启动时间,加快车载控制器的启动速度。可以明白的是,第一引导分区的分区首地址也是第一引导分区中第一个扇区的扇区首地址。

在存储主核启动对齐代码块时,可以根据其运行地址从小到大的顺序对相应的主核启动对齐代码块进行先后排序,并按照此顺序依次将主核启动对齐代码块存入存储空间的第一引导分区,其中,第一个主核启动对齐代码块从第一引导分区的主核启动目标扇区首地址开始存储,下一个主核启动对齐代码块的存储起始地址为上一个主核启动对齐代码块的存储结束地址的后一位。实现了每个主核启动对齐代码块在存储空间的起始地址均与扇区的起始地址对齐,以在启动车载控制器时便于搬运,无需裁剪和二次搬运,提高搬运效率,进而缩短启动时间和加快启动速度。并且,将主核启动对齐代码块存放在第一引导分区,能够进一步缩短主核启动时间和加快主核启动速度,进而进一步缩短车载控制器的启动时间和加快车载控制器的启动速度。

在存储每个从核的从核启动对齐代码块时,以一个从核为例,可以根据该从核的从核启动对齐代码块的运行地址从小到大的顺序对相应的从核启动对齐代码块进行先后排序,并按照此顺序依次将该从核的从核启动对齐代码块存入存储空间的第一引导分区,其中,该从核的第一个从核启动对齐代码块从第一引导分区中该从核对应的从核启动目标扇区首地址开始存储,下一个从核启动对齐代码块的存储起始地址为上一个从核启动对齐代码块的存储结束地址的后一位。以此类推,对每个从核的从核启动对齐代码块进行存储。实现了每个从核的每一从核启动对齐代码块在存储空间的起始地址均与扇区的起始地址对齐,以在启动车载控制器时便于搬运,无需裁剪和二次搬运,提高搬运效率,进而缩短启动时间和加快启动速度。并且,将从核启动对齐代码块存入第一引导分区,也能进一步缩短从核启动时间和加快从核启动速度,进而进一步缩短车载控制的启动时间和加快车载控制的启动速度。

在本申请的一个实施例中,自车载控制器的存储空间中一扇区的扇区首地址开始,将多个对齐后的代码块按序存入存储空间,还包括:自第一引导分区的主核引导冗余目标扇区首地址开始,按序将多个主核引导对齐代码块再次存入第一引导分区;自第一引导分区的主核启动冗余目标扇区首地址开始,按序将多个主核启动对齐代码块再次存入第一引导分区;自第一引导分区中每个从核对应的从核启动冗余目标扇区首地址开始,按序将每个从核的多个从核启动对齐代码块再次存入第一引导分区。

在该实施例中,还可以对多个主核引导对齐代码块、多个主核启动对齐代码块以及每个从核的多个从核启动对齐代码进行存储冗余,以对主核引导镜像、主核启动镜像和从核启动镜像进行备份,以便在车载控制器启动的同时也能更新车载控制器软件,能够不修改正在启动的主核引导镜像、主核启动镜像和从核启动镜像,只修改放在EMMC的Boot0分区的备份的主核引导镜像、主核启动镜像和从核启动镜像,进而避免OTA(Over-the-AirTechnology,空中下载技术)更新过程中破坏Boot0分区中正在启动的镜像,造成无法启动的后果。

在本申请的一个实施例中,将多个对齐后的代码块按序存入存储空间之前,该方法包括:对存储空间中的第一引导分区进行设置,以从第一引导分区启动车载控制器;确定第一引导分区的总容量,若第一引导分区的总容量小于预设容量阈值,则对第一引导分区进行扩容,以使第一引导分区的总容量等于预设容量阈值;自第一引导分区的分区首地址开始,从第一引导分区中划分出主核引导镜像存储区域,以存储多个主核引导对齐代码块;在主核引导镜像存储区域之后,自第一引导分区的一扇区的扇区首地址开始,从第一引导分区中划分出主核启动镜像存储区域,以存储多个主核启动对齐代码块,主核启动镜像存储区域中首个扇区的扇区首地址为主核启动目标扇区首地址;在主核引导镜像存储区域之后,自第一引导分区的一扇区的扇区首地址开始,从第一引导分区中划分出从核启动镜像存储区域,得到每个从核对应的从核启动镜像存储区域,以将每个从核的多个从核启动对齐代码块存储在每个从核对应的从核启动镜像存储区域,每个从核对应的从核启动镜像存储区域中首个扇区的扇区首地址为每个从核对应的从核启动目标扇区首地址。

在该实施例中,在存放对齐后的代码块之前,首先,切换默认启动分区为Boot0分区即第一引导分区,以从第一引导分区启动车载控制器。通常第一引导分区的总容量较小,为确保对齐处理后的主核引导镜像、主核启动镜像和从核启动镜像均能存储在第一引导分区中,当第一引导分区的总容量小于预设容量阈值时,需要对其进行扩容,以使扩容后的第一引导分区的总容量等于预设容量阈值。示意性的,预设容量阈值可以是32MB,或者其他数值,此处不进行限制。通常第一引导分区的大小默认为4MB,将第一引导分区由默认的4MB扩容为32MB,以在第一引导分区中存储处理后的主核引导镜像、主核启动镜像和从核启动镜像,能减少Boot分区切换到UDA分区的切换分区发送指令以及切换时间。

其次,从第一引导分区中划分出主核引导镜像存储区域、主核启动镜像存储区域和每个从核对应的从核启动镜像存储区域。其中,主核引导镜像存储区域、主核启动镜像存储区域和从核启动镜像存储区域互不重合,主核启动镜像存储区域和从核启动镜像存储区域均位于主核引导镜像存储区域之后,主核引导镜像存储区域的首地址为第一引导分区的分区首地址,也即Boot0分区的0地址,主核启动镜像存储区域的首地址为扇区的扇区首地址,每个从核对应的从核启动镜像存储区域的首地址也为扇区的扇区首地址。

请参阅图4,图4是本申请的一示例性实施例示出的一种传统的代码块存储示意图。如图4所示,主核引导镜像由多个代码块组成,分别为第一代码块、第二代码块、第三代码块和第四代码块,对于传统的代码块存储方式来说,由于每个代码块的代码块大小可能不是扇区大小的整数倍,当直接将每个代码块进行存储时,会导致每个代码块没有按照扇区存储在EMMC的NAND Flash中。在图4中,每个代码块的存储地址是连续的,由于第一代码块的代码块大小不是扇区大小的整数倍,其存储结束地址未与EMMC的NAND Flash的扇区的结束地址对齐,进而导致第二代码块的存储起始地址未与EMMC的NAND Flash的扇区的起始地址对齐,相应的,由于第二代码块的存储结束地址未与EMMC的NAND Flash的扇区的结束地址对齐,进而导致第三代码块的存储起始地址也未与EMMC的NAND Flash的扇区的起始地址对齐……。因此,在搬运过程中,需要对读取的扇区中的存储数据搬运到其他位置进行裁剪,再搬运到RAM或DDR的运行地址进行运行,导致启动时间长、启动速度慢。

请参阅图5,图5是本申请的一示例性实施例示出的另一种改进的代码块存储示意图。如图5所示,主核引导镜像由多个代码块组成,分别为第一代码块、第二代码块、第三代码块和第四代码块,对于改进的代码块存储方式来说,在对源程序进行编译得到镜像的多个代码块以后,对多个代码块进行对齐处理,即当某一代码块的代码块大小不是扇区大小的整数倍时,在该代码块结束地址之后进行数据填充,以使填充后的代码块也即对齐后的代码块的代码块大小为扇区大小的整数倍,再对其进行存储,以使每个代码块的存储起始地址对齐EMMC的NAND Flash的扇区的起始地址。在图5中,由于数据的填充,每个代码块的存储地址不是连续的,代码块与其填充的数据构成了对齐后的代码块。该改进的代码块存储方式便于搬运,不需要将读取的扇区中的存储数据先搬到其它位置进行裁剪,再拷贝到运行内存的运行地址进行运行,提高搬运效率,进而缩短启动时间和提高启动速度。

在本申请的一个实施例中,将多个对齐后的代码块按序存入存储空间之后,该方法包括:车载控制器上电之后,主核从第一引导分区的分区首地址开始,按序将每一主核引导对齐代码块搬运至每一主核引导对齐代码块的运行地址,得到主核引导镜像并运行,以根据主核引导镜像的代码指令使能第一从核并启动主核,至少一个从核包括第一从核;第一从核被使能后,从第一从核对应的从核启动目标扇区首地址开始,按序将第一从核对应的每一从核启动对齐代码块搬运至第一从核对应的每一从核启动对齐代码块的运行地址,得到第一从核对应的从核启动镜像并运行,完成第一从核的启动;主核从主核启动目标扇区首地址开始,按序将每一主核启动对齐代码块搬运至每一主核启动对齐代码块的运行地址,得到主核启动镜像并运行,完成主核的启动并使能第二从核,至少一个从核包括第二从核;第二从核被使能后,从第二从核对应的从核启动目标扇区首地址开始,按序将第二从核对应的每一从核启动对齐代码块搬运至第二从核对应的每一从核启动对齐代码块的运行地址,得到第二从核对应的从核启动镜像并运行,完成第二从核的启动。

在该实施例中,按序搬运运行能够避免后面加载的对齐后的代码块可能因为对齐填充导致对源程序的破坏。例如:若第一个代码块到600字节结束,出于对齐要求,要加上对齐填充,得到的对齐后的代码块的大小为1024字节,因此搬到运行内存中的是1024字节也即两个扇区的存储数据,如果下一个对齐后的代码块搬到运行内存的运行地址是700字节,则可以直接覆写700字节以后的内容。本申请实施例的技术方案通过先启动第一从核,再启动主核,最后启动第二从核,从而完成车载控制器的启动,既能够加快第一从核的启动速度,又能极大优化启动时间,而且更加安全。

需要说明的是,第一从核可以是一个或者多个,第二从核也可以是一个或者多个,可以预先根据各从核的优先级或者重要程度或者其他原则将其确定为第一从核或者第二从核。

在本申请的一个具体实施例中,车载异构多核控制器有多种架构,例如ARM(Advanced RISC Machine,高级精简指令集机器)架构,包括A核(ApplicationProcessors,应用处理器)、R核(Real-time Processors,实时处理器,又称实时核)和M核(Microcontroller Processors,微控制器处理器)。对于ARM架构的车载异构多核控制器,通常由R核运行实时操作系统,由A核运行Linux系统。相对于先启动A核U-Boot(引导加载程序)和A核Kernel(内核的启动程序,也即操作系统,例如Linux系统)、再启动R核操作系统的方案,先启动R核操作系统、再由R核实现A核启动镜像的搬运和运行,能够缩短R核的启动时间,因此,可以将R核作为主核,并将R核操作系统作为主核启动镜像,将A核作为第二从核,并将A核U-Boot和A核Kernel作为第二从核的从核启动镜像。

本申请具体实施例的详细过程请参见前述各个实施例中的记载,本处不再对此进行赘述。本申请实施例的技术方案能够优化车载控制器的启动时间,而且更加安全,还能兼顾异构多核芯片对实时核启动速度的需要以及对Linux系统快速启动的需要。

请参阅图6,图6是本申请的一示例性实施例示出的一种车载控制器启动优化装置的框图。该装置可以应用于图1所示的实施环境,并具体配置在计算机设备102中。该装置也可以适用于其它的示例性实施环境,并具体配置在其它设备中,本实施例不对该装置所适用的实施环境进行限制。

如图6所示,该示例性的车载控制器启动优化装置包括:

获取模块610,配置为获取车载控制器的启动源程序;编译模块620,配置为对启动源程序进行分块编译,得到多个代码块;对齐模块630,配置为对每一代码块进行对齐处理,得到多个对齐后的代码块,以使每一对齐后的代码块的代码块大小为扇区大小的整数倍;存储模块640,配置为自车载控制器的存储空间中一扇区的扇区首地址开始,将多个对齐后的代码块按序存入存储空间,以启动车载控制器,存储空间为非易失存储空间。

需要说明的是,上述实施例所提供的车载控制器启动优化装置与上述实施例所提供的车载控制器启动优化方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的车载控制器启动优化装置在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。

本实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各个实施例中提供的车载控制器启动优化方法。

请参阅图7,图7是本申请的一示例性实施例示出的电子设备的一种结构示意图。需要说明的是,图7示出的电子设备700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700包括处理器701、存储器702和通信总线703;通信总线703用于将处理器701和存储器连接702;处理器701用于执行存储器702中存储的计算机程序,以实现如上述实施例中的一个或多个的方法。

本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机的处理器执行时,使计算机执行如前所述的车载控制器启动优化方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。

本实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的车载控制器启动优化方法。

本实施例提供的电子设备,包括处理器、存储器、收发器和通信接口,存储器和通信接口与处理器和收发器连接并完成相互间的通信,存储器用于存储计算机程序,通信接口用于进行通信,处理器和收发器用于运行计算机程序,使电子设备执行如上方法的各个步骤。

在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM(只读存储器)、RAM(随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

上述实施例仅示例性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

相关技术
  • 一种逆变器设备及控制逆变器系统的方法
  • 一种三电平拓扑电路、单相逆变器以及三相逆变器
  • 一种逆变器输入侧控制方法和应用其的逆变器
  • 用于逆变器的控制装置、包括此装置的电气设备、用于逆变器的控制程序和相应计算机程序
  • 逆变器装置以及使用该逆变器装置的电气设备
技术分类

06120116339478