发明内容
考虑到相关技术中由于手工配置NV的结构导致配置工作量大、重复工作多、错误率高的问题而做出本发明,为此,本发明的主要目的在于提供一种非易失存储区即NV数据的处理方法和装置。
根据本发明的一个方面,提供了一种NV数据处理方法,NV是移动终端中存储参数设置值的存储区域。
根据本发明的NV数据处理方法包括:对NV头文件进行预解析,将预解析得到的NV结构生成中间文件,并将所述NV结构通过中间文件存储在格式文档中,其中,所述格式文档为XML文档;根据格式文档对NV结构中的每个NV节点进行标识;将标识的每个NV节点的数据进行保存。
具体地,将NV结构通过中间文件存储在格式文档中的处理可以包括:将NV结构中的每个NV节点的节点类型、节点大小、以及在NV结构中的偏移信息通过中间文件存储在格式文档中。
并且,对NV结构中的每个NV节点进行标识的处理可以包括:通过以递归的方式根据每个NV节点的节点类型、大小、及其在NV结构中的偏移信息进行NV节点查找来标识每个NV节点。
此外,在对NV结构中的每个NV节点进行标识之后,该方法可进一步包括:以树形结构的方式显示NV结构中的每个节点。
优选地,保存每个NV节点的数据的处理可以包括:将每个NV节点的数据通过编码转换为字符串,并通过数据文档保存字符串。
根据本发明的另一方面,提供了一种NV数据处理装置,该装置可以位于计算机侧,NV是移动终端中存储参数设置值的存储区域。
根据本发明的NV数据处理装置包括:头文件解析模块,用于对NV头文件进行预解析,将预解析得到的NV结构生成中间文件,并将NV结构通过中间文件存储在格式文档中并发送给NV工具,其中,所述格式文档为XML文档;NV工具,用于根据来自头文件解析模块的格式文档对解析的NV结构中的每个NV节点进行标识,并将标识的每个NV节点的数据进行保存。
其中,头文件解析模块通过将NV结构中的每个NV节点的节点类型、节点大小、以及在NV结构中的偏移信息通过中间文件存储在格式文档中来存储解析的NV结构。
并且,NV工具通过以递归的方式根据每个NV节点的节点类型、大小及每个NV节点在NV结构中的偏移信息进行NV节点的查找来标识每个NV节点。
此外,NV工具可以进一步包括:转换模块,用于将每个NV节点的数据转换为字符串;存储模块,用于将转换模块转换的字符串存储至数据文档中。
并且,NV工具还可以进一步包括:通信模块,用于与移动终端侧的NV代理建立通信链路,并根据来自NV代理的请求向NV代理发送NV工具存储的每个节点的数据、或接收来自NV代理的数据。
通过本发明的上述技术方案,通过头文件解析得到NV结构并在NV结构中NV节点的递归查找最终得到每个NV节点的数据信息,以非人工的方式完成了NV数据的处理过程,避免了相关技术中手工配置工作量大、重复性工作多、错误率高的问题,极大地方便了NV结构的配置及更改,有效提高了NV结构配置和更改的效率和准确率。
具体实施方式
本发明通过编译器(头文件分析模块)实现了NV头文件的分析,利用格式文档保存NV结构与数据信息,存储NV结构中各个NV节点的数据,有效实现了NV数据的自动化分析交互,避免了计算机(例如,PC)侧对NV信息的手工配置,有效解决了相关技术中手工配置NV结构带来的工作量大、重复性工作多、错误率高的问题,为手机系统运行时动态修改NV数据提供方便。
装置实施例
在本实施例中,提供了一种NV数据处理装置,该装置可设置于计算机侧(例如,PC侧)。
如图1所示,根据本实施例的NV数据处理装置包括:头文件解析模块10和NV工具20。
根据本实施例的NV数据处理装置的处理模块的功能如下:
头文件解析模块10用于对NV头文件进行预解析,将解析得到的NV结构通过中间文件存储在文档中并发送给NV工具。其中,在手机平台研发过程中,NV结构通常定义在一个或几个头文件中,其表现形式为一个总的NV结构体,内部再包含其它结构体、联合、枚举和基本类型数据,头文件解析模块10通过解析头文件获取NV节点、并将节点的类型、大小以及在结构体中的偏移等信息记录在存放NV结构信息的格式文档中,例如,扩展标记语言(该语言是一种定义其它语言的元语言)(Extensible Markup Language,XML)文档。
NV工具20用于根据来自头文件解析模块10的中间文件对解析的NV结构中的每个NV节点进行标识,并将标识的每个NV节点的数据进行保存。其中,NV工具20可以通过以递归的方式根据每个NV节点的节点类型、大小、及每个NV节点在NV结构中的偏移信息进行NV节点的查找来标识每个NV节点。具体地,NV工具20可以读取XML文档,从总的NV结构体切入,解析NV结构,然后运用递归的方法,直到解析出最终的叶子节点,对于每个NV节点,通过累积其偏移地址得出NVID(在整个NV结构体中的偏移地址),结合其大小(占用的字节数)即可标识该NV项(节点), 在与手机进行交互的时候,只需要传输对应偏移地址和大小的数据即可。
对于解析出来的NV项,NV工具20可以将叶子节点的二进制数据通过编码转换成一个字符串,即可通过数据格式文档进行保存,需要获取该节点二进制数据的时候,只需要从数据文档中读取字符串并进行解码还原。
此外,NV工具10可以进一步包括:转换模块(未示出),用于将每个NV节点的数据(通常为二进制数据)转换为字符串;存储模块(未示出),用于将转换模块转换的字符串存储至数据文档中。
优选地,NV工具10还可以进一步包括:通信模块(未示出),用于与移动终端侧的NV代理建立通信链路,并根据来自NV代理的请求向NV代理发送NV工具存储的每个节点的数据、或接收来自NV代理的数据。
图2示出了根据本实施例的NV数据处理装置进行NV数据处理的示意图。
其中,NV工具将头文件路径传递给头文件解析模块,即,NvTrans,由NvTrans对该头文件进行预编译,生成中间文件;然后通过NvTrans中的解析器解析出NV节点信息,并存入格式文档(例如,XML文档),通常,NV节点被归纳为三种类型:结构体、联合、基本类型(整型、实型等,枚举也归为基本类型)。
NV节点信息在格式文档中的记录方式如表1所示:
表1:格式文档中NV节点信息的存储方式
具体地,对于结构体、联合体类型节点,还可以记录子节点信息,具体如下:
节点名称 |
节点类型 |
占用的字节数 |
数量,>1表示该节点为数组 |
在结构体(联合体)中的偏移 |
占用的位数 |
节点类型的具体名称 |
表2:格式文档中NV子节点信息
NVTrans部分主要用于将用户输入的头文件转变为一个XML文件,因为NV工具需要解析头文件,但原始的C头文件无法被直接解析,由此,可以利用一个C语言的语法解析器将头文件中包含的各种元素提取出来形成中间文件,并按照约定写入一个XML文档中,这样,NV工具就可以通过解析XML文件来获取该头文件的信息,并将需要的项提取出来。
假设头文件内容如下:
通过NVTrans对上述NV头文件进行NV结构解析后,可以产生一个对应于该头文件的XML文件,具体如下:
NV工具通过分析该XML文件即可获取头文件的内容,例如,TYPE=1代表基本元素,size=1代表元素所占的大小,MAXALIN=″1″代表1字节对齐,Offset=0代表该元素在结构中的偏移,Bits=″0″代表不是位变量,ReferName=″char″代表是字符型,这样,NV工具通过解析该XML文件,就能得到该结构的所有信息,进而得到头文件的所有信息,并获取希望取到的项。
在实际应用中,头文件分析的C语言语法解析器的具体实现方式很多,且本领域技术人员能够通过编写程序得到具有NV头文件分析功能的解析器,因此本文不对解析器的具体结构进行探讨。
在NvTrans模块分析完毕以后,NV工具可以读取存放NV结构信息的格式文档。具体地,NV工具可首先定位到总的结构体,读取节点信息,然后解析其子节点项,并运用递归方法,解析出子节点的子节点,解析完最终节点后,以树状图形式显示给用户。
在进行了NV数据的显示之后,可以根据以下方式保存NV数据:
(方式1)将PC侧代表整块NV的缓冲区中的数据直接保存为二进制映像文件;
(方式2)将NV数据按节点保存到数据文档中,由于所有的有效的叶子节点数据已经涵盖了整个NV区域,所以只保存叶子节点的数据即可,使用一个从根结构体到当前叶子节点的遍历作为节点的唯一索引名称记录到数据文档,然后将NV数据编码成一个字符串,记录到数据文档。
相应的,从本地读取NV数据的方式可以采用以下之一:
将保存的二进制文件中的数据直接覆盖NV缓冲区;
在通过列表显示NV节点时,从保存的数据文档中读取字符串,通过数据解码还原成二进制数据,并覆盖到节点对应地址的缓冲区。
在根据本实施例的NV数据处理装置与手机侧NV代理交互数据时,具体过程如下:选择一个NV节点,通过建立的通讯链路,与手机中的NV代理进行交互,其中,PC侧NV工具(的通信模块) 向手机发送NV读写请求包,NV代理收到请求以后,做出相应操作并返回操作结果,因为每个NV节点都包含有大小(字节数)及在整个NV结构体中的偏移地址信息,NV代理读写指定地址指定大小的数据即可。
其中,PC侧读NV请求数据的格式可如表3所示:
表3:NV读请求数据的格式
手机侧NV代理在收到请求后,可以发送如下格式的请求应答消息作为回应:
表4:NV读请求应答的格式
此外,PC侧写NV请求的数据格式如表5所示:
表5:NV写请求格式
手机侧NV代理在收到请求后,发送表6所示的写请求应答消息作为回应:
表6:NV写请求应答消息的格式
通过上述装置,能够实现NV结构的自动解析,并自动获取并存储NV结构中每个节点的信息,解决了相关技术中手动配置NV结构费时费力且准确率低的问题,并且在进行NV结构更改时,上述装置同样能够对每个NV节点进行递归查找,避免了手工查找。
方法实施例
在本实施例中,提供了一种NV数据处理方法。
如图2所示,根据本实施例的NV数据处理方法包括:步骤S302,由头文件解析模块对NV头文件进行预解析,将解析得到的NV结构通过中间文件存储在文档(例如,XML文档)中;步骤S304,NV工具根据中间文件对解析的NV结构中的每个NV节点进行标识;步骤S306,将标识的每个NV节点的数据进行保存。
其中,将解析的NV结构通过中间文件存储在文档中的处理包括:将解析的NV结构中的每个NV节点的节点类型、节点大小、 以及在NV结构中的偏移信息通过中间文件存储在文档中。存储的格式可以参照表1和表2。
并且,对解析的NV结构中的每个NV节点进行标识的处理可以包括:通过以递归的方式根据每个NV节点的节点类型、大小、及其在NV结构中的偏移信息进行NV节点查找来标识每个NV节点。
此外,在对NV结构中的每个NV节点进行标识之后,该方法还可以进一步包括:以树形结构的方式显示NV结构中的每个节点。
可选地,保存每个NV节点的数据的处理可以包括:将每个NV节点的数据通过编码转换为字符串,并通过数据文档保存字符串。
此外,通过与手机侧NV代理进行通信,还能够实现PC侧NV节点信息的读取和写入,具体读取请求消息、写入请求消息、以及应答消息如表3至表6所示,这里不再重复。
如图4所示,在实际应用当中,根据本实施例的NV数据处理方法具体可以包括以下处理过程:
(41)由用户指定NV头文件;
(42)由NV_PC工具(即,上述NV工具)调用NvTrans(即,头文件解析模块);
(43)NvTrans预编译头文件,生成中间文件;
(44)NvTrans解析中间文件,生成NV结构信息文档;(步骤(43)和(44)可对应于步骤S302)
(45)由NV_PC工具递归解析结构信息文档,显示NV树状节点;(步骤(45)可对应于步骤S304)
(46)用户编辑NV节点数据;
(47)NV_PC工具向手机发送读写请求;
(48)NV_PHONE代理(即,上述NV代理)执行请求,并返回操作结果;
(49)NV_PC工具保存NV数据。(步骤(49)可对应于步骤S306)
综上所述,借助于本发明的上述技术方案,通过头文件解析得到NV结构并在NV结构中NV节点的递归查找最终得到每个NV节点的数据信息,以非人工的方式完成了NV数据的处理过程,避免了相关技术中手工配置工作量大、重复性工作多、错误率高的问题,极大地方便了NV结构的配置及更改,有效提高了NV结构配置和更改的效率和准确率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。