一种单片机系统MAP数据标定方法.pdf

上传人:111****112 文档编号:4249702 上传时间:2018-09-12 格式:PDF 页数:11 大小:352.66KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110277714.3

申请日:

2011.09.19

公开号:

CN102446138A

公开日:

2012.05.09

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 12/06申请日:20110919|||公开

IPC分类号:

G06F12/06

主分类号:

G06F12/06

申请人:

清华大学; 常州易控汽车电子有限公司

发明人:

方成; 李进; 杨福源; 欧阳明高

地址:

100084 北京市海淀区清华园1号清华大学汽车工程系

优先权:

专利代理机构:

北京纪凯知识产权代理有限公司 11245

代理人:

徐宁;关畅

PDF下载: PDF下载
内容摘要

本发明涉及一种单片机系统MAP数据标定方法,其特征在于:它包括步骤1)在单片机内存中设置若干个区域;2)在单片机内存中保存所有MAP的原始数据;3)在单片机内存中保存每个MAP的起始地址和占用空间大小;4)在单片机内存中保存每个MAP的索引序号;5)在系统初始化时,建立并初始化一个MAP指针数组;6)在线标定过程中,把正在标定的MAP从单片机内的FLASH拷贝到单片机内的RAM内,在RAM中对相应的数据进行修改;7)通过查询相应的MAP指针,得到该MAP当前存放空间的起始地址,从而对以该起始地址开始的,相应空间大小的内存区域中的数据,进行查表插值操作。采用本发明可以降低单片机系统的复杂程度和制造成本。

权利要求书

1: 一种单片机系统 MAP 数据标定方法, 其特征在于 : 它包括以下步骤 : 1) 在单片机内存中设置若干个区域, 包括以下步骤 : ①根据 MAP 的数据总量的大小设置一块内存区域, 作为标定 FLASH ; ②根据一次能够标定的 MAP 数据量的大小设置一块内存区域, 作为标定 RAM ; ③根据 MAP 的个数设置一块内存区域, 作为信息 FLASH ; ④根据 MAP 的数据总量的大小设置一块内存区域, 作为索引 FLASH ; 2) 在由步骤 1) 设置的标定 FLASH 区域内保存所有 MAP 的原始数据 ; 3) 通过已有的工具软件获取每个 MAP 在标定 FLASH 中存放的起始地址和占用空间大 小, 将其保存在由步骤 1) 设置的信息 FLASH 区域内 ; 4) 通过已有的工具软件获取标定 FLASH 区域内每个字节所保存的 MAP 的索引序号, 将 其保存在由步骤 1) 设置的索引 FLASH 区域内 ; 5) 在系统初始化时, 建立并初始化一个 MAP 指针数组, 包括以下步骤 : ①在 MAP 管理模块中, 设置一个指针数组, 该数组元素的下标为 MAP 的索引序号, 数组 元素的个数与 MAP 的个数相同, 数组元素为指针, 指向 MAP 在内存中存放空间的起始地址 ; ②在系统初始化时, 根据 MAP 个数, 依次从信息 FLASH 中获取每个 MAP 在标定 FLASH 中 的起始地址, 然后, 将步骤①中的各个 MAP 指针, 分别指向各个 MAP 在标定 FLASH 中的起始 地址 ; 如果需要对 MAP 数据进行修改, 进入步骤 6) ; 如果需要对 MAP 数据进行查询, 进入步骤 7) ; 6) 在线标定过程中, 把正在标定的 MAP 从单片机内的 FLASH 拷贝到单片机内的 RAM 内, 在 RAM 中对相应的数据进行修改, 包括以下步骤 : ① PC 机上的标定工具软件与单片机系统建立连接后, 在标定工具软件中对一个 MAP 中 的一个数据进行修改, 此时, 标定工具软件计算该数据点相对于该 MAP 起始地址的地址偏 移, 然后根据该 MAP 在标定 FLASH 中的起始地址, 进一步确定该数据点在标定 FLASH 中存放 的地址, 标定工具软件把该地址和修改后的数据发送给单片机 ; ②单片机根据由步骤①标定工具软件发送来的地址, 查询索引 FLASH 内对应地址中所 保存的 MAP 索引序号, 然后根据这个索引序号, 访问信息 FLASH 内结构体数组中下标为此索 引序号的元素, 继而得到该 MAP 在标定 FLASH 内的起始地址和占用空间大小 ; ③单片机根据步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 指针当前 指向的地址 : 如果该地址位于标定 FLASH 内, 进入步骤④ ; 如果该地址位于标定 RAM 内, 进入步骤⑤ ; ④根据步骤②获得的起始地址和占用空间大小, 单片机将位于标定 FLASH 中以该起始 地址开始的, 相应空间大小内的数据全部拷贝到标定 RAM 的空白区域中 ; 记录当前标定 RAM 区域中使用的空间大小 ; 然后修改该 MAP 的指针, 使其指向标定 RAM 区域内该 MAP 存放空间 的起始地址, 进入步骤⑤ ; ⑤已知需要修改的数据点在标定 FLASH 中的存放地址, 单片机根据该数据点所在 MAP 在标定 FLASH 内的起始地址和在标定 RAM 内的起始地址, 得到该数据点在标定 RAM 中的存 放地址, 将该地址内的数据修改为更新后的数据 ; 2 7) 已知 MAP 在 FLASH 中的起始地址和占用空间大小, 通过查询相应的 MAP 指针, 得到该 MAP 当前存放空间的起始地址, 从而对以该起始地址开始的, 相应空间大小的内存区域中的 数据, 进行查表插值操作, 包括以下步骤 : ①单片机把 MAP 在标定 FLASH 中的起始地址作为参数传递给查表插值函数 ; ②查表插值函数根据由步骤①获得的起始地址, 查询索引 FLASH 内对应地址中所保存 的 MAP 索引序号 ; ③单片机根据由步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 当前存 放空间的起始地址 ; ④基于由步骤③获得的起始地址, 对相应空间大小的内存区域中的数据, 进行查表插 值操作, 结束。
2: 如权利要求 1 所述的一种单片机系统 MAP 数据标定方法, 其特征在于 : 所述步骤 3) 中, 通过已有的 MAP 存储分析软件获取每个 MAP 在标定 FLASH 中存放的起始地址和占用空 间大小。
3: 如权利要求 1 所述的一种单片机系统 MAP 数据标定方法, 其特征在于 : 所述步骤 4) 中, 通过已有的 MAP 存储分析软件获取标定 FLASH 区域内每个字节所保存的 MAP 的索引序 号。
4: 如权利要求 2 所述的一种单片机系统 MAP 数据标定方法, 其特征在于 : 所述步骤 4) 中, 通过已有的 MAP 存储分析软件获取标定 FLASH 区域内每个字节所保存的 MAP 的索引序 号。
5: 如权利要求 1 或 2 或 3 或 4 任一项所述的一种单片机系统 MAP 数据标定方法, 其特 征在于 : 所述步骤 4) 中, 在索引 FLASH 内, 每个字节存放一个索引序号。
6: 如权利要求 1 或 2 或 3 或 4 任一项所述的一种单片机系统 MAP 数据标定方法, 其特 征在于 : 所述步骤 4) 中, 当 MAP 个数大于 255 时, 在索引 FLASH 内, 每两个字节存放一个索 引序号。
7: 如权利要求 1 或 2 或 3 或 4 任一项所述的一种单片机系统 MAP 数据标定方法, 其特 征在于 : 所述步骤 3) 中, 采用结构体数组保存每个 MAP 的起始地址和占用空间大小 ; 该数 组元素的下标为 MAP 的索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为结构体, 包括两个成员 : MAP 占用空间大小和 MAP 在标定 FLASH 内的起始地址。
8: 如权利要求 5 所述的一种单片机系统 MAP 数据标定方法, 其特征在于 : 所述步骤 3) 中, 采用结构体数组保存每个 MAP 的起始地址和占用空间大小 ; 该数组元素的下标为 MAP 的 索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为结构体, 包括两个成员 : MAP 占用 空间大小和 MAP 在标定 FLASH 内的起始地址。
9: 如权利要求 6 所述的一种单片机系统 MAP 数据标定方法, 其特征在于 : 所述步骤 3) 中, 采用结构体数组保存每个 MAP 的起始地址和占用空间大小 ; 该数组元素的下标为 MAP 的 索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为结构体, 包括两个成员 : MAP 占用 空间大小和 MAP 在标定 FLASH 内的起始地址。

说明书


一种单片机系统 MAP 数据标定方法

    【技术领域】
     本发明涉及一种 MAP 数据标定方法, 特别是关于一种用于小容量 RAM 单片机系统 中的 MAP 数据标定方法。背景技术
     在汽车电子领域, 嵌入式系统大都使用单片机作为控制核心。由于控制系统的复 杂性和对象的多样性, 单片机系统中有大量的参数无法在系统设计时确定, 需要在系统开 发完成后通过匹配标定来确定。而这种匹配标定, 往往是利用 PC 机上的标定工具软件, 通 过基于总线的协议与单片机系统建立连接, 将标定工具软件上的操作, 传送给单片机, 由单 片机完成相应的操作。在单片机内的 FLASH 上, 保存有这些需要标定的参数即 MAP 的初始 值; 通过基于总线的协议接收标定工具软件的操作, 对 MAP 进行数据更新 ; 由于 FLASH 中的 数值只能通过 FLASH 编程软件才能更新, 而在运行 FLASH 编程软件的时候, 一般不能同时执 行读取 FLASH 的程序, 需要停止正常程序的运行, 进入专门的 FLASH 编程模块, 因此这种方 式无法支持 MAP 的在线标定 ; 针对这个问题, 目前常用的解决方案是把 MAP 数据从单片机 内的 FLASH 中拷贝到单片机内的 RAM 中, 在线标定的时候, 修改的是 RAM 中的 MAP 数据, 通 过数据查询函数, 检测到 MAP 数据修改后的结果。但是, 这种方法也有缺陷 : 由于单片机片 内的 RAM 容量往往很小, 而一些嵌入式系统中需要标定的 MAP 很多, 例如发动机的控制系 统 ESP、 变速箱的控制系统 ABS 和汽车动力学控制系统 TCS 等, 往往无法把所有的 MAP 数据 从单片机内的 FLASH 中全部拷贝到单片机内的 RAM 中。目前, 对此常用的解决方法有两种 : 一是在单片机的外部扩展 RAM 用于标定, 这需要在单片机管脚上把地址总线和数据总线引 出, 占用了大量的管脚资源, 而且会使系统的电磁兼容性恶化, 增加系统成本 ; 二是通过分 块标定, 把所有的标定 MAP 分块, 一次标定只把一块区域的 MAP 数据拷贝到单片机内的 RAM 中, 因此一次只能标定一块区域内的 MAP 数据, 这种方法局限性很大, 事先无法确定一次标 定需要修改多少 MAP, 在 MAP 分区的时候也就无法选择一种适应整个标定阶段的划分方法, 并且需要在多个标定页之间来回切换, 而对于这种在线切换, 会将先前进行的标定工作丢 失。 发明内容
     针对上述问题, 本发明的目的是提供一种能够较好地支持单片机系统, 特别是小 容量 RAM 单片机系统在线标定的单片机系统 MAP 数据标定方法。
     为实现上述目的, 本发明采取以下技术方案 : 一种单片机系统 MAP 数据标定方法, 其特征在于 : 它包括以下步骤 :
     1) 在单片机内存中设置若干个区域, 包括以下步骤 :
     ①根据 MAP 的数据总量的大小设置一块内存区域, 作为标定 FLASH ;
     ②根据一次能够标定的 MAP 数据量的大小设置一块内存区域, 作为标定 RAM ;
     ③根据 MAP 的个数设置一块内存区域, 作为信息 FLASH ;④根据 MAP 的数据总量的大小设置一块内存区域, 作为索引 FLASH ;
     2) 在由步骤 1) 设置的标定 FLASH 区域内保存所有 MAP 的原始数据 ;
     3) 通过已有的工具软件获取每个 MAP 在标定 FLASH 中存放的起始地址和占用空间 大小, 将其保存在由步骤 1) 设置的信息 FLASH 区域内 ;
     4) 通过已有的工具软件获取标定 FLASH 区域内每个字节所保存的 MAP 的索引序 号, 将其保存在由步骤 1) 设置的索引 FLASH 区域内 ;
     5) 在系统初始化时, 建立并初始化一个 MAP 指针数组, 包括以下步骤 :
     ①在 MAP 管理模块中, 设置一个指针数组, 该数组元素的下标为 MAP 的索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为指针, 指向 MAP 在内存中存放空间的起始地 址;
     ②在系统初始化时, 根据 MAP 个数, 依次从信息 FLASH 中获取每个 MAP 在标定 FLASH 中的起始地址, 然后, 将步骤①中的各个 MAP 指针, 分别指向各个 MAP 在标定 FLASH 中 的起始地址 ;
     如果需要对 MAP 数据进行修改, 进入步骤 6) ;
     如果需要对 MAP 数据进行查询, 进入步骤 7) ;
     6) 在线标定过程中, 把正在标定的 MAP 从单片机内的 FLASH 拷贝到单片机内的 RAM 内, 在 RAM 中对相应的数据进行修改, 包括以下步骤 :
     ① PC 机上的标定工具软件与单片机系统建立连接后, 在标定工具软件中对一个 MAP 中的一个数据进行修改, 此时, 标定工具软件计算该数据点相对于该 MAP 起始地址的地 址偏移, 然后根据该 MAP 在标定 FLASH 中的起始地址, 进一步确定该数据点在标定 FLASH 中 存放的地址, 标定工具软件把该地址和修改后的数据发送给单片机 ;
     ②单片机根据由步骤①标定工具软件发送来的地址, 查询索引 FLASH 内对应地址 中所保存的 MAP 索引序号, 然后根据这个索引序号, 访问信息 FLASH 内结构体数组中下标为 此索引序号的元素, 继而得到该 MAP 在标定 FLASH 内的起始地址和占用空间大小 ;
     ③单片机根据步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 指针 当前指向的地址 :
     如果该地址位于标定 FLASH 内, 进入步骤④ ;
     如果该地址位于标定 RAM 内, 进入步骤⑤ ;
     ④根据步骤②获得的起始地址和占用空间大小, 单片机将位于标定 FLASH 中以该 起始地址开始的, 相应空间大小内的数据全部拷贝到标定 RAM 的空白区域中 ; 记录当前标 定 RAM 区域中使用的空间大小 ; 然后修改该 MAP 的指针, 使其指向标定 RAM 区域内该 MAP 存 放空间的起始地址, 进入步骤⑤ ;
     ⑤已知需要修改的数据点在标定 FLASH 中的存放地址, 单片机根据该数据点所在 MAP 在标定 FLASH 内的起始地址和在标定 RAM 内的起始地址, 得到该数据点在标定 RAM 中的 存放地址, 将该地址内的数据修改为更新后的数据 ;
     7) 已知 MAP 在 FLASH 中的起始地址和占用空间大小, 通过查询相应的 MAP 指针, 得 到该 MAP 当前存放空间的起始地址, 从而对以该起始地址开始的, 相应空间大小的内存区 域中的数据, 进行查表插值操作, 包括以下步骤 :
     ①单片机把 MAP 在标定 FLASH 中的起始地址作为参数传递给查表插值函数 ;②查表插值函数根据由步骤①获得的起始地址, 查询索引 FLASH 内对应地址中所 保存的 MAP 索引序号 ;
     ③单片机根据由步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 当 前存放空间的起始地址 ;
     ④基于由步骤③获得的起始地址, 对相应空间大小的内存区域中的数据, 进行查 表插值操作, 结束。
     上述步骤 3) 中, 通过已有的 MAP 存储分析软件获取每个 MAP 在标定 FLASH 中存放 的起始地址和占用空间大小。
     上述步骤 4) 中, 通过已有的 MAP 存储分析软件获取标定 FLASH 区域内每个字节所 保存的 MAP 的索引序号。
     上述步骤 4) 中, 在索引 FLASH 内, 每个字节存放一个索引序号。
     上述步骤 4) 中, 当 MAP 个数大于 255 时, 在索引 FLASH 内, 每两个字节存放一个索 引序号。
     上述步骤 3) 中, 采用结构体数组保存每个 MAP 的起始地址和占用空间大小 ; 该数 组元素的下标为 MAP 的索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为结构体, 包括两个成员 : MAP 占用空间大小和 MAP 在标定 FLASH 内的起始地址。 本发明由于采取以上技术方案, 其具有以下优点 : 1、 由于本发明只把需要标定的 MAP 数据在线实时地拷贝到 RAM 中, 从而占用的 RAM 空间较小, 解决了小容量 RAM 单片机系 统标定大量数据的问题。2、 由于本发明能够在线标定所有需要标定的 MAP 数据, 解决了现 有的因分块标定或 RAM 空间不够不能一次标定所有 MAP 的问题。采用本发明可以降低单片 机系统的复杂程度和制造成本。
     附图说明
     图 1 是本发明单片机内存区域划分示意图 ; 图 2 为本发明初始化时的 MAP 指针示意图 ; 图 3 为本发明在线标定时的 MAP 指针示意图。具体实施方式
     如图 1 所示, 本发明方法包括以下步骤 :
     1) 在单片机内存中设置若干个区域 ;
     2) 在单片机内存中保存所有 MAP 的原始数据 ;
     3) 在单片机内存中保存每个 MAP 的起始地址和占用空间大小 ;
     4) 在单片机内存中保存每个 MAP 的索引序号 ;
     5) 在系统初始化时, 建立并初始化一个 MAP 指针数组 ;
     6) 在线标定过程中, 把正在标定的 MAP 从单片机内的 FLASH 拷贝到单片机内的 RAM 内, 在 RAM 中对相应的数据进行修改 ;
     7) 已知 MAP 在 FLASH 中的起始地址和占用空间大小, 通过查询相应的 MAP 指针, 得 到该 MAP 当前存放空间的起始地址, 从而对以该起始地址开始的, 相应空间大小的内存区 域中的数据, 进行查表插值操作。下面结合附图和实施例对本发明进行详细的描述。
     1) 在单片机内存中设置若干个区域, 包括以下步骤 :
     ①根据 MAP 的数据总量的大小设置一块内存区域, 作为标定 FLASH, 用于保存所有 的 MAP 数据。
     在本发明实施例中, 如图 1 所示, 将单片机内存中地址 0x140000 开始的 128K 空间 设置为标定 FLASH。
     ②根据一次能够标定的 MAP 数据量的大小设置一块内存区域, 作为标定 RAM, 用于 保存在线标定过程中更新过的 MAP 最新数据。
     在本发明实施例中, 如图 1 所示, 将单片机内存中地址 0x400000 开始的 64K 空间 设置为标定 RAM。
     ③根据 MAP 的个数设置一块内存区域, 作为信息 FLASH, 用于保存每个 MAP 在标定 FLASH 中的起始地址和该 MAP 的占用空间大小。
     在本发明实施例中, 如图 1 所示, 将单片机内存地址 0x100000 开始的 8K 空间设置 为信息 FLASH。
     ④根据 MAP 的数据总量的大小设置一块内存区域, 作为索引 FLASH, 用于保存标定 FLASH 对应地址所存放的 MAP 的索引序号。 在本发明实施例中, 如图 1 所示, 将单片机内存中地址 0x160000 开始的 128K 空间 设置为索引 FLASH。
     2) 在单片机内存中保存所有 MAP 的原始数据, 具体为 :
     在由步骤 1) 设置的标定 FLASH 区域内保存所有 MAP 的原始数据。
     3) 在单片机内存中保存每个 MAP 的起始地址和占用空间大小, 包括以下步骤 :
     ①通过已有的工具软件, 如 MAP 存储分析软件, 获取每个 MAP 在标定 FLASH 中存放 的起始地址和占用空间大小 ;
     ②将每个 MAP 在标定 FLASH 中的起始地址和占用空间大小保存在由步骤 1) 设置 的信息 FLASH 区域内。
     其中, 可以采用结构体数组记录每个 MAP 的起始地址和占用空间大小 ; 该数组元 素的下标为 MAP 的索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为结构体, 包括 两个成员 : MAP 占用空间大小和 MAP 在标定 FLASH 内的起始地址。
     上述结构体中, 可以采用一个 16 位变量记录 MAP 占用空间大小, 采用一个 32 位变 量记录 MAP 在标定 FLASH 内的起始地址。
     假 设 在 本 发 明 实 施 例 中, 标 定 FLASH 内 有 6 张 MAP, 第 一 张 MAP(MAP0) 保 存 在 0x140000 ~ 0x1400FF 的范围内, 第二张 MAP(MAP1) 保存在 0x140100 ~ 0x1401FF 的范围 内, 第三张 MAP(MAP2) 保存在 0x140200 ~ 0x1402FF 的范围内, 第四张 MAP(MAP3) 保存在 0x140300 ~ 0x1403FF 的范围内, 第五张 MAP(MAP4) 保存在 0x140400 ~ 0x1404FF 的范围内, 第六张 MAP(MAP5) 保存在 0x140500 ~ 0x1405FF 的范围内, 这 6 张 MAP 对应的 MAP 序号分 别为 0、 1、 2、 3、 4 和 5, 于是 : 信息 FLASH 中的结构体数组相应地包括六个数组元素, 数组元 素 0 为 {0x100, 0x140000}( 表示 MAP0 的大小为 0x100, 起始地址为 0x140000), 数组元素 1 为 {0x100, 0x140100}, 数组元素 2 为 {0x100, 0x140200}, 数组元素 3 为 {0x100, 0x140300}, 数组元素 4 为 {0x100, 0x140400}, 数组元素 5 为 {0x100, 0x140500}。
     4) 在单片机内存中保存每个 MAP 的索引序号, 包括以下步骤 :
     ①通过已有的工具软件, 如 MAP 存储分析软件, 获取标定 FLASH 区域内每个字节所 保存的 MAP 的索引序号 ( 从 0 开始 ) ;
     ②在由步骤 1) 设置的索引 FLASH 区域内, 以字节为单位存放标定 FLASH 对应地址 所存放的 MAP 的索引序号。
     其中, 如果 MAP 个数大于 255, 在索引 FLASH 内, 可以每两个字节存放一个索引序 号。
     在 本 发 明 实 施 例 中, 0x160000 ~ 0x1600FF 内 保 存 的 都 是 0, 0x1600100 ~ 0x1601FF 内保存的都是 1, 0x1600200 ~ 0x1602FF 内保存的都是 2, 0x1600300 ~ 0x1603FF 内保存的都是 3, 0x1600400 ~ 0x1604FF 内保存的都是 4, 0x1600500 ~ 0x1605FF 内保存的 都是 5。
     5) 在系统初始化时, 建立并初始化一个 MAP 指针数组, 包括以下步骤 :
     ①在 MAP 管理模块中, 设置一个指针数组, 该数组元素的下标为 MAP 的索引序号, 数组元素的个数与 MAP 的个数相同, 数组元素为指针, 指向 MAP 在内存中存放空间的起始地 址, 用于表示 MAP 保存在以该起始地址开始的内存区域内 ; ②在系统初始化时, 根据 MAP 个数, 依次从信息 FLASH 中获取每个 MAP 在标定 FLASH 中的起始地址, 然后, 将步骤①中的各个 MAP 指针, 分别指向各个 MAP 在标定 FLASH 中 的起始地址 ;
     如果需要对 MAP 数据进行修改, 进入步骤 6) ;
     如果需要对 MAP 数据进行查询, 进入步骤 7)。
     在本发明实施例中, 如图 2 所示, 系统初始化后, MAP 指针指向的地址依次为 : MAP0 指针指向 0x140000, MAP1 指针指向 0x140100, MAP2 指针指向 0x140200, MAP3 指针指向 0x140300, MAP4 指针指向 0x140400, MAP5 指针指向 0x140500。
     6) 在线标定过程中, 把正在标定的 MAP 从单片机内的 FLASH 拷贝到单片机内的 RAM 内, 在 RAM 中对相应的数据进行修改, 包括以下步骤 :
     ① PC 机上的标定工具软件与单片机系统建立连接后, 在标定工具软件中对一 MAP 中的一个数据进行修改, 此时, 标定工具软件计算该数据点相对于所在 MAP 起始地址的地 址偏移, 然后根据该 MAP 在标定 FLASH 中的起始地址, 进一步确定该数据点在标定 FLASH 中 的存放地址, 标定工具软件把该地址和修改后的数据发送给单片机 ;
     在本发明实施例中, 假设对 MAP2 中的一个数据点进行修改, 标定工具软件计算该 点相对于 MAP 起始地址的地址偏移为 0x10, 因为 MAP2 保存在标定 FLASH 中以地址 0x140200 开始的内存区域, 且修改后的数据为 0x66, 那么标定工具软件把 0x140210 和 0x66 发送给单 片机 ;
     ②单片机根据由步骤①标定工具软件发送来的地址, 查询索引 FLASH 内对应地址 中所保存的 MAP 索引序号, 然后根据这个索引序号, 访问信息 FLASH 内结构体数组中下标为 此索引序号的元素, 继而得到该 MAP 在标定 FLASH 内的起始地址和占用空间大小 ;
     在本发明实施例中, 单片机根据接收到的地址 0x140210, 查询索引 FLASH 地址 0x160210 中所保存的 MAP 索引序号, 该索引序号为 2, 根据该索引序号, 访问信息 FLASH 内 结构体数组中下标为 2 的元素, 继而得到 MAP2 在标定 FLASH 内的起始地址 0x140200, 占用
     空间大小 0x100 ;
     ③单片机根据步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 指针 当前指向的地址 :
     如果该地址位于标定 FLASH 内, 进入步骤④ ;
     如果该地址位于标定 RAM 内, 进入步骤⑤ ;
     ④根据步骤②获得的起始地址和占用空间大小, 单片机将位于标定 FLASH 中以该 起始地址开始的, 相应空间大小内的数据全部拷贝到标定 RAM 的空白区域中 ; 用一个整型 32 位的变量, 记录当前标定 RAM 区域中使用的空间大小 ; 然后修改该 MAP 的指针, 使其指向 标定 RAM 区域内该 MAP 存放空间的起始地址, 进入步骤⑤ ;
     ⑤已知需要修改的数据点在标定 FLASH 中的存放地址, 单片机根据该数据点所在 MAP 在标定 FLASH 内的起始地址和在标定 RAM 内的起始地址, 得到该数据点在标定 RAM 中的 存放地址, 将该地址内的数据修改为更新后的数据。
     在本发明实施例中, 当前 MAP2 的指针指向地址 0x140200, 位于标定 FLASH 内, 单片 机把标定 FLASH 中地址 0x140200 ~ 0x1402FF 内共 0x100 字节的数据全部拷贝到标定 RAM 中地址 0x400000 ~ 0x4001FF 的区域内 ; 设置一个整型 32 位的变量, 其值为 0x100, 表明标 定 RAM 区域中已经使用了 0x100 字节的空间 ; 然后修改 MAP2 指针, 使其指向 0x400000( 如 图 3 所示 ) ; 已知需要修改的数据点在标定 FLASH 中的存放地址为 0x140210, 单片机根据该 点所在 MAP 在标定 FLASH 内的起始地址 0x140200 和在标定 RAM 内的起始地址 0x400000, 得到需要修改的数据点在标定 RAM 中的存放地址 0x400010, 然后把地址 0x400010 内储存 的数据修改为 0x66。如果在完成上述标定后, 在标定工具软件中又修改了 MAP2 中另一数 据点, 假设这次需要修改的数据点在标定 FLASH 中的存放地址为 0x140220, 修改后的数据 为 0x55, 那么标定工具软件把 0x140220 和 0x55 发送给单片机 ; 单片机根据接收到的地址 0x140220, 查询索引 FLASH 中地址 0x160220 内储存的 MAP 索引序号, 该索引序号为 2, 根据 该索引序号, 访问信息 FLASH 内结构体数组中下标为 2 的元素, 继而得到 MAP2 在标定 FLASH 内的起始地址 0x140200, 占用空间大小 0x100 ; 查询 MAP2 指针, 由于该指针已经指向了地址 0x400000, 位于标定 RAM 内, 表明之前已经把该 MAP 所有的数据从标定 FLASH 中拷贝到了标 定 RAM 中, 所以这次不再需要拷贝原始数据 ; 已知需要修改的数据点在标定 FLASH 内的存放 地址为 0x140220, 单片机根据该点所在 MAP 在标定 FLASH 内的起始地址 0x140200 和在标定 RAM 内的起始地址 0x400000, 得到需要修改的数据点在标定 RAM 内的存放地址 0x400020, 然 后把地址 0x400020 内储存的数据修改为 0x55。
     7) 已知 MAP 在 FLASH 中的起始地址和占用空间大小, 通过查询相应的 MAP 指针, 得 到该 MAP 当前存放空间的起始地址, 从而对以该起始地址开始的, 相应空间大小的内存区 域中的数据, 进行查表插值操作, 包括以下步骤 :
     ①单片机把 MAP 在标定 FLASH 中的起始地址作为参数传递给查表插值函数 ;
     ②查表插值函数根据由步骤①获得的起始地址, 查询索引 FLASH 内对应地址中所 保存的 MAP 索引序号 ;
     ③单片机根据由步骤②获得的 MAP 索引序号, 查询相应的 MAP 指针, 得到该 MAP 当 前存放空间的起始地址 ;
     ④基于由步骤③获得的起始地址, 对相应空间大小的内存区域中的数据, 进行查表插值操作, 结束。
     在本发明实施例中, 如果是对 MAP2 进行查表插值操作, 已知 MAP2 在 FLASH 中的 起始地址 0x140200 和占用空间大小 0x100, 单片机把 MAP2 在标定 FLASH 中的起始地址 0x140200 作为参数传递给查表插值函数, 查表插值函数根据该起始地址, 在索引 FLASH 中 查询地址 0x160200 中所保存的 MAP 索引序号, 得到该序号为 2, 由此得知需要进行操作的 是 MAP2, 查询 MAP2 指针, 得到该 MAP 当前位于以地址 0x400000 开始的内存区域内, 对以地 址 0x400000 开始的, 大小为 0x100 的内存区域中的 MAP 数据, 进行查表插值操作。如果是 对 MAP1 进行查表插值操作, 则已知 MAP1 在 FLASH 中的起始地址 0x140100 和占用空间大小 0x100, 单片机把 MAP1 在标定 FLASH 中的起始地址 0x140100 作为参数传递给查表插值函 数, 查表插值函数根据该起始地址, 在索引 FLASH 中查询 0x140100 中所保存的 MAP 索引序 号, 得到该索引序号为 1, 由此得知需要进行操作的是 MAP1, 查询 MAP1 指针, 得到该 MAP 当 前位于以地址 0x140100 开始的内存区域内, 对以地址 0x140100, 大小为 0x100 的内存区域 中的 MAP 数据, 进行查表插值操作。
     上述实施例仅用于说明本发明, 其中各个步骤的具体实施方式等都是可以有所变 化的, 凡是在本发明技术方案的基础上进行的等同变换和改进, 均不应排除在本发明的保 护范围之外。

一种单片机系统MAP数据标定方法.pdf_第1页
第1页 / 共11页
一种单片机系统MAP数据标定方法.pdf_第2页
第2页 / 共11页
一种单片机系统MAP数据标定方法.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《一种单片机系统MAP数据标定方法.pdf》由会员分享,可在线阅读,更多相关《一种单片机系统MAP数据标定方法.pdf(11页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102446138 A (43)申请公布日 2012.05.09 C N 1 0 2 4 4 6 1 3 8 A *CN102446138A* (21)申请号 201110277714.3 (22)申请日 2011.09.19 G06F 12/06(2006.01) (71)申请人清华大学 地址 100084 北京市海淀区清华园1号清华 大学汽车工程系 申请人常州易控汽车电子有限公司 (72)发明人方成 李进 杨福源 欧阳明高 (74)专利代理机构北京纪凯知识产权代理有限 公司 11245 代理人徐宁 关畅 (54) 发明名称 一种单片机系统MAP数据标定方法 (57。

2、) 摘要 本发明涉及一种单片机系统MAP数据标定 方法,其特征在于:它包括步骤1)在单片机内存 中设置若干个区域;2)在单片机内存中保存所有 MAP的原始数据;3)在单片机内存中保存每个MAP 的起始地址和占用空间大小;4)在单片机内存中 保存每个MAP的索引序号;5)在系统初始化时,建 立并初始化一个MAP指针数组;6)在线标定过程 中,把正在标定的MAP从单片机内的FLASH拷贝到 单片机内的RAM内,在RAM中对相应的数据进行修 改;7)通过查询相应的MAP指针,得到该MAP当前 存放空间的起始地址,从而对以该起始地址开始 的,相应空间大小的内存区域中的数据,进行查表 插值操作。采用本发。

3、明可以降低单片机系统的复 杂程度和制造成本。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 2 页 说明书 7 页 附图 1 页 CN 102446159 A 1/2页 2 1.一种单片机系统MAP数据标定方法,其特征在于:它包括以下步骤: 1)在单片机内存中设置若干个区域,包括以下步骤: 根据MAP的数据总量的大小设置一块内存区域,作为标定FLASH; 根据一次能够标定的MAP数据量的大小设置一块内存区域,作为标定RAM; 根据MAP的个数设置一块内存区域,作为信息FLASH; 根据MAP的数据总量的大小设置一块内存区域,作为索引FLASH;。

4、 2)在由步骤1)设置的标定FLASH区域内保存所有MAP的原始数据; 3)通过已有的工具软件获取每个MAP在标定FLASH中存放的起始地址和占用空间大 小,将其保存在由步骤1)设置的信息FLASH区域内; 4)通过已有的工具软件获取标定FLASH区域内每个字节所保存的MAP的索引序号,将 其保存在由步骤1)设置的索引FLASH区域内; 5)在系统初始化时,建立并初始化一个MAP指针数组,包括以下步骤: 在MAP管理模块中,设置一个指针数组,该数组元素的下标为MAP的索引序号,数组 元素的个数与MAP的个数相同,数组元素为指针,指向MAP在内存中存放空间的起始地址; 在系统初始化时,根据MAP。

5、个数,依次从信息FLASH中获取每个MAP在标定FLASH中 的起始地址,然后,将步骤中的各个MAP指针,分别指向各个MAP在标定FLASH中的起始 地址; 如果需要对MAP数据进行修改,进入步骤6); 如果需要对MAP数据进行查询,进入步骤7); 6)在线标定过程中,把正在标定的MAP从单片机内的FLASH拷贝到单片机内的RAM内, 在RAM中对相应的数据进行修改,包括以下步骤: PC机上的标定工具软件与单片机系统建立连接后,在标定工具软件中对一个MAP中 的一个数据进行修改,此时,标定工具软件计算该数据点相对于该MAP起始地址的地址偏 移,然后根据该MAP在标定FLASH中的起始地址,进一。

6、步确定该数据点在标定FLASH中存放 的地址,标定工具软件把该地址和修改后的数据发送给单片机; 单片机根据由步骤标定工具软件发送来的地址,查询索引FLASH内对应地址中所 保存的MAP索引序号,然后根据这个索引序号,访问信息FLASH内结构体数组中下标为此索 引序号的元素,继而得到该MAP在标定FLASH内的起始地址和占用空间大小; 单片机根据步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP指针当前 指向的地址: 如果该地址位于标定FLASH内,进入步骤; 如果该地址位于标定RAM内,进入步骤; 根据步骤获得的起始地址和占用空间大小,单片机将位于标定FLASH中以该起始 地址开始的。

7、,相应空间大小内的数据全部拷贝到标定RAM的空白区域中;记录当前标定RAM 区域中使用的空间大小;然后修改该MAP的指针,使其指向标定RAM区域内该MAP存放空间 的起始地址,进入步骤; 已知需要修改的数据点在标定FLASH中的存放地址,单片机根据该数据点所在MAP 在标定FLASH内的起始地址和在标定RAM内的起始地址,得到该数据点在标定RAM中的存 放地址,将该地址内的数据修改为更新后的数据; 权 利 要 求 书CN 102446138 A CN 102446159 A 2/2页 3 7)已知MAP在FLASH中的起始地址和占用空间大小,通过查询相应的MAP指针,得到该 MAP当前存放空间。

8、的起始地址,从而对以该起始地址开始的,相应空间大小的内存区域中的 数据,进行查表插值操作,包括以下步骤: 单片机把MAP在标定FLASH中的起始地址作为参数传递给查表插值函数; 查表插值函数根据由步骤获得的起始地址,查询索引FLASH内对应地址中所保存 的MAP索引序号; 单片机根据由步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP当前存 放空间的起始地址; 基于由步骤获得的起始地址,对相应空间大小的内存区域中的数据,进行查表插 值操作,结束。 2.如权利要求1所述的一种单片机系统MAP数据标定方法,其特征在于:所述步骤3) 中,通过已有的MAP存储分析软件获取每个MAP在标定FL。

9、ASH中存放的起始地址和占用空 间大小。 3.如权利要求1所述的一种单片机系统MAP数据标定方法,其特征在于:所述步骤4) 中,通过已有的MAP存储分析软件获取标定FLASH区域内每个字节所保存的MAP的索引序 号。 4.如权利要求2所述的一种单片机系统MAP数据标定方法,其特征在于:所述步骤4) 中,通过已有的MAP存储分析软件获取标定FLASH区域内每个字节所保存的MAP的索引序 号。 5.如权利要求1或2或3或4任一项所述的一种单片机系统MAP数据标定方法,其特 征在于:所述步骤4)中,在索引FLASH内,每个字节存放一个索引序号。 6.如权利要求1或2或3或4任一项所述的一种单片机系统。

10、MAP数据标定方法,其特 征在于:所述步骤4)中,当MAP个数大于255时,在索引FLASH内,每两个字节存放一个索 引序号。 7.如权利要求1或2或3或4任一项所述的一种单片机系统MAP数据标定方法,其特 征在于:所述步骤3)中,采用结构体数组保存每个MAP的起始地址和占用空间大小;该数 组元素的下标为MAP的索引序号,数组元素的个数与MAP的个数相同,数组元素为结构体, 包括两个成员:MAP占用空间大小和MAP在标定FLASH内的起始地址。 8.如权利要求5所述的一种单片机系统MAP数据标定方法,其特征在于:所述步骤3) 中,采用结构体数组保存每个MAP的起始地址和占用空间大小;该数组元素。

11、的下标为MAP的 索引序号,数组元素的个数与MAP的个数相同,数组元素为结构体,包括两个成员:MAP占用 空间大小和MAP在标定FLASH内的起始地址。 9.如权利要求6所述的一种单片机系统MAP数据标定方法,其特征在于:所述步骤3) 中,采用结构体数组保存每个MAP的起始地址和占用空间大小;该数组元素的下标为MAP的 索引序号,数组元素的个数与MAP的个数相同,数组元素为结构体,包括两个成员:MAP占用 空间大小和MAP在标定FLASH内的起始地址。 权 利 要 求 书CN 102446138 A CN 102446159 A 1/7页 4 一种单片机系统 MAP 数据标定方法 技术领域 0。

12、001 本发明涉及一种MAP数据标定方法,特别是关于一种用于小容量RAM单片机系统 中的MAP数据标定方法。 背景技术 0002 在汽车电子领域,嵌入式系统大都使用单片机作为控制核心。由于控制系统的复 杂性和对象的多样性,单片机系统中有大量的参数无法在系统设计时确定,需要在系统开 发完成后通过匹配标定来确定。而这种匹配标定,往往是利用PC机上的标定工具软件,通 过基于总线的协议与单片机系统建立连接,将标定工具软件上的操作,传送给单片机,由单 片机完成相应的操作。在单片机内的FLASH上,保存有这些需要标定的参数即MAP的初始 值;通过基于总线的协议接收标定工具软件的操作,对MAP进行数据更新;。

13、由于FLASH中的 数值只能通过FLASH编程软件才能更新,而在运行FLASH编程软件的时候,一般不能同时执 行读取FLASH的程序,需要停止正常程序的运行,进入专门的FLASH编程模块,因此这种方 式无法支持MAP的在线标定;针对这个问题,目前常用的解决方案是把MAP数据从单片机 内的FLASH中拷贝到单片机内的RAM中,在线标定的时候,修改的是RAM中的MAP数据,通 过数据查询函数,检测到MAP数据修改后的结果。但是,这种方法也有缺陷:由于单片机片 内的RAM容量往往很小,而一些嵌入式系统中需要标定的MAP很多,例如发动机的控制系 统ESP、变速箱的控制系统ABS和汽车动力学控制系统TC。

14、S等,往往无法把所有的MAP数据 从单片机内的FLASH中全部拷贝到单片机内的RAM中。目前,对此常用的解决方法有两种: 一是在单片机的外部扩展RAM用于标定,这需要在单片机管脚上把地址总线和数据总线引 出,占用了大量的管脚资源,而且会使系统的电磁兼容性恶化,增加系统成本;二是通过分 块标定,把所有的标定MAP分块,一次标定只把一块区域的MAP数据拷贝到单片机内的RAM 中,因此一次只能标定一块区域内的MAP数据,这种方法局限性很大,事先无法确定一次标 定需要修改多少MAP,在MAP分区的时候也就无法选择一种适应整个标定阶段的划分方法, 并且需要在多个标定页之间来回切换,而对于这种在线切换,会。

15、将先前进行的标定工作丢 失。 发明内容 0003 针对上述问题,本发明的目的是提供一种能够较好地支持单片机系统,特别是小 容量RAM单片机系统在线标定的单片机系统MAP数据标定方法。 0004 为实现上述目的,本发明采取以下技术方案:一种单片机系统MAP数据标定方法, 其特征在于:它包括以下步骤: 0005 1)在单片机内存中设置若干个区域,包括以下步骤: 0006 根据MAP的数据总量的大小设置一块内存区域,作为标定FLASH; 0007 根据一次能够标定的MAP数据量的大小设置一块内存区域,作为标定RAM; 0008 根据MAP的个数设置一块内存区域,作为信息FLASH; 说 明 书CN 。

16、102446138 A CN 102446159 A 2/7页 5 0009 根据MAP的数据总量的大小设置一块内存区域,作为索引FLASH; 0010 2)在由步骤1)设置的标定FLASH区域内保存所有MAP的原始数据; 0011 3)通过已有的工具软件获取每个MAP在标定FLASH中存放的起始地址和占用空间 大小,将其保存在由步骤1)设置的信息FLASH区域内; 0012 4)通过已有的工具软件获取标定FLASH区域内每个字节所保存的MAP的索引序 号,将其保存在由步骤1)设置的索引FLASH区域内; 0013 5)在系统初始化时,建立并初始化一个MAP指针数组,包括以下步骤: 0014 。

17、在MAP管理模块中,设置一个指针数组,该数组元素的下标为MAP的索引序号, 数组元素的个数与MAP的个数相同,数组元素为指针,指向MAP在内存中存放空间的起始地 址; 0015 在系统初始化时,根据MAP个数,依次从信息FLASH中获取每个MAP在标定 FLASH中的起始地址,然后,将步骤中的各个MAP指针,分别指向各个MAP在标定FLASH中 的起始地址; 0016 如果需要对MAP数据进行修改,进入步骤6); 0017 如果需要对MAP数据进行查询,进入步骤7); 0018 6)在线标定过程中,把正在标定的MAP从单片机内的FLASH拷贝到单片机内的 RAM内,在RAM中对相应的数据进行修。

18、改,包括以下步骤: 0019 PC机上的标定工具软件与单片机系统建立连接后,在标定工具软件中对一个 MAP中的一个数据进行修改,此时,标定工具软件计算该数据点相对于该MAP起始地址的地 址偏移,然后根据该MAP在标定FLASH中的起始地址,进一步确定该数据点在标定FLASH中 存放的地址,标定工具软件把该地址和修改后的数据发送给单片机; 0020 单片机根据由步骤标定工具软件发送来的地址,查询索引FLASH内对应地址 中所保存的MAP索引序号,然后根据这个索引序号,访问信息FLASH内结构体数组中下标为 此索引序号的元素,继而得到该MAP在标定FLASH内的起始地址和占用空间大小; 0021 。

19、单片机根据步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP指针 当前指向的地址: 0022 如果该地址位于标定FLASH内,进入步骤; 0023 如果该地址位于标定RAM内,进入步骤; 0024 根据步骤获得的起始地址和占用空间大小,单片机将位于标定FLASH中以该 起始地址开始的,相应空间大小内的数据全部拷贝到标定RAM的空白区域中;记录当前标 定RAM区域中使用的空间大小;然后修改该MAP的指针,使其指向标定RAM区域内该MAP存 放空间的起始地址,进入步骤; 0025 已知需要修改的数据点在标定FLASH中的存放地址,单片机根据该数据点所在 MAP在标定FLASH内的起始地址。

20、和在标定RAM内的起始地址,得到该数据点在标定RAM中的 存放地址,将该地址内的数据修改为更新后的数据; 0026 7)已知MAP在FLASH中的起始地址和占用空间大小,通过查询相应的MAP指针,得 到该MAP当前存放空间的起始地址,从而对以该起始地址开始的,相应空间大小的内存区 域中的数据,进行查表插值操作,包括以下步骤: 0027 单片机把MAP在标定FLASH中的起始地址作为参数传递给查表插值函数; 说 明 书CN 102446138 A CN 102446159 A 3/7页 6 0028 查表插值函数根据由步骤获得的起始地址,查询索引FLASH内对应地址中所 保存的MAP索引序号; 。

21、0029 单片机根据由步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP当 前存放空间的起始地址; 0030 基于由步骤获得的起始地址,对相应空间大小的内存区域中的数据,进行查 表插值操作,结束。 0031 上述步骤3)中,通过已有的MAP存储分析软件获取每个MAP在标定FLASH中存放 的起始地址和占用空间大小。 0032 上述步骤4)中,通过已有的MAP存储分析软件获取标定FLASH区域内每个字节所 保存的MAP的索引序号。 0033 上述步骤4)中,在索引FLASH内,每个字节存放一个索引序号。 0034 上述步骤4)中,当MAP个数大于255时,在索引FLASH内,每两个字节。

22、存放一个索 引序号。 0035 上述步骤3)中,采用结构体数组保存每个MAP的起始地址和占用空间大小;该数 组元素的下标为MAP的索引序号,数组元素的个数与MAP的个数相同,数组元素为结构体, 包括两个成员:MAP占用空间大小和MAP在标定FLASH内的起始地址。 0036 本发明由于采取以上技术方案,其具有以下优点:1、由于本发明只把需要标定的 MAP数据在线实时地拷贝到RAM中,从而占用的RAM空间较小,解决了小容量RAM单片机系 统标定大量数据的问题。2、由于本发明能够在线标定所有需要标定的MAP数据,解决了现 有的因分块标定或RAM空间不够不能一次标定所有MAP的问题。采用本发明可以降。

23、低单片 机系统的复杂程度和制造成本。 附图说明 0037 图1是本发明单片机内存区域划分示意图; 0038 图2为本发明初始化时的MAP指针示意图; 0039 图3为本发明在线标定时的MAP指针示意图。 具体实施方式 0040 如图1所示,本发明方法包括以下步骤: 0041 1)在单片机内存中设置若干个区域; 0042 2)在单片机内存中保存所有MAP的原始数据; 0043 3)在单片机内存中保存每个MAP的起始地址和占用空间大小; 0044 4)在单片机内存中保存每个MAP的索引序号; 0045 5)在系统初始化时,建立并初始化一个MAP指针数组; 0046 6)在线标定过程中,把正在标定的。

24、MAP从单片机内的FLASH拷贝到单片机内的 RAM内,在RAM中对相应的数据进行修改; 0047 7)已知MAP在FLASH中的起始地址和占用空间大小,通过查询相应的MAP指针,得 到该MAP当前存放空间的起始地址,从而对以该起始地址开始的,相应空间大小的内存区 域中的数据,进行查表插值操作。 说 明 书CN 102446138 A CN 102446159 A 4/7页 7 0048 下面结合附图和实施例对本发明进行详细的描述。 0049 1)在单片机内存中设置若干个区域,包括以下步骤: 0050 根据MAP的数据总量的大小设置一块内存区域,作为标定FLASH,用于保存所有 的MAP数据。。

25、 0051 在本发明实施例中,如图1所示,将单片机内存中地址0x140000开始的128K空间 设置为标定FLASH。 0052 根据一次能够标定的MAP数据量的大小设置一块内存区域,作为标定RAM,用于 保存在线标定过程中更新过的MAP最新数据。 0053 在本发明实施例中,如图1所示,将单片机内存中地址0x400000开始的64K空间 设置为标定RAM。 0054 根据MAP的个数设置一块内存区域,作为信息FLASH,用于保存每个MAP在标定 FLASH中的起始地址和该MAP的占用空间大小。 0055 在本发明实施例中,如图1所示,将单片机内存地址0x100000开始的8K空间设置 为信息。

26、FLASH。 0056 根据MAP的数据总量的大小设置一块内存区域,作为索引FLASH,用于保存标定 FLASH对应地址所存放的MAP的索引序号。 0057 在本发明实施例中,如图1所示,将单片机内存中地址0x160000开始的128K空间 设置为索引FLASH。 0058 2)在单片机内存中保存所有MAP的原始数据,具体为: 0059 在由步骤1)设置的标定FLASH区域内保存所有MAP的原始数据。 0060 3)在单片机内存中保存每个MAP的起始地址和占用空间大小,包括以下步骤: 0061 通过已有的工具软件,如MAP存储分析软件,获取每个MAP在标定FLASH中存放 的起始地址和占用空间。

27、大小; 0062 将每个MAP在标定FLASH中的起始地址和占用空间大小保存在由步骤1)设置 的信息FLASH区域内。 0063 其中,可以采用结构体数组记录每个MAP的起始地址和占用空间大小;该数组元 素的下标为MAP的索引序号,数组元素的个数与MAP的个数相同,数组元素为结构体,包括 两个成员:MAP占用空间大小和MAP在标定FLASH内的起始地址。 0064 上述结构体中,可以采用一个16位变量记录MAP占用空间大小,采用一个32位变 量记录MAP在标定FLASH内的起始地址。 0065 假设在本发明实施例中,标定FLASH内有6张MAP,第一张MAP(MAP0)保存在 0x140000。

28、0x1400FF的范围内,第二张MAP(MAP1)保存在0x1401000x1401FF的范围 内,第三张MAP(MAP2)保存在0x1402000x1402FF的范围内,第四张MAP(MAP3)保存在 0x1403000x1403FF的范围内,第五张MAP(MAP4)保存在0x1404000x1404FF的范围内, 第六张MAP(MAP5)保存在0x1405000x1405FF的范围内,这6张MAP对应的MAP序号分 别为0、1、2、3、4和5,于是:信息FLASH中的结构体数组相应地包括六个数组元素,数组元 素0为0x100,0x140000(表示MAP0的大小为0x100,起始地址为0x。

29、140000),数组元素1 为0x100,0x140100,数组元素2为0x100,0x140200,数组元素3为0x100,0x140300, 数组元素4为0x100,0x140400,数组元素5为0x100,0x140500。 说 明 书CN 102446138 A CN 102446159 A 5/7页 8 0066 4)在单片机内存中保存每个MAP的索引序号,包括以下步骤: 0067 通过已有的工具软件,如MAP存储分析软件,获取标定FLASH区域内每个字节所 保存的MAP的索引序号(从0开始); 0068 在由步骤1)设置的索引FLASH区域内,以字节为单位存放标定FLASH对应地址。

30、 所存放的MAP的索引序号。 0069 其中,如果MAP个数大于255,在索引FLASH内,可以每两个字节存放一个索引序 号。 0070 在本发明实施例中,0x1600000x1600FF内保存的都是0,0x1600100 0x1601FF内保存的都是1,0x16002000x1602FF内保存的都是2,0x16003000x1603FF 内保存的都是3,0x16004000x1604FF内保存的都是4,0x16005000x1605FF内保存的 都是5。 0071 5)在系统初始化时,建立并初始化一个MAP指针数组,包括以下步骤: 0072 在MAP管理模块中,设置一个指针数组,该数组元素的。

31、下标为MAP的索引序号, 数组元素的个数与MAP的个数相同,数组元素为指针,指向MAP在内存中存放空间的起始地 址,用于表示MAP保存在以该起始地址开始的内存区域内; 0073 在系统初始化时,根据MAP个数,依次从信息FLASH中获取每个MAP在标定 FLASH中的起始地址,然后,将步骤中的各个MAP指针,分别指向各个MAP在标定FLASH中 的起始地址; 0074 如果需要对MAP数据进行修改,进入步骤6); 0075 如果需要对MAP数据进行查询,进入步骤7)。 0076 在本发明实施例中,如图2所示,系统初始化后,MAP指针指向的地址依次为:MAP0 指针指向0x140000,MAP1。

32、指针指向0x140100,MAP2指针指向0x140200,MAP3指针指向 0x140300,MAP4指针指向0x140400,MAP5指针指向0x140500。 0077 6)在线标定过程中,把正在标定的MAP从单片机内的FLASH拷贝到单片机内的 RAM内,在RAM中对相应的数据进行修改,包括以下步骤: 0078 PC机上的标定工具软件与单片机系统建立连接后,在标定工具软件中对一MAP 中的一个数据进行修改,此时,标定工具软件计算该数据点相对于所在MAP起始地址的地 址偏移,然后根据该MAP在标定FLASH中的起始地址,进一步确定该数据点在标定FLASH中 的存放地址,标定工具软件把该地。

33、址和修改后的数据发送给单片机; 0079 在本发明实施例中,假设对MAP2中的一个数据点进行修改,标定工具软件计算该 点相对于MAP起始地址的地址偏移为0x10,因为MAP2保存在标定FLASH中以地址0x140200 开始的内存区域,且修改后的数据为0x66,那么标定工具软件把0x140210和0x66发送给单 片机; 0080 单片机根据由步骤标定工具软件发送来的地址,查询索引FLASH内对应地址 中所保存的MAP索引序号,然后根据这个索引序号,访问信息FLASH内结构体数组中下标为 此索引序号的元素,继而得到该MAP在标定FLASH内的起始地址和占用空间大小; 0081 在本发明实施例中。

34、,单片机根据接收到的地址0x140210,查询索引FLASH地址 0x160210中所保存的MAP索引序号,该索引序号为2,根据该索引序号,访问信息FLASH内 结构体数组中下标为2的元素,继而得到MAP2在标定FLASH内的起始地址0x140200,占用 说 明 书CN 102446138 A CN 102446159 A 6/7页 9 空间大小0x100; 0082 单片机根据步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP指针 当前指向的地址: 0083 如果该地址位于标定FLASH内,进入步骤; 0084 如果该地址位于标定RAM内,进入步骤; 0085 根据步骤获得的起始。

35、地址和占用空间大小,单片机将位于标定FLASH中以该 起始地址开始的,相应空间大小内的数据全部拷贝到标定RAM的空白区域中;用一个整型 32位的变量,记录当前标定RAM区域中使用的空间大小;然后修改该MAP的指针,使其指向 标定RAM区域内该MAP存放空间的起始地址,进入步骤; 0086 已知需要修改的数据点在标定FLASH中的存放地址,单片机根据该数据点所在 MAP在标定FLASH内的起始地址和在标定RAM内的起始地址,得到该数据点在标定RAM中的 存放地址,将该地址内的数据修改为更新后的数据。 0087 在本发明实施例中,当前MAP2的指针指向地址0x140200,位于标定FLASH内,单。

36、片 机把标定FLASH中地址0x1402000x1402FF内共0x100字节的数据全部拷贝到标定RAM 中地址0x4000000x4001FF的区域内;设置一个整型32位的变量,其值为0x100,表明标 定RAM区域中已经使用了0x100字节的空间;然后修改MAP2指针,使其指向0x400000(如 图3所示);已知需要修改的数据点在标定FLASH中的存放地址为0x140210,单片机根据该 点所在MAP在标定FLASH内的起始地址0x140200和在标定RAM内的起始地址0x400000, 得到需要修改的数据点在标定RAM中的存放地址0x400010,然后把地址0x400010内储存 的数。

37、据修改为0x66。如果在完成上述标定后,在标定工具软件中又修改了MAP2中另一数 据点,假设这次需要修改的数据点在标定FLASH中的存放地址为0x140220,修改后的数据 为0x55,那么标定工具软件把0x140220和0x55发送给单片机;单片机根据接收到的地址 0x140220,查询索引FLASH中地址0x160220内储存的MAP索引序号,该索引序号为2,根据 该索引序号,访问信息FLASH内结构体数组中下标为2的元素,继而得到MAP2在标定FLASH 内的起始地址0x140200,占用空间大小0x100;查询MAP2指针,由于该指针已经指向了地址 0x400000,位于标定RAM内,。

38、表明之前已经把该MAP所有的数据从标定FLASH中拷贝到了标 定RAM中,所以这次不再需要拷贝原始数据;已知需要修改的数据点在标定FLASH内的存放 地址为0x140220,单片机根据该点所在MAP在标定FLASH内的起始地址0x140200和在标定 RAM内的起始地址0x400000,得到需要修改的数据点在标定RAM内的存放地址0x400020,然 后把地址0x400020内储存的数据修改为0x55。 0088 7)已知MAP在FLASH中的起始地址和占用空间大小,通过查询相应的MAP指针,得 到该MAP当前存放空间的起始地址,从而对以该起始地址开始的,相应空间大小的内存区 域中的数据,进行。

39、查表插值操作,包括以下步骤: 0089 单片机把MAP在标定FLASH中的起始地址作为参数传递给查表插值函数; 0090 查表插值函数根据由步骤获得的起始地址,查询索引FLASH内对应地址中所 保存的MAP索引序号; 0091 单片机根据由步骤获得的MAP索引序号,查询相应的MAP指针,得到该MAP当 前存放空间的起始地址; 0092 基于由步骤获得的起始地址,对相应空间大小的内存区域中的数据,进行查 说 明 书CN 102446138 A CN 102446159 A 7/7页 10 表插值操作,结束。 0093 在本发明实施例中,如果是对MAP2进行查表插值操作,已知MAP2在FLASH中。

40、的 起始地址0x140200和占用空间大小0x100,单片机把MAP2在标定FLASH中的起始地址 0x140200作为参数传递给查表插值函数,查表插值函数根据该起始地址,在索引FLASH中 查询地址0x160200中所保存的MAP索引序号,得到该序号为2,由此得知需要进行操作的 是MAP2,查询MAP2指针,得到该MAP当前位于以地址0x400000开始的内存区域内,对以地 址0x400000开始的,大小为0x100的内存区域中的MAP数据,进行查表插值操作。如果是 对MAP1进行查表插值操作,则已知MAP1在FLASH中的起始地址0x140100和占用空间大小 0x100,单片机把MAP1。

41、在标定FLASH中的起始地址0x140100作为参数传递给查表插值函 数,查表插值函数根据该起始地址,在索引FLASH中查询0x140100中所保存的MAP索引序 号,得到该索引序号为1,由此得知需要进行操作的是MAP1,查询MAP1指针,得到该MAP当 前位于以地址0x140100开始的内存区域内,对以地址0x140100,大小为0x100的内存区域 中的MAP数据,进行查表插值操作。 0094 上述实施例仅用于说明本发明,其中各个步骤的具体实施方式等都是可以有所变 化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保 护范围之外。 说 明 书CN 102446138 A CN 102446159 A 1/1页 11 图1图2 图3 说 明 书 附 图CN 102446138 A 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1