一种车载控制器内存管理方法及系统与流程

文档序号:11216203阅读:863来源:国知局
一种车载控制器内存管理方法及系统与流程

本发明涉及汽车相关技术领域,特别是一种车载控制器内存管理方法及系统。



背景技术:

通常车载控制器大都集成如下几种内存:数据闪存(dflash),用于存储常数等标定数据信息;代码闪存(codeflash),用于存储代码和常数;随机存储器(ram),用于存储控制器实时运行的数据;复位不丢失存储器(kam),用于存储复位(非掉电)情况下的实时运行数据;电可擦可编程只读存储器(eeprom),用于存储运行实时数据,但掉电后期望不丢失的数据。其中闪存(flash)较eeprom价格便宜,写入速度快,但写入前需要先擦除原有数据。

随着汽车行业的蓬勃发展,车载电脑(车载控制器)所使用的内存,由于可靠性和低廉性的原因,逐步淘汰了eeprom,转而在物理dflash内存的基础上,使用系统模拟的方式实现eeprom内存一样的效果。这大大降低了控制器mcu的成本,然而,其缺点是带来了系统成本和系统复杂度升高,同时造成了读写模拟eeprom实时性降低的问题。

目前,应对dflash模拟eeprom(简称fee)的系统策略有很多,各个mcu芯片厂商都有各自的算法推荐,但参差不齐。当今,最流行,应用也最广的fee方法是autosar机构定义的fee策略。fee策略使用后,对控制器最直接的影响是,初始化时间和写入时间加长。因为fee的初始化时间和写入速度都达不到系统的要求,造成控制器从休眠到唤醒后全速运行时间间隔拉长,这直接造成控制器实时性变差,往往造成功能异常和网络异常等问题。造成上述问题的原因是dflash的写入速度远远慢于eeprom,在功能应用程序请求存储重要控制信息时,不能及时的响应。这对实时性要求极高的车载控制器来说,是不能接受的。

目前,还有一种应对数据存储实时性能的方法,就是使用复位不丢失随机存储器(kam)来存储重要控制器信息,该方法避免了fee的一些缺点,但由于kam掉电丢失且易受干扰等问题,使得该方法不能解决车载控制器的内存存储问题。



技术实现要素:

基于此,有必要针对现有技术在车载控制器内存上实时性不高的技术问题,提供一种车载控制器内存管理方法及系统。

本发明提供一种车载控制器内存管理方法,包括:

模拟步骤,包括:将掉电数据不丢失存储器模拟为电可擦可编程只读存储器;

数据读取步骤,包括:响应于对车载控制器的非易失性随机访问存储器数据读取请求,从物理内存中获取所述非易失性随机访问存储器数据读取请求所指定的读取数据,所述物理内存内的数据为掉电数据不丢失存储器的镜像;

数据写入步骤,包括:响应于对车载控制器的非易失性随机访问存储器数据写入请求,向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述掉电数据不丢失存储器写入所述写入数据。

本发明提供一种车载控制器内存管理系统,包括:

模拟模块,用于:将掉电数据不丢失存储器模拟为电可擦可编程只读存储器;

数据读取模块,用于:响应于对车载控制器的非易失性随机访问存储器数据读取请求,从物理内存中获取所述非易失性随机访问存储器数据读取请求所指定的读取数据,所述物理内存内的数据为掉电数据不丢失存储器的镜像;

数据写入模块,用于:响应于对车载控制器的非易失性随机访问存储器数据写入请求,向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述掉电数据不丢失存储器写入所述写入数据。

本发明通过掉电数据不丢失存储器模拟电可擦可编程只读存储器,以保证数据掉电后不丢失,同时,通过物理内存作为掉电数据不丢失存储器的镜像,由于物理内存的响应速度快,从而解决了实时性不高的问题,同时也避免数据掉电丢失。

附图说明

图1为本发明一种车载控制器内存管理方法的工作流程图;

图2为本发明最佳实施例的车载控制器内存管理框图;

图3为根据本发明最佳实施例的车载控制器内存管理方法的内存读取时序示意图;

图4为根据本发明最佳实施例的车载控制器内存管理方法的内存写入时序示意图;

图5为根据本发明最佳实施例的车载控制器内存管理方法在控制器系统中的启动时kam自恢复流程示意图;

图6为本发明最佳实施例的车载控制器内存管理方法从dflash9中恢复数据流程示意图;

图7为本发明一种车载控制器内存管理系统的结构模块图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细的说明。

如图1所示为本发明一种车载控制器内存管理方法的工作流程图,包括:

步骤s101,包括:将掉电数据不丢失存储器模拟为电可擦可编程只读存储器;

步骤s102,包括:响应于对车载控制器的非易失性随机访问存储器数据读取请求,从物理内存中获取所述非易失性随机访问存储器数据读取请求所指定的读取数据,所述物理内存内的数据为掉电数据不丢失存储器的镜像;

步骤s102,包括:响应于对车载控制器的非易失性随机访问存储器数据写入请求,向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述掉电数据不丢失存储器写入所述写入数据。

其中,其中,在步骤s101中,可以采用现有autosar机构定义的fee策略将掉电数据不丢失存储器模拟为电可擦可编程只读存储器。

在步骤s102中,非易失性随机访问存储器(non-volatilerandomaccessmemory,nvram)数据读取请求,是要获取断电后仍能保持数据的内存中的数据,因此,该数据请求是要获取存储在电可擦可编程只读存储器或者模拟电可擦可编程只读存储器中的数据。本发明由于采用了物理内存镜像掉电数据不丢失存储器的数据,而掉电数据不丢失存储器则模拟为电可擦可编程只读存储器,因此,对于nmram的数据读取请求,则从物理内存中获取。

同样地,当在步骤s103中执行nvram数据写入请求时,是要向电可擦可编程只读存储器或者模拟电可擦可编程只读存储器中写入数据,由于本发明是采用掉电数据不丢失存储器去模拟电可擦可编程只读存储器,因此,该写入数据将写入掉电数据不丢失存储器,同时由于物理内存镜像掉电数据不丢失存储器,因此,该写入数据也同时写入物理内存。

本发明对车载控制器将掉电数据不丢失存储器模拟为电可擦可编程只读存储器,并通过物理内存镜像掉电数据不丢失存储器,执行步骤s102进行数据读取时,其数据来自于物理内存,从而提供访问速度。将掉电数据不丢失存储器模拟为电可擦可编程只读存储器可以采用现有autosar机构定义的fee策略进行模拟。

如图2所示为本发明最佳实施例的车载控制器内存管理框图。其中应用程序1和应用程序2为内存的使用者,通过实时环境rte3向内存管理单元4请求读和写,应用程序1、2提供读写内存块的标号。读时,内存管理单元4执行步骤s101将要读的内存值放入应用程序1、2提供的地址内;写时,内存管理单元4执行步骤s102,将要写的值从应用程序1、2提供的地址内取出,并写入物理内存5和掉电数据不丢失存储器9。物理内存5用于镜像存储实时的非易失数据,掉电数据不丢失存储器9通过autosar机构定义的fee策略,由标准autosar模块nvm6、标准autosar模块fee7、标准autosar模块fls8模拟为电可擦可编程只读存储器。

需要指出的是,上述仅为本发明的最佳实施例,在实际使用中,所述内存管理单元4之上的应用程序可以是多个,也可以是单个。作为内存管理单元4的使用模块不限于处在内存管理单元之上,也可以在其同层或之下。所述实时环境rte3是基于autosar的系统思想所示意,本发明实例不限于autosar系统思想,及应用程序和内存管理单元之间可以选的使用实时环境rte3。可选的,所述标准autosar模块nvm6、标准autosar模块fee7和标准autosar模块fls8也可以使用自定义的模拟eeprom的系统思想实现的非易失性随机访问存储器。

本发明通过掉电数据不丢失存储器模拟电可擦可编程只读存储器,以保证数据掉电后不丢失,同时,通过物理内存作为掉电数据不丢失存储器的镜像,由于物理内存的响应速度快,从而解决了实时性不高的问题,同时也避免数据掉电丢失。

在其中一个实施例中,所述物理内存包括:第一内存区域、第二内存区域和第三内存区域;

所述向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,具体包括:向所述第一内存区域写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述第二内存区域写入所述写入数据,向所述第三内存区域写入所述写入数据的反码。

本实施例的物理内存采用三个内存区域,采用第一内存区域=第二内存区域=~第三内存区域的算法,即当第一内存区域写入1时,第二内存区域写入1,第三内存区域写入0。本实施例解决车载控制器在强干扰环境下,物理内存受到电磁干扰出现的一致性内存错误。同时,采用本实施例的方式,可以不再使用循环冗余码校验算法(cyclicredundancycode,crc),以提高读写性能。

在其中一个实施例中,还包括初始化步骤,所述初始化步骤,包括:

车载控制器初始化开始时,从所述第一内存区域读取第一初始化读取数据,从所述第二内存区域读取第二初始化读取数据,从所述第三内存区域读取第二初始化读取数据;

如果所述第一初始化读取数据与所述第三初始化读取数据的反码相等,则将所述第一初始化读取数据复制到所述第二内存区域,结束初始化步骤;

如果所述第二初始化读取数据与所述第三初始化读取数据的反码相等,则将所述第二初始化读取数据复制到所述第一内存区域,结束初始化步骤;

如果所述第一初始化读取数据与所述第二初始化读取数据相等,则将所述第一初始化读取数据的反码复制到所述第三内存区域,结束初始化步骤;

如果所述第一初始化读取数据与所述第三初始化读取数据的反码不相等,且所述第二初始化读取数据与所述第三初始化读取数据的反码不相等,且所述第一初始化读取数据与所述第二初始化读取数据不相等,则标记物理内存数据不可靠,结束初始化步骤。

本实施例中物理内存通过对三个内存区域进行比较以实现自动恢复功能。

在其中一个实施例中,还包括复位步骤,所述复位步骤,具体包括:

如果接收到复位请求,或者所述物理内存中用于表征数据恢复成功的幻码值不合法,或者如果标记物理内存数据不可靠,则清除所述幻码值;

从所述掉电数据不丢失存储器中按照数据块号读取每个数据块号对应的待恢复数据;

检查所述待恢复数据的有效性,如果所述待恢复数据有效,则将所述待恢复数据写入到所述第一内存区域和所述第二内存区域,将所述待恢复数据的反码写入到所述第三内存区域,如果所述待恢复数据无效,则将预设的默认值写入到所述第一内存区域和所述第二内存区域,将所述默认值的反码写入到所述第三内存区域;

当所有的数据块号遍历完后,在所述物理内存中设置所述幻码值。

幻码值magiccode是一个预设的特殊数值,通过设置和清除幻码值,可以标识是否恢复完成。

由于物理内存的数据掉电丢失且易受干扰,因此,本实施例通过掉电数据不丢失存储器对物理内存进行恢复,以达到物理内存在掉电或数据受到干扰时,能从掉电数据不丢失存储器准确地恢复数据。

在其中一个实施例中,采用标准autosar模块nvm6、标准autosar模块fee7和标准autosar模块fls8从掉电数据不丢失存储器9获取数据,完成与物理内存5的交互。在另一个实施例中,采用自定义的模拟eeprom系统方法从掉电数据不丢失存储器9获取数据,完成与物理内存5的交互。

在其中一个实施例中,所述向所述掉电数据不丢失存储器写入所述写入数据,具体包括:

读取所述车载控制器的工作电压,如果所述工作电压在预设工作电压范围内,则向所述掉电数据不丢失存储器写入所述写入数据,否则不向所述掉电数据不丢失存储器写入所述写入数据。

其中,预设工作电压范围优选为大于掉电数据不丢失存储器的标定电压。标定电压指的是,在该电压下掉电数据不丢失存储器擦写不保证成功,该标定电压一般由芯片手册提供。

本实施例对车载控制器的工作电压进行检测,从而保证在预设工作电压范围外不对掉电数据不丢失存储器进行操作,避免在工作电压范围外操作掉电数据不丢失存储器造成损坏。对车载控制器的工作电压进行检测,可以通过车载控制器的电压管理模块实现。

在其中一个实施例中,所述物理内存为复位不丢失随机存储器或者随机存储器,所述掉电数据不丢失存储器为闪存。

作为本发明最佳实施例,采用如图2所示的车载控制器内存管理框图。物理内存采用复位不丢失存储器kam,物理内存分为三个内存分区以实现备份、互相检查(checksum)及自恢复功能。本发明并不限定分区的个数,可以是1个、2个或者更多,当只有一个kam分区时可以使用crc校验等其他方法来实现数据完整性的校验,但没有备份和自恢复功能。本发明并不限定kam内存区域的个数,可选的,可根据实现车载控制器的kam内存大小而定。

图3是根据本发明最佳实施例的车载控制器内存管理方法的内存读取时序示意图。

步骤s301,应用程序1在需要读取非易失性随机访问存储器数据时,向内存管理单元4请求读。实际通过调用内存管理单元4提供的读接口来实现,接口参数提供内存块号和数据指针,内存块号用来表征应用程序1要读取的内存块的索引地址,数据指针用来提供给内存管理单元4,供其将数据拷贝到该数据指针所在的地方。

步骤s302,内存管理单元4拿到请求后,操作kam物理内存5,例如物理内存的第一内存区域51,从第一内存区域51将数据拷贝到应用程序1提供的地址所指向的位置。可选的,所述物理内存如对内存读写有保护或者字节要求,在对内存操作时选择合适的寄存器操作。在成功拷贝数据后,返回正确响应给应用程序1。可选的,在发生读或拷贝失败时,返回错误响应码给应用程序1。其中三个模块的交互,为同步模式。

图4是根据本发明最佳实施例用于车载控制器的内存管理系统应用在控制器系统中的内存写入的时序示意图。实例时序图中包含:应用程序1、内存管理单元4、kam物理内存5、电源管理模块10,标准autosarnvm模块6。所述应用程序1指代有非易失性随机访问存储器内存需求的应用程序模块,这里都是泛指,不指定特定的功能。

步骤s401,应用程序1在需要写非易失性随机访问存储器数据时,向内存管理单元4请求写。实际通过调用内存管理单元4提供的写接口来实现,接口参数提供内存块号和数据指针,内存块号用来表征应用程序1要读取的内存块的索引地址,数据指针用来提供给内存管理单元4,供其将数据从该数据指针所指的地方拷贝到物理内存。

步骤s402,内存管理单元4拿到请求后,先操作物理内存5,将当前物理内存5里的第一内存区域的数据读出,内存管理单元4将读出的数据与应用程序请求写的数据,进行比较。根据比较结果,选择写动作是否发生。当比较相等时,取消写动作,当比较不等时,继续执行写请求。该方法可以避免由于应用程序1频繁出现调用写接口,而写入数据不变,造成的cpu负载增高,内存损坏等故障。

步骤s403,当内存管理模块4发现请求数据和当前kam物理内存5的数据一致时,直接返回正确响应,通知应用程序1,并结束该次内存写请求。作为另外一个分支,当内存管理模块发现请求数据和当前kam物理内存的数据不等,即数据有更新,内存管理单元4将应用程序1请求的数据分别写入kam物理内存5的第一内存区域和第二内存区域,并将请求的数据的反码写入kam物理内存5的第三内存区域

步骤s404,在写入kam物理内存5之后,内存管理单元4调用电压管理模块10的接口来获取当前车载控制器的系统电压,将系统当前电压和标定电压比较,当大于标定电压时,内存管理单元4调用nvm6的写接口,请求将数据写入到dflash9中。当小于标定电压时,不再调用nvm6接口,即不再向dflash9中写入数据。此时向应用程序1返回错误响应码,标示由于电压过低dflash9更新数据失败。该方法目的是保证在低压情况下不对物理dflash9操作,避免低压下操作物理dflash9造成的物理区间的损坏。所述标定电压,指在该电压下dflash9物理内存擦写不保证成功(一般由芯片手册提供)。

步骤s405,在内存管理单元4将数据写入kam第一内存区域51、第二内存区域52和第三内存区域537和将数据向nvm6请求写入后,将正确响应返回给应用程序1.时序图中五个模块的交互,为同步模式。内存管理单元4向autosar标准模块nvm6请求数据写入时为同步操作,但nvm6再次调用fee7、fls8模块为异步操作,异步主进程由后台任务完成。

图5是根据本发明最佳实施例的车载控制器内存管理方法在控制器系统中的启动时kam自恢复流程示意图。所述启动时,指在车载控制器上电和复位后,执行初始化阶段。该流程图只是本发明的一个具体实例的示意图,具体实现时并不局限于该流程。

车载控制器初始化开始时,执行步骤s501;

步骤s501,将kam物理内存5中的第一内存区域、第二内存区域和第三内存区域中的值读出,在发生读或拷贝失败时,记录故障状态;

步骤s502,将第一内存区域51的数据与第三内存区域53的数据的反码比较,当第一内存区域51的数据与第三内存区域53的数据的反码相等时,不再比较,并且执行第二内存区域52的数据=第一内存区域51的数据,即恢复第二内存区域52与第一内存区域51一致,然后结束该流程;

步骤s503,当第一内存区域51的数据与第三内存区域53的数据的反码不相等时,将第二内存区域52的数据与第三内存区域53的数据的反码比较,当第二内存区域52的数据与第三内存区域53的数据的反码相等时,不再比较,并且执行第一内存区域51的数据=第二内存区域52的数据,即恢复第一内存区域51与第二内存区域52一致,然后结束该流程;

步骤s504,当第二内存区域52的数据与第三内存区域53的数据的反码不相等时,将第一内存区域51的数据与第二内存区域52的数据比较,当第一内存区域51的数据与第二内存区域52的数据相等时,不再比较,并且执行第三内存区域53的数据=第一内存区域51的数据的反码,即恢复第三内存区域53与第一内存区域51的反码一样,然后结束该流程;

步骤s505,当第一内存区域51的数据与第二内存区域52的数据不相等时,即表示第一内存区域51/第二内存区域53/~第三内存区域53之间两两不等,表示从kam物理内存5恢复数据失败,记录标记。所述标记,用于表征三者均不等发生,kam物理内存5的数据不可靠。

图6是本发明最佳实施例的车载控制器内存管理方法从dflash9中恢复数据流程示意图。该流程图只是本发明的一个具体实例的示意图,具体实现时并不局限于该流程。流程中所述获取复位信息,指代从mcu驱动模块中获取的复位信息,其中上电、低压复位两个复位源是该案例需要的信息。所述magiccode,指代一组存储在物理kam里的数据,该数据表征所有非易失性随机访问存储器数据是否已经成功从dflash9恢复到物理内存5内。magiccode由6字节组成。每次开始从dflash9恢复时,清magiccode=0x00,从dflash9成功恢复到kam物理内存5后,置magiccode=0x77a75a766c5a76a5。magiccode不合法表示magiccode不等于0x77a75a766c5a76a5。该magiccode用于保护数据从dflash9的恢复的可靠性,从dflash9恢复时,采用同步操作,较耗时,如若中途退出,将造成数据不可用。

从dflash恢复流程开始后,执行步骤s601。

步骤s601,首先从mcu驱动模块读取复位源,执行步骤s602;

步骤s602,当复位源是上电复位,流程跳转到步骤s606,如果复位源不是上电,执行步骤s603;

步骤s603,判断复位源是否为低压复位,当复位源是低压复位,流程跳转到步骤s606,如果既不是上电复位也不是低压复位时,执行步骤s604;

步骤s604,流程判断magiccode是否合法,如不合法,流程跳转到步骤s606,否则,执行步骤s605;

步骤s605,判断kam物理内存的两两不等标记位是否有效,如有效,流程跳转到步骤s605,否则,所有条件不满足从dflash恢复数据,流程结束;

步骤s606,首先清除magiccode,表征magiccode不再合法;

步骤s607,内存管理单元4开始调用autosar标准模块nvm/fee/fls的接口,按照数据块号遍历,将对应块号的非易失性随机访问存储器数据从dflash中恢复出来,当所有的数据块号遍历完后,执行步骤s611;

步骤s608,如果恢复出的数据有效,则执行步骤s609,否则执行步骤s610;

步骤s609,将数据写入到kam物理内存5,然后执行步骤s607;

步骤s610,将默认值写入到kam物理内存5,然后执行步骤s607;

步骤s611,置magiccode,表征magiccode合法,流程结束。

如图7所示为本发明一种车载控制器内存管理系统的结构模块图,包括:

模拟模块701,用于:将掉电数据不丢失存储器模拟为电可擦可编程只读存储器;

数据读取模块702,用于:响应于对车载控制器的非易失性随机访问存储器数据读取请求,从物理内存中获取所述非易失性随机访问存储器数据读取请求所指定的读取数据,所述物理内存内的数据为掉电数据不丢失存储器的镜像;

数据写入模块703,用于:响应于对车载控制器的非易失性随机访问存储器数据写入请求,向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述掉电数据不丢失存储器写入所述写入数据。

在其中一个实施例中,所述物理内存包括:第一内存区域、第二内存区域和第三内存区域;

所述向所述物理内存写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,具体包括:向所述第一内存区域写入所述非易失性随机访问存储器数据写入请求所指定的写入数据,向所述第二内存区域写入所述写入数据,向所述第三内存区域写入所述写入数据的反码。

在其中一个实施例中,还包括初始化模块,所述初始化模块,用于:

车载控制器初始化开始时,从所述第一内存区域读取第一初始化读取数据,从所述第二内存区域读取第二初始化读取数据,从所述第三内存区域读取第二初始化读取数据;

如果所述第一初始化读取数据与所述第三初始化读取数据的反码相等,则将所述第一初始化读取数据复制到所述第二内存区域,结束初始化模块;

如果所述第二初始化读取数据与所述第三初始化读取数据的反码相等,则将所述第二初始化读取数据复制到所述第一内存区域,结束初始化模块;

如果所述第一初始化读取数据与所述第二初始化读取数据相等,则将所述第一初始化读取数据的反码复制到所述第三内存区域,结束初始化模块;

如果所述第一初始化读取数据与所述第三初始化读取数据的反码不相等,且所述第二初始化读取数据与所述第三初始化读取数据的反码不相等,且所述第一初始化读取数据与所述第二初始化读取数据不相等,则标记物理内存数据不可靠,结束初始化模块。

在其中一个实施例中,还包括复位模块,所述复位模块,具体用于:

如果接收到复位请求,或者所述物理内存中用于表征数据恢复成功的幻码值不合法,或者如果标记物理内存数据不可靠,则清除所述幻码值;

从所述掉电数据不丢失存储器中按照数据块号读取每个数据块号对应的待恢复数据;

检查所述待恢复数据的有效性,如果所述待恢复数据有效,则将所述待恢复数据写入到所述第一内存区域和所述第二内存区域,将所述待恢复数据的反码写入到所述第三内存区域,如果所述待恢复数据无效,则将预设的默认值写入到所述第一内存区域和所述第二内存区域,将所述默认值的反码写入到所述第三内存区域;

当所有的数据块号遍历完后,在所述物理内存中设置所述幻码值。

在其中一个实施例中,所述向所述掉电数据不丢失存储器写入所述写入数据,具体包括:

读取所述车载控制器的工作电压,如果所述工作电压在预设工作电压范围内,则向所述掉电数据不丢失存储器写入所述写入数据,否则不向所述掉电数据不丢失存储器写入所述写入数据。

在其中一个实施例中,所述物理内存为复位不丢失随机存储器或者随机存储器,所述掉电数据不丢失存储器为闪存。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1