基于Linux的嵌入式数据采集系统

发布者:angelbaby最新更新时间:2012-03-20 来源: 微计算机信息 关键字:嵌入式Linux  数据采集  设备驱动 手机看文章 扫描二维码
随时随地手机看文章

1 嵌入式系统概述

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统,它将操作系统和功能软件集成于计算机硬件系统之中,简而言之就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式, 具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时和多任务的体系。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业实际应用相结合的产物。嵌入式系统的结构由两大模块组成:硬件平台和软件平台,其结构如图1所示。

图1  嵌入式系统结构图

2 系统设计

数据采集系统的采集任务在现场完成。采集系统设计为分布式的控制系统,系统上位机与现场检测下位机之间的通信基于串口。正常运行时,现场下位检测控制器完成数据采集、数据处理、数据存储、数据发送等多种任务。系统具有一定的自检测、自校正能力,能将异常情况传给PC机,以便维护。为了适应各种不同情况对焊缝自动检测的要求,整个检测系统采用模块化结构设计,可应用不同的模块组合成不同的应用系统。数据采集系统的基本组成如图2所示。

图2  数据采集系统的组成

2.1 系统的硬件

数据采集系统主要完成实时数据采样、保持、并送入A/D 转换器变成数字信号,然后

再对数据进行计算处理、保存,再通过通信接口将实时数据发送到监控中心,同时接收监控中心下发的各种命令。其硬件结构如图3所示。

图3  数据采集系统的硬件结构

该系统采用了Cirrus Logic公司的EP9302作为主CPU,并移植Linux操作系统来对任务进行管理和调度。

交流采样电路主要由采样保持、多路开关和A/D转换组成,用来保证在模数转换过程中电压、电流的同时性,以满足功率测量要求。本系统采集四相电压及四相电流,通过多路开关分时将采样量送入A/D转换器。14位A/D转换电路采用Analog Devices的AD7865,AD7865 是四通道高速A/D转换器,其电路输出具有三态锁存功能。

通信电路由SJA1000芯片、光耦电路和总线驱动器组成。SJA1000的AD0∼AD7连接到系统数据总线上,为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接82C250 的TXD和RXD相连,而是通过高速光耦合器6N137与82C250相连,这样就很好地实现了总线上各CAN 节点间的电气隔离。光耦部分电路所采用的2个电源Vcc和Vdd必须完全隔离,可采用小功率电源隔离模块或带多个5V隔离输出的开关电源模块实现。这部分增加了接口电路的复杂性,但却提高了节点的稳定性和安全性。

2.2 系统的软件

软件的设计是在操作系统上实现的,嵌入式操作系统是整个系统的核心。针对本系统的特点,软件平台采用多任务嵌入式操作系统Linux来实现,改变了传统的在类似硬件平台下采用MSDOS单用户、单任务操作系统难以完成较为复杂的分布式多任务应用的缺点。在数据采集系统中,Linux系统可以同时处理多个传感器发送来的较为复杂的控制任务,从而提高系统的[page]

整体响应速度及并发处理能力。构成嵌入式Linux系统至少需要下面3个基本元素:引导程序、Linux微内核和初始化进程。如果要让它有更多的功能, 还可加上文件系统、GUI和设计精简的应用程序,并将其放在diskonchip中启动。

2.2.1 内核的裁减编译与启动

微型计算机的存储空间较小, 而标准Linux是面向PC 的,需要对Linux 内核进行裁减。对一些可独立加上或卸下的功能块,可在编译内核时仅保留嵌入式系统所需的功能支持模块, 删除不需要的功能。为了满足一定的实时性要求,需屏蔽内核的虚拟内存管理机制来增强的Linux实时性。系统中微机主板属于X86体系结构,兼容一般桌面 PC的Linuxi386版本。这

样,我们可以直接使用X86体系的编译器对Linux核心源代码直接进行编译及裁剪,并避免了对Linux 核心源代码中涉及CPU的部分模块以及内存管理模式模块的修改。增加了文件系统和GUI根据系统需要,文件系统应包括: 基本文件系统结构、基本应用程序、基本配置文件、基本设备/dev/hd* 和/dev/tty*、基本程序运行所需的函数库。GUI 是软件可视化设计不可

缺少的,也为将来的现场检修维护提供可视化的界面。编写Linux的引导代码, 将diskonchip作为系统的启动设备,引导代码放在diskonchip上。系统加电后,由引导代码进行基本的硬件初始化,然后把内核经映像装入内存运行。

2.2.2 设备驱动程序

系统需要对I/O口、串口编写设备驱动程序。设备驱动程序是操作系统内核与硬件之间的接口,属于内核的一部分,主要功能应包含:对设备初始化或释放、把数据从内核传送到硬件及从硬件读取数据、读取应用程序传送给设备的数据和回送应用程序请求的数据、监测和处理设备出现的异常。

设备驱动程序的实质就是中断处理。Linux中断处理程序分为上半部和下半部。上半部即一般的中断服务程序, 由硬件中断触发,一般运行在关中断的方式下,应当尽可能短小,处理尽可能快;下半部运行在开中断和任务串行化的环境下,处理需较长时间的任务。驱动程序上半部在处理完实时性很强的任务后,用queue_task函数将下半部处理函数挂入立即队列, 并用mark_bh函数来激活立即队列,下半部就可以最优先地被执行。

用户进程是通过设备文件与硬件打交道,对设备文件的操作方式是系统调用,由file_operations结构实现系统调用。这个结构的每一个成员的名字都对应着一个系统调用。用户进程对设备文件进行操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数。这就是Linux 设备驱动程序工作的基本原理。编写设备驱动程序的主要工作就是编写子函数,并填充file_operations的各个域。

设备驱动程序以模块方式加入内核,在init_module模块中,当检查设备存在后,用request_irq函数为设备申请系统中空闲的中断,用kmalloc为设备驱动程序申请输入输出缓存队列, 如果申请成功, 用regis2ter_chrdev函数将设备驱动程序注册到系统中,加载完成。在clearup_module模块中,先用free_irq函数释放申请到的中断,然后用kfree函数释放申请到的内存空间,最后用unregister_chrdev函数释放注册的设备驱动程序。

2.2.3 应用程序设计

在基于嵌入式Linux系统的微机中,应用程序的主要模块有数据采集模块、数据处理模块、数据通信模块和数据诊断模块。应用程序流程图见图4。

图4  应用程序流程图[page]

数据采集模块是通过对I / O 口操作实现的。利用inb、inb_p、outb、outb_p 等4 个函数编写读取和写入程序。inb_p 、outb_p与inb、outb 的区别在于前者在存取I/O时有等待(pause),可适应慢速的I/O设备。为了防止存取I/O 时发生冲突,Linux提供对端口使用情况的控制。在使用端口之前,可以检查需要的I/O是否正在被使用,如果没有,便把端口标记为正在使用,使用完后再释放。

数据处理模块实现数据的均值与极值计算, 以文件的方式存储数据。历史数据对焊缝数据采集系统很重要,可上传到服务器以便预报系统根据设置的模型进行预测,还可不断修正数据诊断模块所需的模型。

数据诊断模块实现实时分析诊断,根据已设置的模型,在系统工作期间对系统数据进行测试分析。诊断程序设置为嵌入式系统中中断级别最低的中断服务程序,在不影响系统工作的前提下实现实时诊断,并上传给上位机,以便跟踪诊断校准,保证系统的可靠性。

数据通信模块主要任务是通过串口与上位PC机实现数据传输。在Linux系统中,串口是用做字符设备处理的。使用文件操作函数对串口进行处理,利用open函数打开串口,利用termios结构设定串口通信参数。

2.2.4 系统执行

经过以上步骤,在嵌入式Linux系统上实现数据采集系统已基本构成。系统执行流程见图5。

图5  系统执行流程图

3 小结:

本文作者创新点是基于嵌入式Linux的数据采集系统具有数据检测的实时性、检测精度高、自动化程度高、具有良好的可靠性、稳定性和抗干扰性等特点。实际运行证明高性能的AMR9微处理器和Linux操作系统的运用提高了系统的实时响应性能和多任务处理能力,使系统的可靠性和可扩展性得以明显提高。

参考文献:

[1] 雷于红,刘益成,刘凯. 基ARM9的嵌入式LINUX地震数据采集系统设计.微计算机信息,2008,3-2: 166-167.

[2] 金西,黄汪.嵌入式Linux技术及其应用. 计算机应用.2000,20(7):4~6.

[3] 郑锐,黄佩伟.基于ARM-Linux的智能传感器中央控制器,电子技术.2006年12月,p43-46

[4] 盛寿麟.电力系统远程监控原理[M].北京:中国电力出版社,1998.

[5] 邹思铁. 嵌入式Linux 设计与应用. 北京:清华大学出版社,1999.

[6] 王学龙. 嵌入式Linux 系统设计与应用. 北京:清华大学出版社,2001.

关键字:嵌入式Linux  数据采集  设备驱动 引用地址:基于Linux的嵌入式数据采集系统

上一篇:一种新型嵌入式远程监控系统的设计开发
下一篇:基于Qt的嵌入式媒体播放器系统的设计

推荐阅读最新更新时间:2024-03-16 12:56

单片机PSD数据采集电路设计方案
  根据高精度光电位置灵敏探测器(PSD)的工作原理及输出特性,本文介绍了一套基于单片机技术的PSD输出信号数字采集电路的设计方案。通过Atmega16型单片机控制AD1674模/数转换、AD7501多路转换等实现对PSD输出模拟信号的数字化转换和采集。电路结构简单、成本低廉、体积较小,广泛适用于各实验室的PSD输出信号采集模拟实验。   0 引言   PSD作为一种精密的光电位置传感器,具有灵敏度高、响应时间短、位置分辨率高、光谱响应范围大等特点,因此被广泛应用于现代光电检测技术中,尤其是高精度、高速度的数据采集技术中。如何在极短的响应时间内实现多数据的采集,成了采集PSD输出数据的关键。本文基于单片机技术,设计搭建了一套高速的
[单片机]
单片机PSD<font color='red'>数据采集</font>电路设计方案
一种基于GPS的数据采集处理系统的研究设计
  O 引言   GPS(Global Positioning System,全球卫星定位系统)以其高精度、全天候、全天时的特点,在定位、导航、测距、授时遥感等领域广泛应用,并得到了快速的发展。设计一种基于嵌入式系统的GPS定位数据采集系统,根据GPS信号接收原理和嵌入式技术,该设计完成了基于单片机和计算机实现GPS数据的采集,并以良好的人机界面显示出系统所处的经纬度、海拔高度、X,Y坐标以及日期等信息,该系统已应用于某外场的车载定位试验中,代替了以前人工记录定位数据的烦琐,提高了效率。   1 系统描述   本设计利用TI的低功耗MSP430F149单片机的双串行接口,一路将GPS接收模块接收的定位信息数据传送至单片机,由
[单片机]
一种基于GPS的<font color='red'>数据采集</font>处理系统的研究设计
PIC数据采集系统---开发板制作
PCB板的设计   PCB板设计在Altium Designer Winter 09下完成。 PCB板的制作   PCB板在实验室采用热转印方法自行制作。用双面覆铜板分两面腐蚀制作电路。 流程如下: 焊接   根据PCB元件分布图,依次按功能模块选取元件焊到PCB板上。焊接完一个模块就测试、调整一个模块,直到完全实现其功能,再焊接调试下一个模块。 自制的实验开发板
[单片机]
PIC<font color='red'>数据采集</font>系统---开发板制作
一个单片机串行数据采集/传输模块的设计
摘 要 以GMS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器,设计了一个串行数据采集/传输模块,给出了硬件原理图和主要源程序。 关键词 串行A/D转换器 串行数据传输 GMS97C2051单片机 在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传
[单片机]
采用虚拟软件与数据采集卡实现故障录波器系统的设计
引言 故障录波器是提高电力系统安全运行的重要自动装置,当电力系统发生故障或振荡时,能自动记录故障点前后一定时间内各种电气量的变化。参考文献设计的故障录波器采用虚拟软件与数据采集卡相结合的方法,其缺点是必须依靠计算机来进行计算分析,设备移动不方便,而且数据采集卡的价格也比较高,使得产品应用有一定的局限性。参考文献设计的是一种基于DSP和A/D转换器件相结合的故障录波器,所用的A/D转换器件不能同步转换6路信号,所测结果之间有一定的延迟。针对以上缺点,现采用DSP和AD7656相结合的方法,通过外接LCD显示波形和数据,使其可以作为手持设备使用,也可连接电脑通过LabWindows/CVI软件在电脑上实时显示,所用的AD7656具有的
[测试测量]
采用虚拟软件与<font color='red'>数据采集</font>卡实现故障录波器系统的设计
焊缝检测系统中PCI总线高速数据采集卡设计
焊缝缺陷自动超声检测系统是一种重要的无损探伤设备,可用于检测平板、管道、容器等的纵、横焊缝以及接管角焊缝缺陷。与手工检测方法相比,该系统具有运行平稳、漏检率低、显示直观等优点。 在焊缝缺陷自动超声检测系统中,缺陷回波信号通常为宽度约10ns~100ns、幅值在几十μV到几十mV之间的窄脉冲。为满足缺陷回波信号的检测要求,研制了一种基于PCI总线的高速数据采集卡,它是面向超声检测应用而设计的:该卡采用转换速率为60MHz的八位高速A/D以满足数据采集的要求;为缓存A/D芯片输出的高速数据并充分利用PCI总线带宽,加入32KB的高速FIFO缓存组;同时,为满足多通道探伤的要求,设计了通道选择电路以实现通道之间的切换;此外,为调理缺陷回
[嵌入式]
关于模拟数据采集的设计权衡的分析与研究
模拟采集部分是所有数据采集系统的核心。微处理器、数字信号处理器、存储器、固件、软件驱动、操作系统和软件应用都可能构成一个系统的大脑,但它们实际上还是模拟电路。要针对某种应用建立一个有必要的速度、分辨率和精度的系统,需要寻找模拟数据转换器、运放、复用器和电压基准的正确组合。  图 1 是模数转换器(ADC)中通过基本模拟信号的路径。每个数据采集系统都要使用这种基本配置的某种形式。为每个元件所做的选择会影响到对其他元件的选择。   模拟信号路径开始于输入连接器。多数数据采集系统会在模拟电路前采用某种形式的电路保护。例如保险丝或箝位二极管等元件可以限制进入系统的电压或电流,以保护元器件不会损坏。
[测试测量]
BittWare全新RFX-8440 数据采集卡赋能无线应用新性能
莫仕 (Molex) 旗下 BittWare 公司是企业级 FPGA 加速器产品领域一家领先的供应商,现正式发布RFX-8440 数据采集卡,采用了赛灵思公司的 Zynq UltraScale+射频片上系统 (RFSoC) 技术。这种创新性的 PCIe 卡发挥了第三代版本赛灵思 RFSoC 技术的独一无二功能,可充分利用 6 GHz 以下的整个波谱,代表了 5G、LTE 无线、相控阵雷达和卫星通信的关键性需求。我们鼓励有兴趣的客户马上申请加入早期取得计划。 BittWare 市场副总裁 Craig Petrie 表示:“传感器处理在三十多年来一直都是我们的核心市场之一。FPGA 已经广泛的用于嵌入式应用,以进行实时的数据采集、
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved