嵌入式设备组织大量数据的时候,由于先天的不足,在数据组织的时候往往需要自己定义数据结构。在上一个项目中,我尝试使用xml格式对病人信息和心电数据进行组织,使用tinyxml解析库,没想到很容易调通,这里介绍一下我基于fatfs文件系统移植tinyxml,至于tinyxml的使用,网络上很多这方面的资料,就不介绍了。
tinyxml是由C++编写的一个基于文件结构解析的解析库,需要将文件加载到内存,所以在解析的时候往往会占用比较大的内存。所以如果你的设备内存只有几k的话,估计设备内存不够。不过网上有基于数据流解析xml的开源库Expat,Expat不需要将文件加载到内存,对内存要求不高,有兴趣的可以去研究研究。tinyxml说大不大,说小也不小,对于一个长期和C语言打交道的码夫来说,C++确实蛮让人嫌弃的。另外基于C++语言编写,所以你的编译器需要支持C++语言,还好现在主流的GCC和ADS这2款比较大众的交叉编译器都支持C++。
上面说了,tinyxml需要将xml文件加载到内存,所以tinyxml在不同设备下面移植的重点就是怎么把文件加载到内存,如果生产xml文件,则还需要涉及到怎么把数据写入xml文件。从我移植的经验来看,tinyxml只需要修改与文件系统相关的tinyxml.cpp和tinyxml.h这2个文件,以及修改tinystr.h这个文件的一些包含头文件属性。
基于fatfs文件系统,先看看fatfs支持那些文件操作。
f_mount - 注册/注销一个工作区域(Work Area)
f_open - 打开/创建一个文件f_c