数据标定内容的存储和读取

简介: 数据标定内容的存储和读取

XCP的主要应用于测量和标定ECU内部参数。此协议能够使数据采集工作与ECU内部运行的任务和中断同步,从而保证每当ECU软件更新参数时,能快速采集到所需的参数值。据标定数据要实现掉电存储的要求,需要为 RAM中的标定参数建立一个RAM-EEPROM的关联列表。列表中的具体元素为:EEPROM地址(相对于起始地址的偏移量)、RAM地址(标定参数在ECU中的 地址,“&+变量名”的形式可直接获得)、标定参数的长度和标定参数的数据类型。数据标定任务可细分为三部分。上电标定参数更新读入、上位机对ECU中 RAM地址的直接标定和运行过程中RAM-EEPROM参数关联列表的更新。上电时,标定参数处于初始化状态,其参数直接来源于程序烧写完成时的数 值。断电之前标定的参数需要更新到RAM中才能保证之后运行的参数值是上次 标定后的数值。因此数据更新时,将EEPROM中的存储值直接读出更新到RAM 中即可。但若标定参数都未被标定过,则不需要标定参数的读出更新。如下图 所示,处理的方法是在数据读出更新之前,读出EEPROM特定位置的标定更新标 志位,若标定更新标志不存在,则不需要将数据读出更新到RAM。该任务在主函 数初始化处被调用一次。

8bad86322ff5763814eba04cd5d768f5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

上位机对ECU中RAM地址的直接标定主要是在CCP命令指导下完成的。

数据在RAM中标定更新后可满足正常的控制运行,但数据仍需要更新到对 应的EEPROM中才可实现掉电存储。如下图所示,在主函数中查询更新EEPROM 标志位,以判断是否需要更新数据到EEPROM。在数据更新到EEPROM之前, 向EEPROM的特定地址处写入一个标志,表示有数据更新到EEPROM,以方便 下次上电时辨别标志读取最新的标定数据。读入RAM-EEPROM关联列表的信息, 将地址偏移、数据类型、数据长度、数据值写入缓存,置写EEPROM中断标志, 在中断函数中完成数据更新EEPROM的操作。整个任务在主函数中被调用,设定 任务时间为100ms,减少不必要更新查询

04ed1028b68f6da9f9d24baf75f677c5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

相关文章
|
6月前
|
编解码 API 计算机视觉
opencv从视频文件读取视频内容,从摄像头读取保存视频内容
opencv从视频文件读取视频内容,从摄像头读取保存视频内容
|
存储 编译器 C语言
数据的存储--深度解剖数据在内存中的存储(上)
数据的存储--深度解剖数据在内存中的存储(上)
|
6月前
|
存储 定位技术 C++
C++中GDAL批量读取大量栅格遥感影像文件并生成各像元在不同文件中数值的时间序列数组
C++中GDAL批量读取大量栅格遥感影像文件并生成各像元在不同文件中数值的时间序列数组
101 1
|
11月前
|
C++
C++文件的随机读写与特定格式输入输出
C++文件的随机读写与特定格式输入输出
69 0
|
数据处理 索引 Python
使用Rasterio读取栅格数据
有没有觉得用GDAL的Python绑定书写的代码很不Pythonic,强迫症的你可能有些忍受不了。不过,没关系,MapBox旗下的开源库Rasterio帮我们解决了这个痛点。 Rasterio是基于GDAL库二次封装的更加符合Python风格的主要用于空间栅格数据处理的Python库。
189 0
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
从文件1中读取数据,修改数据的内容,然后存入文件2中,再从文件2中把数据读取出来显示在屏幕上
151 0
|
存储 编译器 程序员
数据的存储--深度解剖数据在内存中的存储(下)
数据的存储--深度解剖数据在内存中的存储(下)
c++ 读取 .tfw 文件数据(读取 .tif 影像中的投影信息)
c++ 读取 .tfw 文件数据(读取 .tif 影像中的投影信息)
|
移动开发 关系型数据库 atlas
空间转录组|数据读入,标准数据形式外,还有哪些"天残地缺"可以读取
空间转录组|数据读入,标准数据形式外,还有哪些"天残地缺"可以读取
1496 0
|
存储 IDE 数据挖掘
TCGA | 以项目方式管理代码数据 以及 数据读取存储
TCGA | 以项目方式管理代码数据 以及 数据读取存储
188 0