基于SQLite的嵌入式数据记录系统设计
扫描二维码
随时随地手机看文章
引言
随着嵌入式技术的迅猛发展,嵌入式设备已经广泛应用于信息处理的各领域中。在多嵌入式设备并存的系统中,工程人员常需要对系统的运行状态、处理信息的正确性等运行数据进行实时监控和记录,但现有的运行数据多由各嵌入式设备进行本地化存储,无法实时对整个系统状态进行记录和分析。
针对这个问题,本文提出了一种基于SQLite数据库的嵌入式数据记录模型,在此基础上通过构建嵌入式硬件平台与移植操作系统,并将SQLite数据库嵌入到软硬件平台,使工程人员能够从单一终端获取系统各设备的运行数据。
1设计原理
1.1嵌入式数据记录模型
图1所示是一个分布式数据记录模型,本文设计的就是这种基于以太网的分布式数据记录模型。系统采用以太网将本机与其他嵌入式设备连接,建立局域网内的服务器/客户端网络架构。其他嵌入式设备将运行数据通过以太网送至本系统,由系统进行数据分析和状态解读等操作,最后交由工程人员处理。
1.2数据记录软硬件简介
考虑处理能力和处理器功耗因素,系统选用基于ARM架构的S3C2440处理器作为主处理单元。该处理器基于ARM920T核心,具有5级流水线和哈佛结构,兼有优异的浮点和定点数据处理能力。
嵌入式操作系统是连接软件和硬件的重要模块,向上提供与应用程序的接口,向下提供与硬件设备交互的接口。系统选用嵌入式Linux系统作为操作系统,它既继承了开放的源代码资源,又具有完善的软件生态环境、资源的统一接口、优异的可扩展性等优势。
作为数据记录的核心构件,系统选用SQLite数据库进行运行数据记录。该数据库是由DRichardHipp开发的应用于嵌入式系统的轻量级数据库,是应用非常广泛的开源项目。该数据库具有以下特性:
数据库被集成在程序中,不需专门配置和管理,单表运行速度快;
代码规模小,编译后不大于256KB,运行时占用缓存小;
在系统崩溃或掉电后,可以自动完成启动初始化和数据恢复。
2系统设计
系统采用ARM-Linux平台,通过以太网进行数据传输,以SQLite数据库进行数据记录,具体的系统架构如图2所示。
3系统实现步骤
Linux系统内核移植
软件嵌入式系统内核的移植,就是根据目标板的具体配置,在获取操作系统源码的基础上,对其进行必要的修改,添加设备驱动,最终由交叉编译环境生成Image文件的过程。本系统采用Linux2.6.29内核,已集成了硬件平台的大部分驱动,但由于在硬件设计阶段添加了LCD显示模块,因此需要将LCD驱动集成到Linux内核中,并对内核部分具体配置做出修改。
本系统选用LCD厂商提供的默认驱动,根据硬件配置修改驱动文件后编译进内核中。具体步骤如下:
在内核中添加FrameBuffer以及LCD的注册信息;
在内核中添加LCD平台信息;
将LCD平台初始操作方式添加到参数实现文件中。
添加完成后,根据目标板硬件设置配置Linux内核,需要配置的参数有CPU平台、LCD参数、网络设置、串口设置、MTD设备支持、内部存储单元加载方式等,具体配置方式需要参照硬件设计和元器件的器件手册。
图3所示是其Linux的内核编译图。内核参数配置完成后,需要在交叉编译环境下将该内核文件进行生成操作,生成可在目标板上执行的Image文件。
Linux根文件系统的构建
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构。内核Image文件启动后运行的首个程序、提供参数配置等系统启动所必须的文件合称为根文件系统。
系统选用NandFlash作为存储介质,因此使用yaffs2文件系统作为根文件系统,该文件系统是专为NandFlash设计的基于日志结构的嵌入式文件系统,提供了损耗平衡和掉电保护,系统结构按层次结构设计,简化了接口,而且转载时间明显快于其他文件系统。
系统在构建yaffs2文件系统时,首先需要载入yaffs2代码,并使用Busybox工具包进行构建。具体步骤如下:
建立基本目录树,修改Makefile文件,添加文件类型支持,并修改配置Busybox;
修改Fstab、Inittab和MakeFile文件,并建立设备节点;
使用mkyaffs2image工具编译,生成的Image文件镜像文件如图4所示。
SQLite数据库的构建
系统使用SQLite数据库的版本号为SQLite3.3.8,针对特定的嵌入式硬件和操作系统,需要对数据库中部分参数进行修改,使其可以应用于本软硬件平台上。具体步骤如下:
新建一个和SQLite目录平行的同级目录,并安装与ARM架构处理器适配的交叉编译工具arm-linux-gcc;
打开sqlite/src/sqlitelnt.h,找到如图5所示的部分代码,并在这段代码前加上#defineSQLITE_PTR_SZ4语句;
注释掉SQLite目录下的配置文件中的交叉编译环境校验语句。然后执行配置命令,在build目录下生成Makefile和libtool脚本文件;
修改Makefile文件,将SQLite编译成静态链接的形式,然后执行make命令,生成sqlite、libsqlite.a、libsqlite.so等文件;
使用Ftp方式将SQLite拷贝到硬件平台上,这样SQLite数据库已经可以在ARM-Linux平台下运行;
使用标准SQL语句编写程序,实现运行数据的存储和筛选功能。
4结语
本文将ARM-Linux平台和SQLite数据库结合,设计了一种用于多嵌入式设备系统中的运行数据记录系统。该系统通过以太网与其他设备连接,可有效地架构于计算机网络上。该方案扩展了嵌入式设备状态监控的应用范围,具有良好的工程应用性。
20211120_6198cc5dd7e96__基于SQLite的嵌入式数据记录系统设计