蓝牙OBD长时间数据保存实现方法与流程

文档序号:11950518阅读:922来源:国知局
蓝牙OBD长时间数据保存实现方法与流程

本发明涉及汽车诊断OBD嵌入式系统技术领域,尤其涉及一种蓝牙OBD长时间数据保存实现方法。



背景技术:

为了解决汽车尾气排放的环境污染,世界各大汽车制造厂家都生产符合国际标准 OBD-II 的汽车以减少汽车尾气排放。OBD-II 一套扩展的标准,最早是由美国的 SAE 组织开发,环境保护局采用,随后陆续推广到欧洲、亚洲、大洋洲等地区。

现在中国也已经开始强制要求在中国国内生产的汽车必须符合国际标准 OBDII。国际标准 OBDII 支持下列功能:如果汽车存在故障,汽车仪表盘上的故障指示灯就必须点亮,提示客户汽车有故障,继续驾驶会 影响安全。

蓝牙OBD是一款对汽车实现故障检测及动态数据实时监测的安全智能监测产品,采用无线蓝牙方式将诊断数据发送到Android系统手机上,适用于支持OBDII/EOBD协议车辆。产品技术先进,设计小巧、可长期插在车上使用,能让车主随时随地掌握车辆状况,是爱车一族的最佳选择。

然而,现有的蓝牙OBD通常无法长时间进行数据保存,无法进行长时间存储记录以及更新OBD用户数据。



技术实现要素:

针对上述技术中存在的不足之处,本发明提供一种的蓝牙OBD长时间数据保存实现方法,实现长时间存储记录以及更新OBD用户数据。

为了达到上述目的,本发明一种蓝牙OBD长时间数据保存实现方法,包括以下具体步骤:

步骤1,初始化Cortex-M3主控MCU的SPI总线硬件;

步骤2,挂载应用在蓝牙OBD上的存储芯片Flash,初始化Flash信息及Flash操作驱动;

步骤3,初始化数据库管理系统,数据库管理系统针对Flash内部存储不同数据信息的保存要求进行功能区域划分,且功能区域包括静态存储区、动态存储区、预留备份区和指针区;

步骤4,数据库管理系统进行分配Flash块区域的起始地址及各功能区域大小;

步骤5,数据库管理系统对静态存储区数据进行更新,且静态存储区包括IAP数据区、ISP数据区及非持续读写的参数区;

步骤6,数据库管理系统对动态存储区的动态数据进行更新存储,且动态存储区为多个持续更新的工况数据区;

步骤7,数据库管理系统对参数区数据更新保存及读取,且数据库管理系统对工况数据区更新保存及读取;

步骤8,MCU收到IAP和ISP命令,响应后更新IAP数据区和ISP数据区的数据更新写入,在自动加载过程中,读取MCU内相应的固件块原始数据,对嵌入式设备开始升级操作。

其中,所述步骤5包括步骤51和步骤52,所述步骤51为IAP数据区和ISP数据区的更新,且所述步骤52为参数区更新;所述步骤51具体为:

步骤511,当IAP数据区和ISP数据区接收更新数据时,数据库管理系统通过API接口写入IAP数据区和ISP数据区;

步骤512,数据库管理系统对IAP数据区和ISP数据区的数据进行校验;若校验不通过,则IAP数据区和ISP数据区的信息更新标志无效;若校验通过,则执行步骤513;

步骤513,在IAP数据区和ISP数据区更新进程中,数据库管理系统操作API接口调用Flash写入驱动,刷新IAP数据区和ISP数据区,且更新升级标志。

其中,所述步骤52的具体步骤如下:

步骤521,数据库管理系统通过API接口调用Flash写驱动,将待更新数据写入预留备份区;

步骤522,写入完成后API接口调用Flash读驱动读取新参数信息;

步骤523,检验更新数据的完整与正确;若数据校验通过,数据库管理系统对比预留备份区参数与旧参数区数据,如果有变动,则擦除参数区数据,数据库管理系统再从预留备份区读取新数据写入参数区;如果无变动,则不擦写参数区;若数据校验不通过,则返回,重新进行参数读写。

其中,所述步骤6的具体步骤如下:

步骤61,数据库管理系统通过API接口调用Flash读驱动,工况数据区从指针区读取当前指针的位置;

步骤62,当前指针的位置指向最后一次保存工况数据的写入节点;

步骤63,检测写入节点的位置,如果当前写入节点不在工况数据区,工况数据区无效,则为空数据状态;如果当前写入节点在工况数据区,则判断写入指针是否是跨越扇区;如果工况数据区剩余不足写入数据,则将写入数据覆盖,搜索保存下一个工况数据区,且继续检测写入节点的位置;

步骤64,如果判断写入指针是跨越扇区,则数据库管理系统调用Flash擦除驱动擦除新扇区后,执行步骤65;如果判断写入指针不是跨越扇区,则执行步骤65;

步骤65,以64字节为单位将工况数据区的数据帧拆分并加以校验,在一帧数据保存完整时,数据库管理系统通过API接口调用Flash写驱动,将当前写指针与读指针保存到指针区中,再将当前写入节点写入读写指针区。

其中,所述步骤3中,所述功能区域还包括开放为调试人员进行读写测试的调试区和用于数据存储的用户数据区。

其中,所述步骤3中,所述指针区包括指针存放区和掉电备份区,所述指针存放区存储当前读写指针,且所述掉电备份区保存上一次存储数据的完整。

其中,所述IAP数据区包括IAP固件版本、IAP固件大小、IAP固件硬件型号、IAP固件数据、IAP固件加密和IAP固件校验;所述ISP数据区包括ISP固件版本、ISP固件大小、ISP固件硬件型号、ISP固件数据、ISP固件加密和ISP固件校验;所述参数区包括出厂序列号、蓝牙默认名称、告警开关和告警阀值;所述工况数据区包括里程、油耗、RTC时间、综合数据、警情信息、快照和OBD数据。

其中,所述步骤2中,所述Flash信息包括芯片类型、芯片空间大小、页大小、扇区大小和扇区数量;所述Flash操作驱动包括Flash在SPI总线的装载与卸载、Flash制造商ID识别、Flash擦除、Flash连续多字节读写及Flash睡眠与唤醒;且所述步骤3中,数据库管理系统管理的内容包括提供Flash块区域擦除、读写功能管理函数API、Flash地址读写校验、数据校验以及封装、IAP数据区和ISP数据区升级程序信息管理、参数信息保存更新管理、工况信息记录保存读取管理、调试区信息读写管理及预留备份区读写管理。

其中,所述API接口的函数包括Flash初始化、Flash信息查询、Flash芯片擦除、功能区域大小擦除、Flash读函数、Flash写函数、Flash掉电及唤醒。

其中,所述OBD数据的记录方式为回滚式记录。

本发明的有益效果是:

与现有技术相比,本发明的蓝牙OBD长时间数据保存实现方法,基于Cortex-M3主控MCU、SPI总线硬件及存储芯片Flash,通过软件创建小型的数据库管理系统。数据库管理系统针对Flash内部存储不同数据信息的保存要求进行功能区域划分、数据擦除、更新、读写等操作。通过对Flash平衡写入处理、历史数据回滚机制,增加工况数据区保存数据量,减轻Flash擦写次数以达到延长Flash使用寿命,实现对蓝牙OBD长时间数据保存。本发明的软件程序高度集成模块化,可移植性好,有良好的拓展API接口,具备数据信息安全以及掉电保护功能,属于轻型数据库管理系统,比FATFS更加节省代码和RAM空间。

附图说明

图1为本发明蓝牙OBD长时间数据保存实现方法的流程图;

图2为本发明步骤S51的流程图;

图3为本发明步骤S52的流程图;

图4为本发明步骤S6的流程图;

图5为本发明功能区域的第一方框示意图;

图6为本发明功能区域的第二方框示意图。

具体实施方式

为了更清楚地表述本发明,下面结合附图对本发明作进一步地描述。

参阅图1,本发明一种蓝牙OBD长时间数据保存实现方法,包括以下具体步骤:

步骤S1,初始化Cortex-M3主控MCU的SPI总线硬件;使得SPI总线硬件能够给MCU提供SPI时序接口、SPI通讯读写数据功能API。

步骤S2,挂载应用在蓝牙OBD上的存储芯片Flash,初始化Flash信息及Flash操作驱动;该步骤提供基于SPI驱动类型的Flash驱动。

步骤S3,初始化数据库管理系统,数据库管理系统针对Flash内部存储不同数据信息的保存要求进行功能区域划分,且功能区域包括静态存储区、动态存储区、预留备份区和指针区;

步骤S4,数据库管理系统进行分配Flash块区域的起始地址及各功能区域大小;

步骤S5,数据库管理系统对静态存储区数据进行更新,且静态存储区包括IAP数据区、ISP数据区及非持续读写的参数区;

步骤S6,数据库管理系统对动态存储区的动态数据进行更新存储,且动态存储区为多个持续更新的工况数据区;

步骤S7,数据库管理系统对参数区数据更新保存及读取,且数据库管理系统对工况数据区更新保存及读取;

步骤S8,MCU收到IAP和ISP命令,响应后更新IAP数据区和ISP数据区的数据更新写入,在自动加载过程中,读取MCU内相应的固件块原始数据,对嵌入式设备开始升级操作。

Cotex-M3是一个32位处理器内核,处理器采用ARMv7-M架构,其内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。Cotex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖,这样一来数据访问不再占用指令总线,从而提升了性能,为实现这个特性,Cotex-M3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。

与现有技术相比,本发明的蓝牙OBD长时间数据保存实现方法,基于Cortex-M3主控MCU、SPI总线硬件及存储芯片Flash,通过软件创建小型的数据库管理系统。数据库管理系统针对Flash内部存储不同数据信息的保存要求进行功能区域划分、数据擦除、更新、读写等操作。通过对Flash平衡写入处理、历史数据回滚机制,增加工况数据区保存数据量,减轻Flash擦写次数以达到延长Flash使用寿命,实现对蓝牙OBD长时间数据保存。本发明的软件程序高度集成模块化,可移植性好,有良好的拓展API接口,具备数据信息安全以及掉电保护功能,属于轻型数据库管理系统,比FATFS更加节省代码和RAM空间。

本发明可以从工况数据区保存角度评测数据保存时间,如当前设备Flash容量最大2M(Bytes)并预留1M(Bytes)保存工况数据,即数据保存区间大小为1024*1024=1048576字节。假设每帧数据长度为200字节,保存频率默认为30秒保存一次,即写满数据区间时间约为1048576/200*30=157286.4秒,约连续不间断保存工作43.7小时,之后新数据开始从最早第一条数据覆盖。同理升级Flash容量,如果Flash最大容量8M(Bytes),可预留7M(Bytes)数据保存空间,写满数据区间时间约为7*43.7≈305.9小时,即连续不间断保存工作12.7天。

本发明还可以从Flash使用寿命角度评测数据保存时间,如Flash擦写次数典型值为10万次,同样每帧数据以200字节,写入频率30秒保存一次,即Flash使用寿命时间约为4096/200*30*100000≈61440000秒,约711天。同理升级Flash容量,如果Flash最大容量8M(Bytes),可预留7M(Bytes)数据保存空间,那么相应Flash使用寿命延长约为711*7=4977天。

请参阅图2,步骤S5包括步骤S51和步骤S52,步骤S51为IAP数据区和ISP数据区的更新,且步骤S52为参数区更新;步骤S51具体为:

步骤S511,当IAP数据区和ISP数据区接收更新数据时,数据库管理系统通过API接口写入IAP数据区和ISP数据区;

步骤S512,数据库管理系统对IAP数据区和ISP数据区的数据进行校验;若校验不通过,则IAP数据区和ISP数据区的信息更新标志无效;若校验通过,则执行步骤S513;

步骤S513,在IAP数据区和ISP数据区更新进程中,数据库管理系统操作API接口调用Flash写入驱动,刷新IAP数据区和ISP数据区,且更新升级标志。

请参阅图3,步骤S52的具体步骤如下:

步骤S521,数据库管理系统通过API接口调用Flash写驱动,将待更新数据写入预留备份区;

步骤S522,写入完成后API接口调用Flash读驱动读取新参数信息;

步骤S523,检验更新数据的完整与正确;若数据校验通过,数据库管理系统对比预留备份区参数与旧参数区数据,如果有变动,则擦除参数区数据,数据库管理系统再从预留备份区读取新数据写入参数区;如果无变动,则不擦写参数区,减小对Flash擦除的次数;若数据校验不通过,则返回,重新进行参数读写。

请参阅图4,步骤S6的具体步骤如下:

步骤S61,数据库管理系统通过API接口调用Flash读驱动,工况数据区从指针区读取当前指针的位置;

步骤S62,当前指针的位置指向最后一次保存工况数据的写入节点;

步骤S63,检测写入节点的位置,如果当前写入节点不在工况数据区,工况数据区无效,则为空数据状态;如果当前写入节点在工况数据区,则判断写入指针是否是跨越扇区;如果工况数据区剩余不足写入数据,则将写入数据覆盖,搜索保存下一个工况数据区,且继续检测写入节点的位置;

步骤S64,如果判断写入指针是跨越扇区,则数据库管理系统调用Flash擦除驱动擦除新扇区后,执行步骤S65;如果判断写入指针不是跨越扇区,则执行步骤S65;

步骤S65,以64字节为单位将工况数据区的数据帧拆分并加以校验,在一帧数据保存完整时,数据库管理系统通过API接口调用Flash写驱动,将当前写指针与读指针保存到指针区中,再将当前写入节点写入读写指针区。

本实施例中,步骤S3中,功能区域还包括开放为调试人员进行读写测试的调试区和用于数据存储的用户数据区。

本实施例中,步骤S3中,指针区包括指针存放区和掉电备份区,指针存放区存储当前读写指针,且掉电备份区保存上一次存储数据的完整。即使掉电,依然可以保证上一次存储数据的完整,并且具有历史记录功能。在工况数据区域剩余不足写入数据时,将写入数据覆盖,并且搜索保存下一条合法写入地址,合法写入地址即在规划的工况数据区范围内。动态数据存储方式充分利用Flash空间,以及实现了掉电保存。

本发明的长时间数据保存是数据库核心部分,数据块保存框架结构方式采用链表式,将功能区域还划分有2部分,如图6,区域一是单独分配2扇区(2*4096字节)存储历史读写指针,其中一扇区作为当前操作指针存放区,一扇区作为掉电备份区。区域二是将剩余部分作为数据存储,为用户数据区,该部分以64字节为一单元。每一单元的数据输入其中前8字节为校验格式数据,后面56字节为用户实际写入数据。每一帧占用单元数、字节长度信息可以完整保留在校验数据中,保护数据的完整。每次操作读写一单元数据,则再次修改区域一的读写指针,这样保证掉电数据可恢复工况数据在Flash存储读写位置。

请参阅图5,IAP数据区包括IAP固件版本、IAP固件大小、IAP固件硬件型号、IAP固件数据、IAP固件加密和IAP固件校验;ISP数据区包括ISP固件版本、ISP固件大小、ISP固件硬件型号、ISP固件数据、ISP固件加密和ISP固件校验;参数区包括出厂序列号、蓝牙默认名称、告警开关和告警阀值;工况数据区包括里程、油耗、RTC时间、综合数据、警情信息、快照和OBD数据。

蓝牙OBD数据为回滚式记录,减轻对Flash指定部分重复擦写,维护Flash使用寿命以实现长时间数据保存更新。如果有多种工况记录需求,可以开辟多个工况记录区间,作为工况数据存储管理。该部分存放的数据量与Flash分配区间大小有关,其回滚机制到初始指针溢出与Flash分配区间大小、数据保存频率、数据长度有关,即Flash分配空间越大,更新保存数据频率越慢,数据越短,那么当前保存数据信息的条数越多。

本实施例中,步骤S2中,Flash信息包括芯片类型、芯片空间大小、页大小、扇区大小和扇区数量;Flash操作驱动包括Flash在SPI总线的装载与卸载、Flash制造商ID识别、Flash擦除、Flash连续多字节读写及Flash睡眠与唤醒;且步骤S3中,数据库管理系统管理的内容包括提供Flash块区域擦除、读写功能管理函数API、Flash地址读写校验、数据校验以及封装、IAP数据区和ISP数据区升级程序信息管理、参数信息保存更新管理、工况信息记录保存读取管理、调试区信息读写管理及预留备份区读写管理。

本实施例中,API接口的函数包括Flash初始化、Flash信息查询、Flash芯片擦除、功能区域大小擦除、Flash读函数、Flash写函数、Flash掉电及唤醒。

本实施例中,OBD数据的记录方式为回滚式记录。通过回滚式的写入,使Flash写操作具备平衡机制,延长Flash使用寿命,有利于长时间保持数据。

本发明的蓝牙OBD长时间数据保存实现方法,采用SPI总线Flash控制技术、Flash存储器嵌入式轻型管理系统技术、数据存储稳定性与安全性技术。以CortexM3主控SPI总线通讯方式,实现对通用SPI总线Flash存储数据控制系统规范化。利用Flash数据存储管理系统模式,实现对用户不同功能数据更新存储要求。用户在需增加、删减或者更换数据功能区情况下,可以由该技术对FLASH迅速分区管理并且拓展相应的操作API接口,使用户仅专注于本身数据功能需求的调整。由于该方案具有通用可移植性,此技术不仅可用于蓝牙OBD数据长时间保存案例上,也可以拓展到关于嵌入式开发信息数据存储管理的其他案例。

本发明的具体优势在于:

1)ISP/IAP数据管理,分配IAP/ISP空间,保存IAP/ISP数据更新标志,程序固件的版本,IAP/ISP程序数据块大小,程序固件数据内容、固件加密方式、固件校验码等信息。该功能作为程序升级更新备份缓存区,根据更新标志命令实现该区域固件数据更新嵌入式设备最新程序,实现本地或者远程升级的功能;

2)蓝牙OBD工作参数保存,保存蓝牙OBD默认的参数信息,例如序列号,蓝牙名称等。参数区读写非连续性,分配适当的区间保存用户设置蓝牙OBD参数即可。根据不同的参数设置获取需求,可以开辟多个参数区间;

3)蓝牙OBD工况数据长时间记录更新保存。该部分管理持续性数据更新,如综合数据,警情信息,快照等。蓝牙OBD数据的为回滚式记录,减轻对Flash指定部分重复擦写,维护Flash使用寿命以实现长时间数据保存更新。如果有多种工况记录需求,可以开辟多个工况记录区间,作为工况数据存储管理。该部分存放的数据量与Flash分配区间大小有关,其回滚机制到初始指针溢出与Flash分配区间大小、数据保存频率、数据长度有关。即Flash分配空间越大,更新保存数据频率越慢,数据越短,那么当前保存数据信息的条数越多。

以上公开的仅为本发明的几个具体实施例,但是本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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