基于ARM的数据采集系统的设计--优秀毕设申请材料

时间:2019-05-13 05:21:44下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于ARM的数据采集系统的设计--优秀毕设申请材料》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于ARM的数据采集系统的设计--优秀毕设申请材料》。

第一篇:基于ARM的数据采集系统的设计--优秀毕设申请材料

基于ARM的数据采集系统的设计

班级:通信071 姓名:

指导教师:

摘 要

随着嵌入式技术的迅速发展,嵌入式终端在家居和工业等领域发挥着越来越重要的作用。本设计提出了一种以嵌入式为基础的温度采集系统的设计方案,使得基于嵌入式系统做温度采集终端有较好的人机交互界面和系统高稳定性等特点。

本文介绍了整个硬件开发环境,bootloader的启动流程,Linux系统的架构,Linux内核的架构和根文件系统等相关知识。同时,本设计在软件方面主要编写了DS18B20的底层驱动程序,进行了Linux内核的配置编译,设计了QT顶层应用程序;在硬件方面主要设计了DS18B20的硬件电路,搭建了嵌入式交叉开发环境。通过综合调试最终实现了基于ARM9的嵌入式温度采集系统的设计。

嵌入式数据采集系统具备了发展潜力大,功耗低,稳定性高,可视化界面好,便于携带和功能可扩展的特性。

关键词:嵌入式系统;Linux内核;温度采集

Abstract With the rapid development of embedded technology, the embedded terminal is playing an increasingly important role in the home and industry.The paper proposes a temperature collection system which is based on embedded system, and using the embedded terminal to do data collection will have characteristics of better man-machine interface and high stability.This article describes the environment of hardware development, the boot process of bootloader, the architecture of Linux system, Linux kernel-related architecture, root file system architecture and other related knowledge.At the same time, this design mainly completed the programming of DS18B20's bottom-level driver, the configuration and compilation of the Linux kernel and the design of QT top-level application program in software.In the respect of hardware, the work includes of designing of the DS18B20's circuit and building the cross-tool development environment.Through synthesized debugging this project the design of the temperature collection system finally is realized, which is based on ARM9 embedded system.The data collection terminal based on embedded system has the high potential for development, low power consumption, high stability, good visual interface, easy to carry and functions which can be expanded, and so on.Key Words: Embedded System;Linux Kernel;Temperature Collection System

一、选题背景和意义

目前我国温室大棚技术已经在全国范围内被广泛应用,这一技术的诞生解决了北方人冬天没蔬菜的难题。温室大棚技术其关键技术在于对温室的温度进行严格控制,只有严格的温度控制才能保证棚内植物正常生长,而如何实现对温度的实时控制,显而易见温度采集作为大棚温控是一个不可忽略的环节,然而传统的温度采集系统一般稳定性不高,而且没有一个良好的人机交互界面,但是如果使用PC机作为温度采集系统就会大大提高生产成本,而且安装放置也很不方便。基于这一背景,本设计旨在通过设计一个基于ARM的嵌入式温度采集系统在成本高和稳定性差之间寻求一个平衡点。

基于ARM的嵌入式系统有诸多优点是传统电子系统无法比拟的,利用嵌入式开发技术本设计可以设计出具有良好的人机交互界面的实时系统,同时嵌入式系统最大的优点就是软硬件可裁剪,依据自己系统的需要可以进行灵活的软硬件设计开发,而且基于ARM的嵌入式系统开发成本低,而且系统稳定性高,功耗低,体积小,并且能够应用于多种应用场合[1]。这些优点就大大扩大了基于ARM的嵌入式系统的应用范围。

通过设计嵌入式温度采集一方面可以解决一些实际问题,但更为重要的是通过本设计是对自己大学四年学习的一个检验,由于大学期间没有学习有关嵌入式的相关知识,通过自学嵌入式开发的相关知识,让自己对嵌入式有一个深入的理解,为以后的学习工作奠定基础。

二、mini2440开发板的介绍 1.处理器S3C2440 Mini2440采用了S3C2440作为处理器[2]。S3C2440采用了ARM920T的内核,0.13μm的CMOS标准宏单元和存储器单元。其功耗低,体积小且静态设计特别适合于对成本和敏感性有特殊要求的实际应用。其总线采用了新的总线架构AMBA(Advanced Micro Controller Bus Architecture)。S3C2440其特点是CPU是一个16/32位ARM920T的RISC处理器,ARM920T具备MMU,AMBA,BUS以及Harvard高速缓冲体系结构。这一结构具有独立的16KB指令Cache和16KB数据Cache每个都是由具有8字长的行组成。通过一套完整的通用系统外设,S3C2440无需配置额外的组也同时减少整体系统成本。S3C2440集成了大量的片上功能,所以以S3C2440为核心处理器的mini2440开发板有丰富的接口资源可供开发者编程使用。

2.交叉开发环境

嵌入式系统的开发一般采用“宿主机-目标机”交叉开发方式[3]。首先,利用宿主上丰富的资源以及良好的开发环境来进行开发和仿真目标机上的软件,再通过H-JTAG口,UTAR口或者是以太网接口将生成的代码下载到目标机上进行运行。

本设计宿主机主要是使用装有RedHat5企业版Linux操作系统的PC机,而目标机就是mini2440开发板。组成架构如图2.1所示。宿主机PC机串口、以太网接口、USB接口目标机Mini2440开发板

图2.1 嵌入式开发交叉环境构架

三、系统组成及DS18B20的驱动设计 1.系统硬件框图

本设计硬件系统方面比较简单,系统部分组成:一是系统控制部分,二是温度采集部分。其中系统控制部分又包括以下几个部分:处理器、复位模块、显示模块、外部接口模块等四大部分组成。而温度采集本分主要由DS18B20电路组成。具体组成如图3.1所示。

显示模块其他接口CPU及存储器I/O接口测温模块复位模块 图3.1 测温系统硬件框图

2.DS18B20驱动设计

硬件驱动大体可以分为以下几类:网络接口驱动,字符设备驱动,块设备驱动[5]。字符设备是指按字节来访问的设备,字符驱动就负责驱动字符设备,这样的驱动通常实现read、write、open、和close的调用[4]。

Linux用户一般是通过操作设备文件来访问和操作各种设备的,所以用户想要使用DS18B20进行温度采集时,只需要对设备文件ds18b20进行打开、控制、读、写、关闭等一系列操作就可以控制DS18B20进行温度采集。

在字符设备中存在一种特殊的字符设备---混杂设备,这类设备的主设备号都是10,次设备号通过函数调用可已进行动态分配。本设计DS18B20的驱动就被划归为字符设备中的混杂设备。在驱动文件中只需要对DS18B20的时需进行读、写、复位时序描写。

四、bootloader相关知识

1.Bootloader背景知识 简单地说,bootloader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,本设计可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的运行环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由bootloader来完成。比如在一个基于ARM9的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的bootloader程序。

bootloaderLinux kernelRoot file system 图4.1 嵌入式系统软件层次结构

2.单片机主控模块

对于开发板mini2440有多种bootloader,例如 u-boot,supervivi,v-boot等等。他们之间的区别就是不同的bootloader可以引导不同内核。像supervivi能启动zImage,u-boot能启动uImage,而zImage和uImage的不同之处就在于在编译时生成内核的文件头不同。本设计采用的是supervivi作为bootloader来引导Linux内核。

Supervivi和许多bootloader一样它的启动也包括两个部分:stage1和stage2。Stage1主要实现的是硬件的初始化同时为stage2准备内存空间,并将stage2复制到内存中并设置堆栈,然后跳转到stage2。.五、Linux内核 1.Linux内核简介

Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、虚拟文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。具体如图5.1所示:

系统调用接口(System Call Interface)进程管理Process Management内存管理Memory Management结构Arch虚拟文件系统Vritual File System网络协议栈Network Stack设备驱动Device Drivers 图5.1 Linux内核架构

2.配置编译生成zImage[5] 使用已经移植好的Linux-2.6.29内核进行zImage的生成,在此过程中通过内核编译的方式把DS18B20的驱动加载到内核当中,而不是使用内核模块的方式加载驱动程序,然后通过内核配置,编译最后生成zImage。添加DS18B20驱动界面如下图:

图5.2 添加设备DS18B20

六、QT测温应用程序 1.QT应用程序流程图

根据毕设要求,要设计一个直观的温度采集界面,能够实时显示为温度值,所以QT界面上能够同时显示时间和温度,使得操作者能够清楚地看到温度值和当前时间。应用程序具体流程如图6.1所示:

开始图形界面属性初始化1秒定时器开始定时判断能否打开设备DS18B20YY写入命令读取温度获取当前系统时间显示温度显示时间NN1秒定时是否结束结束

图6.1 应用程序流程图

2.QT应程序的设计

QT应用程序主要是通过QT designer进行设计的,根据毕设要求,要设计一个直观的温度采集界面,能够实时显示为温度值,所以QT界面上能够同时显示时间和温度,使得操作者能够清楚地看到温度值和当前时间。具体界面如下图:

[6]

图6.2 利用QT designer设计界面

通过在x86平台下通过配置编译最后看到在x86平台下QT应用程序的界面:

图6.3 x86平台下QT程序的运行结果

七、root_qtopia件系统和综合调试

虽然root_qtopia这个文件系统的GUI是基于Qtopia的,但其初始化启动过程却是由大部分由busybox完成,Qtopia(qpe)只是在启动的最后阶段被开启[7]。

在进行了上面步骤的前提下本设计得到了zImage 和root_qtopia.img文件,基于此基本上完成了设计然后进行综合调试[8],具体步骤如下:

(1)安装bootloader:连接好超级终端并作如下设置、dnw、电源线,并把开关拨向Nor Flash一端。在超级终端可以看到如下界面:

图7.1 串口超级终端设置

图7.2 用H-JTAG和H-JFlasher烧写vivi

图7.3 supervivi启动界面

(2)分别通过选择“x”、“v”、“k”、“y”分别把supervivi下载到Nand Flash中然后把开关拨向Nand Flash一侧,给开发上电,进入dev目录查看设备中是否有DS18B20。

图7.4 查看DS18B20设备是否存在

(3)综合调试结果:

图7.5 综合调试结果图

参 考 文 献

[1] 孙戈,卢建军,高理.基于S3C2440的嵌入式Linux开发实例.西安:西安电子科技大学出版社,2010.[2] 三星公司.S3C2440 User's Manual.http://.[7] 百度文库.root_qtopia文件系统启动流程http://wenku.baidu.com/view/251bdb27a5e9856a56126021.html.[8] 友善之臂.mini2440开发板用户手册.http://www.arm9home.net/read.php?tid-5682.html

第二篇:基于ARM的视频采集系统的设计与实现

基于ARM的视频采集系统的设计与实现

摘要

本文根据家庭视频采集系统的要求,提出一种基于ARM的网络视频采集方案。方案要求视频的实时传输、实时监控。本系统以Intel Xscale 芯片和嵌入式Linux系统为平台,在平台中搭建网络视频服务器,并以它为中介,负责将USB摄像头采集到得视频数据传输到网络服务器中,最后发送到申请监控的远程PC机中,远程PC只需在网页中便能实时的看到监控端的视频图像。

论文首先阐述了嵌入式网络视频采集技术的发展、现状和前景,然后介绍了嵌入式硬件系统结构和嵌入式Linux操作系统的特点,阐述了嵌入式硬件整体结构,使大家大体的完整的对系统硬件有详细的了解,实际记录了嵌入式操作系统内核的编译和移植,介绍了Bootloader的基本原理和启动过程,实现了视频采集程序的编译和移植,研究了嵌入式一般驱动程序的使用。随后,本文详细描述了视频采集程序的整体结构框图和具体功能代码块、网络通信编程技术、图像编解码、嵌入式视频服。

关键词:ARM;嵌入式;Linux;视频采集

I

目录

摘 要.............................................................................................................................I 第1章 引言.................................................................................................................1

1.1 课题的背景和来源..........................................................................................1 1.2本文的内容及主要工作..................................................................................1 第2章 嵌入式ARM系统硬件结构简介..................................................................3

2.1 视频监控系统结构简介..................................................................................3 2.2 ARM处理器简介.............................................................................................3 2.3 XSCALE体系结构............................................................................................4 2.4 主要硬件电路说明..........................................................................................7 第3章 嵌入式ARM系统软件结构..........................................................................9

3.1 LINUX操作系统简介.......................................................................................9 3.2 交叉编译环境的建立....................................................................................10 3.3 嵌入式LINUX操作系统移植........................................................................11 3.3.1 BootLorder移植...................................................................................11 3.3.2 Linux 内核移植...................................................................................12 3.3.3 嵌入式文件系统.................................................................................13 3.4 LINUX下的程序调试.....................................................................................14 第4章 USB设备驱动程序设计...............................................................................15 4.1 设备驱动程序简介........................................................................................15 4.2 LINUX下驱动程序的实现.............................................................................18 4.3 USB摄像头驱动程序设计............................................................................20 第5章 视频采集功能的设计...................................................................................23 5.1 基于V4L的编程...........................................................................................24 5.1.1 摄像头相关数据结构.........................................................................24 5.1.2 摄像头基本功能实现.........................................................................25 5.1.3 视频数据采集.....................................................................................29 5.2 图像编解码....................................................................................................32 5.2.1 编解码介绍.........................................................................................32 5.2.2 系统压缩技术.....................................................................................33

第1章引言

1.1课题的背景和来源

二十一世纪的网络化、数字化让人们的生活每天都发生着翻天覆地的变化,获取信息的方便和快捷可以使人们在信息化的今天领先一步创造出巨大的利益,而获取信息的重要途径就是眼睛。据统计,人类采集信息的80%来自视觉。图像和视频是对客观事物生动、形象的描述,是一种最直观的表现方式。而视频监控技术因为它方便快捷、生动形象、信息丰富等特点日益受到人们的青睐,并在各行各业得到广泛的应用。与此同时,现代网络和数字技术的快速发展也为视频监控技术的发展奠定了坚实的基础。

二十一世纪,嵌入式技术、多媒体处理技术进一步发展,为视频监控系统的发展提供了新的出路——嵌入式视频监控系统。嵌入式系统是以应用为中心,软硬件可以剪裁,具有高稳定、低成本、功耗低、速度快、实时好的专用计算机系统,它由嵌入式微处理器,配以周边硬件设备,接口电路组成。嵌入式系统内部使用嵌入式操作系统,安装专用的功能软件。嵌入式技术把硬件和软件集于一体,独立工作。嵌入式视频监控系统比其他视频采集系统在布局区域范围上要广泛;由于使用IP技术,嵌入式视频监控技术比其他视频采集系统更具紧密的结合度,能够充分利用现代网络技术的成果,并能构成复杂的视频监控网络;性能上,嵌入式视频采集系统继承了嵌入式技术的优点,非常适合自动化的环境。

因此,嵌入式视频采集技术正在我国快速的发展,积极的研究会加强我们在这方面技术的学习,也会为视频监控技术的发展贡献力量。

1.2本文的内容及主要工作

根据毕业设计的初衷,我们需要设计基于ARM的网络视频采集系统。在监控系统中,视频采集、传输、播放的功能不是由专门视频处理芯片完成,而是由软件实现。

论文首先介绍了嵌入式ARM系统的硬件结构和软件结构,方便大家熟悉ARM和Linux系统,包括嵌入式设备的硬件结构,逻辑框图和Linux的基本操作、安装方法;第二,研究了嵌入式的一些驱动程序,主要是摄像头驱动程序

V4L,系统中选用的摄像头芯片——中星微301;第三,研究了视频监控的具体流程和实现方式,让大家在总体上对整个系统有一个大概的认知。

本次设计的目的只有一个,就是实现视频的实时监控。围绕它,不管是硬件结构还是软件流程,都需要学习和研究,不断调试,决不放弃。

总之,论文的内容都是围绕如何建立一个视频采集系统。无论是从哪个方面,我们都是为这个目标而努力。2

第2章嵌入式ARM系统硬件结构简介

2.1视频监控系统结构简介

网络视频监控系统是基于嵌入式技术设计的。嵌入式并没有统一的定义,但目前有一个广泛而又被认可的规范:将软件产品固化到硬件平台上,完成应有的功能既是嵌入式。

基于嵌入式ARM技术的视频监控系统服务器端采用摄像头不断的采集图像,压缩成视频流,然后通过网络发送到申请监控的客户端。监控系统的使用者可以在远程实现网页上的实时监控和一些简单的功能操作。系统整体结构如图2.1所示[1]。

LCDJTAG摄像头ZC301CPU单元Intel Xscale以太网控制器远程PC客户端SDRAMFLASH

图2.1 系统整体结构图

该系统中CPU采用基于ARM的PXA270微处理器,通过在其上运行Linux操作系统,执行Boa视频服务器,接受并处理来自摄像头的图像信号,通过以太网控制器发送至远端,实现视频数据的远程传输和接受,达到视频监控的目的[2]。

2.2ARM处理器简介

ARM,既是一个公司的名字,也是对一类微处理器的通称。ARM嵌入式微处理器是全球领先的16/32位RISK处理器芯片知识产权设计供应商ARM(AdvancedRISKMachines)公司的产品。ARM公司本身不直接从事芯片生产,而是依靠转让设计许可,由合作公司生产各具特色的芯片。

ARM处理器以其完整的体系结构,极小的体积、极低的功耗、极低的成本、极高的性能,及时根据嵌入对象的不同进行功能上的扩展的优势,在众多种类的嵌入式微处理器中脱颖而出。基于ARM技术的微处理器应用占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

采用RISC架构的ARM微处理器一般具有如下特点:

(1)采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种;(2)使用单周期指令,便于流水线操作执行;

(3)大量使用寄存器,数据处理指令只对寄存器进行操作,以提高指令的执行效率;

(4)所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率;

(5)可用加载/存储指令批量传输数据,以提高数据的传输效率;(6)可在一条数据处理指令中同时完成逻辑处理和移位处理;(7)在循环处理中使用地址的自动增减来提高运行效率。

目前,ARM处理器有ARM7、ARM9、ARM9E、ARM10、ARM10E、SecurCore、StrongARM和XScale等系列。每个系列除了具有ARM体系结构的共同特点以外,都有各自的特点和应用领域。

2.3XScale体系结构

Xscale核是采用ARM V5TE架构的处理器,是Intel公司的StrongARM的升级换代产品,它具有高性能、低功耗等特点,并在流水线设计、DSP处理和指令设计中有很大改进[3]。ARM的体系结构是基于RISK的,XScale是ARM处理器的一种,所以XScale具有RISK的基本特性。而且针对嵌入式系统,XScale构架还引入了Pentium处理器工艺和系统结构技术,实现了Pentium微处理器体系结构的一系列高性能技术,达到了高性能、低功耗和小体积等嵌入式系统要求的特性。它的特点有:超流水线、高主频、存储体系、分支预测和指令集体系结构。本设计采用的就是基于英特尔Xscale构架的一种32位嵌入式处理器,它除了应用于掌上电脑之中外,还可以应用于智能手机、网络存储设备、骨干网路由器等电子设备。

PXA27x系列处理器是英特尔当前最新推出的嵌入式处理器。它的时钟频率从312到624MHz不等,并内建64MB的堆栈型Intel StrataFlash内存。内置了英特尔的无线MMX技术,能够显著提升多媒体性能。

OURS-PXA270-EP是一款基于INTEL XSCALE PXA270处理器,针对高效

嵌入式系统教学和实验科研的平台。这款设备主要包括核心板与底版两个部分,核心板主要集成了高速的PXA270 CPU,配套的存储器,网卡等设备;底版主要是各种类型的接口与扩展口。

核心板(8层PCB电路)系统包括:

CPU: INTEL PXA270(520M),支持GDB调试; SDRAM: 64M 工作在104M外频上; FLASH: 32M INTEL Nor FLASH;Net: 10/100M Ethernet controller(LAN91C111);SUPERIO: WINBOND 83977;CPLD: XILINX 95144(117USER IO);总线驱动器: 若干;核心板正面如图2.2所示,核心板背面如图2.3所示。

SDRAMCPUdrvdrvCPLDdrvFLASHdrvdrvFLASHLDOdrv 图2.2 核心板正面图

SDRAMdrvEthernetdrvdrvdrv100PIN CONNECTORSuperIOLDO 图2.3 核心板背面图

底版(4层PCB电路)如图2.4所示。包括: Ethernet: 10/100接口1个

UART: 6个(包括RS232,RS485,IRDA,全功能串口)USB1.1:2个(1个host 一个device)PS2:2个(KEYBOARD&MOUSE)标准并口:1个 PCMCIA: 1个 IDE:1个 SD/MMC: 1个 SMC:1个 CAMERA:1个 96PIN功能扩展口:2个 4X5 小键盘

CPU_JTAG CPLD_JTAG LED SHARP LQ080V3DG01 8寸真彩LCD

640X480 VGA 640X480 LED 8X8点阵

一组7段LED数码管

4个

串口irda串口串口串口LCD接口LCD接口并口VGALED点阵音频1音频2音频3PCMCIA 卡LED数码管SMC 卡核心板SDPSPSUSBUSB485NET键盘 图2.4 底版图

2.4主要硬件电路说明

嵌入式设备除了以ARM芯片为主要控制单元,也有很多周边电路和外围设备,它们有的帮助ARM处理信号、有的负责存储数据、有的进行网络连接、有的用来数据通信,这些周边设备缺一不可,不能替代。

首先介绍CPU核心总线[4],总线是CPU和其他设备的桥梁。CPU是通过总线信号来控制SDRAM ,FLASH,网卡,SUPERIO等外部设备的,无论是低速还是高速,只要是与总线相关的芯片,都要和CPU总线信号有关。其次,研究嵌入式系统内存——SDRAM。SDRAM是嵌入式系统的内存,具有单位空间存储容量大和价格便宜的优点,已广泛应用在各种嵌入式系统中。当系统启动时,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。因此,要在系统中使用SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路。PXA270芯片在片内具有独立的SDRAM刷新控制逻辑,可方便地与SDRAM接口。除了SDRAM,FLASH也是一种存储媒介。FLASH一般具有NOR型和NAND型。NAND型FLASH单元密度高,写入和擦除速度非常快,而且一般NAND型FLASH的存储容量很大。NOR型FLASH的优点是芯片内执行命令,这样应用程序可以直接在FLASH内运行,不用进入内存,使得它的传输效率很高。嵌入式设备最大的优点就是网络功能强大,它能像PC一样方便地连接到互联网上,这些功能都是网络控制器的作用。也就是Ethernet Controller,本系统采用SMSC公司的单芯片的网络控制器,LAN91C111。它可以工作在两种速度下,10M以太网或者100M以太网。LAN91C111的工作流程是,驱动程序将要发送的数据包按指定格式写入芯片并启动发送命令,LAN91C111会自动把数据包转换成物理帧格式在物理信道上传输;反之芯片收到物理信号后自动将其还原成数据,并按指定格式存放在芯片RAM中以便主机程序取用。就是LAN91C111完成数据包和电信号之间的相互转换。最后,说明一下串口电路,在嵌入式视频监控系统中,串口起到了很重要地作用,嵌入式系统启动的信息都可以通过串口传到PC上,极大地方便了系统的移植和软件的调试。大多数情况下,嵌入式CPU的串口0会作为CPU的一个终端,为用户与CPU交互提供基本的输出输入信息。当CPU运行BOOT代码时,通常只有这个终端 ;运行LINUX内核时,如果有LCD显示,串口0与LCD终端会同时有效。串口0终端的交互

方式是命令行的模式,在BOOT阶段,支持简单的BOOT命令。8

第3章嵌入式ARM系统软件结构

3.1Linux操作系统简介

Linux是一个类似Unix的操作系统,它起源于芬兰一个名为LinusTorvaldS的业余爱好者,现已成为最流行的一款开放源代码的操作系统。Linux从问世至今,短短时间内已发展成为一个功能强大、设计完善的操作系统。Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒。由于Linux的源码开放,内核精简且性能强悍,不依赖于具体厂商,能广泛适用于各种硬件设备,系统二次开发成本极低,因此在IT业界已经达成共识,即采用嵌入式Linux作为嵌入式操作系统是大势所趋[5]。

嵌入式Linux是目前嵌入式系统领域中发展势头非常迅猛的系统。嵌入式Linux是指对Linux经过小型化裁剪后,能够固化在容量只有几百K字节或几M字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用操作系统。目前正在开发的嵌入式系统中,49%的项目选择嵌入式Linux作为操作系统。嵌入式Linux现已成为嵌入式操作系统的理想选择[6]。目前基于嵌入式Linux的应用已经遍布很多领域,比如移动多媒体设备、手持设备、车载导航系统、机械控制等。嵌入式Linux分为两种类型:在没有使用MMU的平台上(无内存虚实地址转换和映射)的一般为uCLinux;而在有MMU平台上,则使用原本地嵌入式Linux版本。由于在目前的主流嵌入式ARM中大多不具有MMU,因此只用IM左右的内核就能实现网络功能和任务调度的Linux系统就可以适用于从高端服务器到嵌入式应用的各级平台。ARM技术和Linux成功地结合,应用于数以千计的商业产品中。从便携式消费品、网络和无线设备,到自动化设备、医疗设备和存储产品,这一应用列表与日俱增。ARM和Linux的结合充分满足了各类应用对嵌入式平台高性能、低功耗和低价格的要求,通过开发环境、开源社区和ARM的商业伙伴的优势为嵌入式开发提供了更灵活的选择。

本次设计的开发环境为redhat9.0系统,在Windows XP 下安装虚拟机,在虚拟机中安装Linux系统,这样可以屏蔽底层差别,避免硬件驱动带来的麻烦,而且还能方便的使用串口、并口、USB接口,快速的进入实验环境。图3.1为虚拟机下Linux系统启动后的情况。

图3.1 虚拟机下Linux操作系统

3.2交叉编译环境的建立

通常嵌入式系统的软件编译和执行是在两个不同平台上进行的。编译是在宿主机,一般为装有Linux的pc;执行是在目标机,即嵌入式系统的硬件平台。一般是在宿主机上通过跨平台交叉编译器把源文件编译成目标平台上可执行的文件,再通过串口、并口或者网络下载至目标平台上的FLASH或者其它存储介质,然后由目标机来运行这些软件。这里所说的跨平台编译器和一般的编译器功能类似,都是把源代码通过编译器编译成目标文件,然后通过链接器、可重定位器程序和定位器把目标文件重新定位成可执行文件。和通用的编译器之间最大的差别就在于跨平台编译器编译出来的可执行程序通常只能在特定CPU所属平台上运行。所以一般来说每种CPU都对应有不同的跨平台编译器。

本系统采用基于XScale的PXA270,可以使用常用的ARM-LINUX-GCC交叉编译器。要成功构建完整的交叉编译环境需要在宿主机上创建一系列的工具包括C/C++编译器、汇编器、链接器、嵌入式系统的标准C库和GDB代码级调试器。成功建立好开发环境后便可以运用这些工具进行嵌入式系统开发[7]。

3.3嵌入式Linux操作系统移植 3.3.1BootLorder移植

BootLoader是系统加电后运行的第一段代码。一般只是在启动时运行很短的时间,然而对一个嵌入式系统来说,这一部分却是整个系统的一个无比重要的组成部分,不可缺少。在一般嵌入式系统中,系统复位或者加电后通常从地址0x00000000处开始执行,而这个地址一般正是存放的BootLoader启动代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终加载操作系统内核准备好正确的环境。

BootLoader一般情况下需要包含以下几个必备的功能 :(l)初始化处理器。这个动作都是用汇编语言完成的,称为重置码(resetcode)或者称为bootcode,而且对于每个CPU都不一样的,当电源接通后就会执行这个动作,通常只有两三个汇编指令,目的是将CPU的控制权转给硬件初始化的程序。

(2)初始化一些必要的硬件。这个动作也大都由汇编语言来完成,主要是初始化CPU、SDRAM等,其他的硬件,例如串口,可以由c语言等比较高级的程序语言来完成后续动作。

(3)设置处理器的寄存器以及内存,关掉所有的输入管脚(包括中断管脚),以防止突然有信号进入妨碍接下来的硬件初始化动作。然后初始化串口,以便后续运行的程序能够同HOST端进行通信,便于调试。

(4)从特定的位置把操作系统和文件系统调入内存,并设置一些操作系统所必需的参数,然后把CPU控制权交给操作系统。有的BootLoader会先从串口或者网络等其他途径得到内核的映像文件,然后把这些文件写入目标系统的FLASH或者其它存储介质,最后再把内核载入RAM执行,交出控制权。

一般BootLoader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载模式的区别。

(l)启动加载(Bootloading)模式:这种模式也称为“自主”(Autonomous)模式,即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下。

(2)下载(Downloading)模式:在这种模式下,目标机上的BootLoader将通过串

口连接或者网络连接等通信手段从主机(HOST)下载文件,比如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootL0ader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用,此外,以后的系统更新也会使用BootLoader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。

BootLoader的实现依赖于CPU的体系结构,一般来说启动过程分为两个阶段。

第一阶段依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在第一阶段中,而且通常都用汇编语言来实现,运行效率比较高。这个阶段完成的任务一般如下:(l)硬件设备初始化(屏蔽所有的中断、关闭处理器内部的指令/数据cache);(2)为第二阶段准备RA.M空间;(3)复制BootLoader的第二阶段代码到RAM空间中;(4)设置好堆栈并跳转到第二阶段的C程序入口点。

第二阶段则通常用C语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。这个阶段主要任务有:(l)初始化本阶段要使用的硬件设备;(2)检测系统内存映射;(3)将内核映像和根文件系统从FLASH读到RAM中;(4)为内核设置启动参数;(5)调用内核文件运行。

本设计中的Bootloader采用Blob,Blob是Boot Loader Object的缩写,是一款功能强大的Bootloader。Blob最初是由Jan-Derk Bakker和Erik Mouw两人为一块名为LART(Linux Advanced Radio Terminal)的开发板写的,该板使用的处理器是StrongARM SA-1100,现在Blob已经被成功移植到许多基于ARM的CPU上了。本设计中的Intel Xcale就是采用Blob作为Bootloader[8]。

3.3.2Linux 内核移植

选用嵌入式Linux作为目标机操作系统,一方面由于Linux是一款免费的操作系统,能很好的降低成本,同时Linux的开发应用现在已经成为热门,有大量的资源可用于学习与重复应用,并且Linux系统具有良好的可移植性和可裁剪性,能自动支持多任务管理。一般常用的GUI如QT/E,MiniGUI等都支持Linux。

Linux的开发工具也都可以很方便的免费获得。

系统采用的嵌入式Linux内核为随实验平台光盘中的Linux内核,它是针对这套实验平台所配置的Linux内核,内核版本为Linux2.4.20[9]。在实验过程中,只需要在这个内核的基础上进行添加和删减所需要和不需要的功能,编译后就可以使用了。

在编译内核之前,需要对内核进行必要的配置,通过虚拟机进入/pxa270_linux/linux/目录后在终端执行make menuconfig[10]命令,就可以可视化的配置内核需要的功能和要求,本次试验,主要是针对视频方面,选择了对V4L的静态加载、对spca5xx摄像头驱动的动态加载,这样就结束了对内核的配置。编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行makedep命令,读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而哪些不需要;接着需要makeclean删除前面步骤留下的文件,以避免出现一些错误;然后便可以生成所需要的内核文件了,用make zlmage来实现得到可移植的内核。内核文件通过并口下载线烧写入开发板中,便可以通过BootLoader加载运行。

3.3.3嵌入式文件系统

嵌入式Linux操作系统一般采用FLASH作为存储介质。FLASH具有独特的物理特性,所以必须使用专门的嵌入式文件系统。嵌入式系统对文件的操作是通过层次结构实现的。对于用户程序来说,文件是有结构的文件,用户程序通过对文件IO函数操作文件。嵌入式文件系统是嵌入式操作系统的一部分,它的任务是对逻辑文件进行管理,其工作包括提供对逻辑文件的操作(复制、删除、修改等)接口,方便用户操作文件和目录。在文件系统内部,根据存储设备的特点,使用不同的文件组织模式来实现文件的逻辑结构。此外,文件系统要对管理文件的安全性负责。文件系统不能直接控制物理设备,它是通过FLASH驱动实现控制的[11]。

目前FLASH支持的文件系统技术主要有JFFS2,YAFFS2,TrueFFS,FTL/NTFL,RAMFS,CRAMFS和ROMFS等等。本系统采用的是JFFS2文件系统。

JFFS2文件系统是专门为NAND闪存设计的嵌入式文件系统,根据NAND闪存以页面为单位存取的特点,将文件组织成固定大小的数据段。利用NAND闪存提供的每个页面16B的备用空间来存放ECC(ErrorCorrectionCode)和文件系统的组织信息、,不仅能够实现错误检测和坏块处理,也能够提高文件系统的加

载速度。JFFS2采用一种多策略混合的垃圾回收算法,结合了贪心策略的高效性和随机选择的平均性,达到了兼顾损耗平均和系统开销的目的。它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。JFFS2文件系统是按层次结构设计的,分为文件系统管理层接口、JFFS2内部实现层和NAND接口层,这样就简化了其与系统的接口设计,可以方便地集成到系统中去。与YAFFS相比,它增加了一些功能,因此功能更强。

3.4Linux下的程序调试

调试是程序开发过程中必不可少的一个重要环节,通用PC机的程序调试与嵌入式操作系统的调试环境上有着明显的区别,前者调试器和被调试的程序往往是运行在同一台机器上,是相同操作系统下的两个不同的进程,调试器通过操作系统专用调用接口控制被调试进程,后者通常为远程调试,调试器一般运行于桌面操作系统上,而被调试的程序则运行在嵌入式系统之上,因此需要协调这两个程序之间的通信。Linux下的调试工具非常的少,gdb是Linux下最著名的调试工具,它是GNUC自带的调试工具,它可以使开发人员了解程序运行的详细细节,从而消除程序的错误,达到调试的目的,gdb还具有远程调试功能,可以满足嵌入式系统调试的要求,在调试过程中PC机也称为宿主机和嵌入式系统通过串口协议或者TCP/IP协议连接起来,远程主机上运行被gdb规范断点改造过的内核,当条件成立时,断点被激活,然后等待本地宿主机的连接命令,一旦连接成功,宿主机就可以向远程嵌入式系统发送调试命令了。在调试过程中gdb通过调试stub来完成通信功能,调试stub是嵌入式操作系统中的一小段代码,它提供了运行gdb的宿主机和嵌入式系统进程之间交互的一个媒介。

除了使用调试器外还可以直接在程序中使用printf()或printk打印函数,这种方法功能比较弱,效率低下,但在内核模块调试时这是唯一的方法。14

第4章USB设备驱动程序设计

4.1设备驱动程序简介

Linux系统中,设备驱动程序扮演着特殊的角色。它就像一个独立的黑盒子一样,使某个特定的硬件可以相应一个定义良好的内部编程接口并且完成隐藏设备的作用。用户只需调用一组标准化的函数完成操作,而且这些操作与特定的驱动程序无关。驱动程序的任务就是将这些函数映射到作用硬件的具体操作上。这样的模块化的驱动程序结构使得Linux系统中的驱动程序可以独立于内核的其他部分,可以在需要使用的时候将驱动“插入”内核。

从系统运行顺序来看,硬件平台启动运行Linux后,启用了MMU单元即内存管理单元,在这种模式下系统不能直接对物理地址进行访问。若要对某一硬件外设进行读写,需要通过内核调用该硬件的驱动来实现。

上面已经说过,驱动程序的作用在于向应用程序提供访问硬件设备的接口,驱动程序屏蔽了硬件实现上的细节操作,于是应用程序可以像操作普通文件一样对硬件设备进行操作。Linux以模块的形式加载设备类型,通常是一个模块对应实现一个设备驱动。模块是内核的一部分,它们没有被编译到内核中,而是分别被编译并链接成一组目标文件。可以根据用户的需要在不需要对内核进行重新编译的情况下动态载入正在运行的内核,或从正在运行的内核中卸载。利用这种机制,内核尺寸可以保持在最小,并具有最大的灵活性,也便于检验新的内核代码,而不需要重新编译内核并重新引导。设备驱动程序一般需要完成以下功能:(l)对设备初始化和释放;(2)把数据从内核传送到硬件和从硬件读取数据;(3)读取应用程序传送给设备文件的数据和回送应用程序的请求数据;(4)检测和处理设备出现的错误。

在Linux操作系统下有两类主要设备文件类型:块设备、字符设备。用户进程正是通过设备文件来与硬件打交道。每个设备文件都有其文件属性,表示是字符设备还是块设备。另外每个文件都有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的不同硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的设备号一致,否则用户进程将无法访问驱动程序。

Linux驱动程序可以分为三个主要部分: 15

(l)自动配置和初始化子程序,负责检测所要驱动的硬件设备是否存在和能否正常工作。如果该设备正常,则对这个设备及其他必需的条件位口中断、DMA通道)进行申一请并初始化。这部分驱动程序仅在初始化时被调用一次。

(2)服务于I/O请求的子程序,又称为驱动程序的上半部分。调用这部分程序是由于系统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一个进程,只是由用户态变成了核心态,但仍具有进行此系统调用的用户程序的运行环境,因而可以在其中调用与进程运行环境相关的函数。

(3)中断服务子程序,又称为驱动程序的下半部分。在Linux操作系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统来接收硬件中断,再由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务子程序被调用时,不能依赖于任何进程的状态,也就不能调用任何与进程运行环境有关的函数。因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服务的设备。

在系统内部,I/O设备的存取通过设备驱动程序提供的一组固定的入口点来进行,这组入口点在驱动程序初始化时向系统进行登记,以便在系统适当的时候调用。一般来说,字符型设备驱动程序能够提供如下几个入口点:(1)open入口点:打开设备准备I/O操作,对字符特别设备进行打开操作,都会调用设备的open入口点。open子程序必须对将要进行的I/O操作做好必要的准备工作,如清除缓冲区等。如果设备是独占的,即同一时刻只能有一个程序访问此设备,则open子程序必须设置一些标志以表示设备的状态。

(2)close入口点:关闭一个设备,当最后一次使用设备结束后,调用dose子程序。独占设备必须标记设备可再次使用。

(3)read入口点:读取设备,对于有缓冲区的I/0操作,一般从缓冲区里读取设备数据。

(4)write入口点:向设备写数据,对于有缓冲区的I/O操作,一般向缓冲区里写入数据。

(5)ioctl入口点:执行读写之外的操作。

USB(Universal Serial Bus)即“通用串行外部总线”,用途广泛,可以外接硬盘、键盘、鼠标、打印机等多种设备,USB能够使用尽可能少的接口支持尽可能多的外设,尤为适合在嵌入式设备中使用,是嵌入式接口标准的一个很好的选择。

USB总线规范有1.1版和2.0版。USB1.1支持两种传输速率:低速1.5Mbit/s、全速12Mbit/s,这样的速率完全满足鼠标、键盘、CD-ROM等设备,但是在嵌入式视频监控系统中,这样的速度还是很慢。所以,USB2.0提供了一种更好的传输速率:高速,它可以达到480Mbit/s。USB2.0向下兼容USB1.1,可以将遵循USB1.1规范的设备连接到USB2.0控制器上,也可以把USB2.0的设备链接到USB1.1控制器上。

USB总线的硬件拓扑结构[12]如图4.1所示。

USB主机控制器USB设备根集线器USB设备USB设备集线器USB设备集线器USB设备集线器USB设备USB设备USB设备USB设备 图4.1 USB总线硬件拓扑图

USB主机控制器通过根集线器与其他USB设备相连。集线器也属于USB设备,通过它可以在一个USB接口上扩展出多个接口。除根集线器外,最多可以层叠5个集线器,每条USB电缆的最大长度是5m,所以USB总线的最大距离为30m。一条USB总线上可以外接127个设备,包括根集线器和其他集线器。整个结构图是一个星状结构,一条USB总线上所有设备共享一条通往主机的数据通道,同一时刻只能有一个设备与主机通信。

通过USB主机控制器来管理外接的USB设备,USB主机控制器共分3种:UHCI、OHCI和EHCI。在配置Linux内核的时候,看到的“HCD”字样表示“Host Controller Drivers”,即主机控制器驱动程序。

USB驱动程序分为两类:USB主机控制器驱动程序(Host Controller Drivers)、USB设备驱动程序(USB device drivers)。它们在内核中的层次如图4.2所示。

UserUSB Device DriversUSB Host Controller DriversHardware 图4.2 USB驱动程序层次结构

在试验中,教学平台上的Linux嵌入式内核已经配置了USB主机控制器驱动程序,只需要添加需要的USB设备驱动程序,就能实现USB设备的正常使用。

4.2Linux下驱动程序的实现

Linux操作系统下对硬件设备进行驱动开发的一般步骤如下:(l)注册设备

在系统启动时或者在模块加载的时候需要将设备和重要的数据结构登记到内核的设备数组中,并确定该设备的主次设备号。在Linux系统中,对于字符设备一般通过调用register_chrdev向系统注册设备驱动程序,register_chrdev在fs/deviees.c文件中的定义如下:int register_chrdev(unsigned int major,const char*name,struct file_operations fops)定义中的major是设备驱动程序向系统申请的主设备号,如果major为O,则系统为该驱动程序动态的分配一个主设备号,不过此设备号是临时的;name是设备名:fops是各个调用入口点的说明。函数返回O表示注册成功,返回-INVAL表示申请的主设备号非法,返回-EBUSY表示申请的主设备号正在被其它设备驱动程序使用。

以后对设备驱动程序的file_operations的操作都可以通过该主设备号的索引来完成。register_chrdev函数操作成功后,设备名便出现在/proc/devices文件目录中,使用命令cat/proc/devices可以查看设备的工作状态。

(2)定义操作集

驱动程序中要通过一系列函数完成对设备的不同操作,这些操作在面向对象编程术语中也称为方法,该操作集通过数据结构file_operations实现。内核内部通过file结构识别设备,通过file_operations数据结构提供的文件系统的入口点函数访问设备。

file_operations定义在中的函数指针表: struct file_operations { struct module*owner;loff_t(*llseek)(struct file*, loff_t, int);ssize_t(*read)(struct file*, size_t, loff_t*);ssize_t(*write)(struct file*, const char*, size_t, loff_t*);int(*readdir)(struct file*, void*, filldir_t*);unsigned int(*poll)(struct file*, struct poll_table_struct*);int(*ioctl)(struct inode*, struct file*, unsigned int, unsigned long);int(*mmap)(struct file*, struct vm_area_struct*);int(*open)(struct inode*, struct file*);int(*flush)(struct file*);

int(*release)(struct inode*, struct file*);int(*fsync)(struct file*, struct dentry*, int datasync);int(*fsyne)(int, struct file*, int);int(*lock)(struct file*,int, struct file_lock*);ssize_t(*readv)(struct file*, const struct iovec*, unsigned long, loff_t*);ssize_t(*writev)(struct file*, const struct iovec*, unsigned long, loff_t*);ssize_t(*sendpage)(struct file*, struct page*, int, size_t, loff_t*, int);unsigned long(*get_unmapped_area)(struct file*, unsigned long, unsigned long,unsigned long, unsigned long);}

这个结构的每一个成员的名字对应一个系统调用,在用户程序利用系统调用对设备文件进行诸如读/写操作时,系统调用会通过设备文件的主设备号找到相应的驱动程序,然后读取这个数据结构的相应函数指针,把控制权交给该函数。对于具体的设备驱动并不需要实现结构中所有的例程,只要完成设备功能就可以了。例如对于一个常见的字符设备驱动来说,可能只有操作open(),write(),read(),ioctl()和close(),当用户程序通过系统调用访问设备时,最终要通过这些操作集来完成。

(3)卸载模块

当不再需要使用一个模块或设备时,需要将其从内核中卸载下来,这时会动态调用模块中的module_exit()函数,并需要在该函数中调用modul_unregister_chrdev()或module_unregister_blkdev()释放挂入内核的数据结构同时释放该设备号。

4.3USB摄像头驱动程序设计

摄像头属于视频设备,在Linux内核中,VideoforLinux(简称V4L)是关于视频设备的驱动标准。这个标准为应用程序定义了一系列的接口函数,内核、驱动和应用程序都是依靠这个标准来进行交流。本系统所使用的USB摄像头正是基于该标准来编写驱动和应用程序的。

Linux内核是依据设备号来操作设备文件的,在内核中,摄像头对应的设备文件名为/dev/video0,主设备号是81,次设备号根据摄像头数目来确定,本系统中仅使用一个摄像头,所以可以通过mknod/dev/video0 c 81 0来创建节点。USB摄像头驱动程序实现原理如图4.3所示。

USB摄像头的驱动和通用设备的驱动准则一样,但需要与内核提供的视频驱动挂钩。即首先在驱动中声明一个 video_device结构,并为其指定文件操作函数指针数组fops,向系统注册。在应用程序发出文件操作的相关命令时,核心根据这些指针调用相应函数,并将该结构作为参数传递给它们。这样,就完成了驱动和核心之间的通信。

例如: Static struct video_devie vdev_template={……};

声明 video_deviee,指出挂接驱动

用户进程系统调用摄像头驱动文件操作接口接收缓冲区发送缓冲区中断服务程序摄像头 图4.3 摄像头驱动实现框图

Static Struct file_operation spcasxx_fops= {……};

声明本驱动的文件操作函数指针 Struct video_device*vdev=video_devdata(file);从文件指针中提取出 video_deviee结构

在video_deviee结构中,有一个私有指针priv,可以将它指向一块保留内存。在这块内存中,保存着本驱动、本设备的相关初始化信息。这块内存的申请、初始化、指针指向等工作都是在USB驱动的枚举函数probe中完成。这样,在枚举函数将控制权返还给系统后,因为内核不销毁保留内存,所以驱动仍然保留着自己的信息。在驱动卸载函数中需要将申请的各块内存全部释放。

Linux系统中任何USB传输都通过URB实现。为提高速度,可以考虑扩大URB的缓冲,这样可以降低每个USB事务中握手信息所占比例,提高有效数据的输速度。但是受限于总线带宽和具体的USB设备芯片,单纯扩大URB的缓冲不能无限制地解决问题。USB在操作系统中每次传输都要包括URB的建立、发出、回收、数据整理等阶段,这些时间不产生有效数据。因此可以建立两个URB,在等待一个URB被回收时,也就是图像正在被传感器采集时,处理、初始化另一个URB,并在回收后立刻将其发出。两个URB交替使用,大大减少了额外时间。

由于嵌入式平台上运行的Linux2.4.20内核,内部已经集成了对USB2.0的支持,所以无需移植相应的USB驱动。

在设计中,摄像头芯片采用中星微的Z301系列芯片,Linux2.4内核并不支持这种芯片,所以我们通过移植芯片驱动程序来达到目的。芯片的驱动程序是spca5**系列,如果不重新编译内核的话,将驱动程序动态加载就可以正常使用。设计中动态加载的命令使用insmod命令,它和modprobe命令在使用上有所不同,modprobe在加载模块时不用指定模块文件的绝对路径,也不用带模块文件的后缀.o或.ko;而insmod需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀的.o或者.ko。但是在功能上,它们所达到的效果基本相同[13]。22

第5章视频采集功能的设计

视频采集程序是基于V4L开发的,包括摄像头的初始化、打开/关闭、参数设置和数据读取等操作,视频采集程序流程图如图5.1所示[14]。

开始初始化摄像头init_videoIn()打开摄像头open_v4l()获取摄像头参数icotl(int->vd,int cmd,..)设置摄像头参数ioctl()获取一帧图像N一帧是否截取完毕Y存储并准备传输N是否终止视频采集Y关闭摄像头终止 图5.1 视频采集程序流程图

5.1基于V4L的编程 5.1.1摄像头相关数据结构

摄像头的组成部分是传感器、DSP、镜头、外壳、USB连线、电路板和周边电路构成,其中最重要的是传感器和DSP(数字信号处理器)。本系统选用的摄像头采用了CMOS传感器和中星微301处理器。

V4L[15]提供了一系列的接口应用程序,可以利用这些程序实现对摄像头的调用,其中有read、open、ioctl等。V4l同时将这些函数和参数封装成一个数据结构vdIn。struct vdIn {

int fd;char *videodevice;struct video_mmap vmmap;struct video_capability videocap;int mmapsize;struct video_mbuf videombuf;struct video_picture videopict;struct video_window videowin;struct video_channel videochan;struct video_param videoparam;

int cameratype;char *cameraname;char bridge[9];int sizenative;int sizeothers;int palette;int norme;int channel;int grabMethod;unsigned char *pFramebuffer;unsigned char *ptframe [4];

};int framelock [4];pthread_mutex_t grabmutex;int framesizeIn;volatile int frame_cour;int bppIn;int hdrwidth;int hdrheight;int formatIn;int signalquit;

int fd :打开摄像头时,open函数返回的文件描述符,其他函数使用这个描述符对摄像头进行操作。

struct video_mmap vmmap: 用于内存映射的结构体。

struct video_capability videocap :描述摄像头基本信息,如设备名称、支持的最大分辨率、信号源信息、信道数等。

struct video_mbuf videombuf :在进行内存映射时读取帧的信息,实际上是输入到摄像头存储缓存中的帧信息。

struct video_picture videopict :摄像头采集图像的属性,如亮度、色调、对比度、色度、深度等。

struct video_window videowin :表示采集窗口参数,如分辨率等。struct video_channal videochan :关于信号源的属性。

5.1.2摄像头基本功能实现

(1)初始化摄像头参数

在对摄像头进行操作之前,要对摄像头进行初始化,即对vdIn这个结构进行初始化。使用init_videoIn 函数。

int init_videoIn(struct vdIn *vd, char *device, int width, int height, int format, int grabmethod){

int err =-1;int i;if(vd == NULL || device == NULL)return-1;

} if(width == 0 || height == 0)return-1;grabmethod = 1;//read by default;if(grab method < 0 || grabmethod > 1)// check format

vd->videodevice = NULL;vd->cameraname = NULL;vd->videodevice = NULL;vd->videodevice =(char *)realloc(vd->videodevice, 16);vd->cameraname =(char *)realloc(vd->cameraname, 32);snprintf(vd->videodevice, 12, “%s”, device);if(debug)printf(“video %s n”,vd->videodevice);memset(vd->cameraname, 0, sizeof(vd->cameraname));memset(vd->bridge, 0, sizeof(vd->bridge));vd->signalquit = 1;vd->hdrwidth = width;vd->hdrheight = height;vd->formatIn = format;

vd->bppIn = GetDepth(vd->formatIn);vd->grabMethod = grabmethod;vd->pFramebuffer = NULL;err = init_v4l(vd);for(i = 0;i < OUTFRMNUMB;i++){

} vd->frame_cour = 0;pthread_mutex_init(&vd->grabmutex, NULL);return err;vd->ptframe[i] = NULL;(unsigned char *)realloc(vd->ptframe[i], sizeof(struct frame_t)+(size_t)vd->framelock[i] = 0;vd->framesizeIn);

(2)打开摄像头

在Linux中,类似摄像头的设备是作为文件来看待的,叫做设备文件。我们可以使用open函数来对设备进行打开操作,open带有两个参数,第一个为设备文件名称,本实验的摄像头设备名称是/dev/video0,第二个则是打开的类型。

在使用open函数打开摄像头之前,要判断是否有摄像头设备,即检查参数videodevice是否为空。Open函数执行结束后会返回摄像头的文件描述符,如果返回值为-1,则说明打开设备出错。

int open_v4l(char *vd->videodevice){

if(!vd->videodevice){

printf(“No device file, ERROR opening V4L interface”);

return-1;}

if((vd->fd=open(vd->videodevice, O_RDWR))==-1){

printf(“ERROR opening V4L interface”);

return-1;} return vd->fd;}(3)获取摄像头参数

成功打开摄像头后,需要获取摄像头的一些参数,利用ioctl函数控制I/O通道来实现。Ioctl函数的使用是ioctl(int->fd, int cmd,……),fd代表文件描述符,cmd表示用户对设备的控制命令,第三个参数是一个其他的参数。其中,cmd包括VIDIOCGCAP(获得video_capbility中有关摄像头的信息)、VIDIOCGPICT(获取图像信息)、VIDIOCSPICT(改变图像信息)、VIDIOCGMBUF(获取摄像头存储缓冲区帧信息)、VIDIOCAMCAPTURE(获取视频图像)、VIDIOSYNC(判断摄像头是否截取成功)等。

读取video_capability中有关摄像头的信息

if(ioctl(vd->fd, VIDIOCGCAP, &(vd->videocap))==-1){ printf(“Fail to get video_capability!/n”);return-1;} 读取video_picture中的图像信息 printf(“Fail to get video_picture!/n”);return-1;} if(ioctl(vd->fd, VIDIOCGPICT, &(vd->videopict))==-1){

读取video_window信息

if(ioctl(vd->fd,VIDIOCGWIN,&(vd->videowin))==-1){

printf(“Fail to get video_window!/n”);

return-1;}(4)设置摄像头参数

在对摄像头参数进行设置的时候,应该按照以下步骤:比如更改图像信息,首先,先给video_picture结构中所要修改的变量赋值,如vd->videopict.palette=vd->formaIn;vd->videopict.depth=GetDepth(vd->formatIn);然后通过ioctl函数的VIDIOCSPICT来设置,如if(ioctl(vd->fd,VIDIOCSPICT,&(vd->videopict))<0){ printf(Fail to set videopict params with VIDIOCSPICT!/n“);return-1;} 在设置好了之后可以通过VIDIOCGPICT命令来查询图像信息设置是否成功。(5)关闭摄像头

在Linux编程过程中,必须养成一个好的编程习惯,就是在开启一个设备后一定要关闭它,这样可以避免很多诸如内存泄露等严重的问题。

本系统支持两种读取方式来获得视频流,它们是内存映射和直接读取,所以首先需要判断视频采集的方式,如果是内存映射,则在系统任务完成后关闭内存映射,然后关闭摄像头设备。同样道理,如果采用的是直接读取,则在任务完成后关闭直接读取,然后在关闭摄像头设备。在代码中,采用了一个判断语句,判断vd->grabMethod的值来判断系统采用哪种读取方式。int close_v4l(struct vdIn *vd){

int i;if(vd->grabMethod){

} else { free(vd->pFramebuffer);vd->pFramebuffer = NULL;if(debug)printf(“unmapping frame buffern”);munmap(vd->pFramebuffer, vd->mmapsize);

} } if(debug)printf(“close video_devicen”);close(vd->fd);/* dealloc the whole buffers */ if(vd->videodevice){

} if(vd->cameraname){

} for(i = 0;i < OUTFRMNUMB;i++){

} pthread_mutex_destroy(&vd->grabmutex);if(vd->ptframe[i]){

} free(vd->ptframe[i]);vd->ptframe[i] = NULL;vd->framelock[i] = 0;if(debug)printf(“freeing output buffer %dn”, i);

free(vd->cameraname);vd->cameraname = NULL;free(vd->videodevice);vd->videodevice = NULL;5.1.3视频数据采集

视频数据的采集是系统实现的第一步,是所有工作的前提。嵌入式Linux系统支持两种视频数据采集的方式:内存映射、直接读取视频。

(1)内存映射

内存映射方式是通过mmap系统调用函数来实现的。mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间

后,进程可以像访问普通内存一样对文件进行访问,不必再调用read()、write()等操作。

首先,使用ioctl系统调用的VIDIOCSFBUF命令获得摄像头存储缓冲区的帧信息,之后初始化video_mbuf,修改video_mmap中的设置,重新设置图像信息,如帧的垂直及水平分辨率、彩色显示格式等。为了防止缓冲区的内容与有用信息叠加产生干扰,在初始化之前可以先调用memset(&(vd->videombuf),0,sizeof(vd->videombuf)来清零缓冲区。然后使用函数vd->map=(unsigned char*)mmap(O,vd->mbuf.size,PROT_READ|PROT_WRITE,MAP_SHARED,vd->fd,ff_t offset)使设备内容映射到内存区,其中第一个参数为共享内存的起始地址,一般设为0,表示由系统分配;第二个参数为映射到调用进程地址空间的字节数,它从被映射文件开头offset个字节开始算起;第三个参数指定共享内存的访问权限(PROT_READ(可读),PROT_WRITE(可写),PROT_EXEC(可执行));第四个参数可以是MAP_SHARED或者MAP_PRIVATE;第五个参数为设备描述符。mmap()成功调用后返回系统实际分配的起始地址。

内存映射方式下真正进行视频截取的是ioctl系统调用的VIDIOCMCAPTURE命令,若函数成功调用,再用VIDIOCSYNC命令来判断图像截取是否己经完毕,若该函数调用成功,则表明一帧图像的截取已完成,便开始下一帧图像数据的截取,并将当前截取的帧号按缓冲区总帧数的模加上l。

vd->vmmap.height=vd->hdrheight;vd->vmmap.width=vd->hdrwidth;vd->vmmap.format=vd->formatln;/*判断图像截取是否完成*/ if(ioctl(vd->fd,VIDIOCSYNC,&vd->vmmap.frame)<0){ perror(„‟cvsync errn);erreur=-I;} while((vd->framelock [vd->frame_cour]!=0)&&vd->signalquit)usleep(1000);temps=ms_time();

pthread_mutex_lock(&vd->grabmutex);jpegsize=convertframe(vd->ptframe[vd->frame_cour]+sizeof(struct frame_t),vd->pFramebuffer+vd->videombuf.offsets[vd->vmmap.frame],vd->hdrwidth,vd->hdrheight,vd->formatln,vd->framesizeIn);headerframe=(struct frame_t*)vd->ptframe [vd->frame_cour];

snprintf(headerframe->header, 5,”%s”.”SPCA”);

headerframe->seqtimes=ms_time();headerframe->w=vd->hdrwidth;headerframe->h=vd->hdrheight;headerframe->size=((jpegsize<0)? 0: jpegsize);headerframe->format=vd->formatln;headerframe->nbframe=frame++;pthread_mutex_unlock(&vd->grabmutex);/*截取视频帧*/ if((ioctl(vd->fd,VIDIOCMCAPTURE,&(vd->vmmap)))<0){ perror(“cmcapture”);

if(debug)printf(“>>cmcapture err n”);erreur=-l;} vd->vmmap.frame=(vd->vmmap.frame+1)%vd->videombuf.frames;vd->frame_cour=(vd->frame_cour+l)%OUT FRMNUMB;(2)直接读取方式

直接读取视频数据是通过read系统调用函数来实现。read是一个用来从指定的文件或设备中读取数据的系统调用。参数表为read(fd,(void*)pFramebuff,(size_t)framesizeln)。其中fd为文件描述符,pFramebuffer为指向存放数据的内存的指针,framesizeln为需要读取的数据的长度。对于摄像头设备的读取,需要先分配内存空间,用来存储从摄像头读取过来的视频数据,然后直接调用read系统调用读取视频数据,返回值为实际读取的视频帧大小,也正是在视频传输过程中发送的视频数据大小。

size=vd->framesizeln;vd->pFramebuffer=(unsigned char*)realloc(vd->pFramebuffer,(size_t)size);Len=read(vd->fd, vd->pFramebuffer, size);if(len<0){ if(debug)printf(“v41 read errorn”);

if(debug)printf(“len %d asked %dn”, len, size);return 0;}

/*是否有其他进程正在使用该视频帧*/ while((vd->framelock [vd->frame_cour]!=0)&&vd->signalquit)

headerframe->deltatimes=(int)(headerframe->seqtimes-timecourant);

usleep(1000);temps=ms_time();

pthread_mutex_lock(&vd->grabmutex);jpegsize=convertframe(vd->ptframe[vd->frame_cour]+sizeof(structframe_t),vd->pFramebuffer,vd->hdrwidth,vd->hdrheight,vd->formatln,vd->framesizeln);headerframe=(struct frame_t*)vd->ptframe [vd->frame_cour];snprintf(headerframe->header, 5,”%s”,”SPCA”);headerframe->seqtimes=ms_time();headerframe->deltatimes=(int)(headerframe->seqtimes-timecourant);headerframe->w=vd->hdrwidth;headerframe->h=vd->hdrheight;headerframe->size=((jpegsize<0)? 0: jpegsize);headerframe->format=vd->formatln;headerframe->nbframe=frame++;vd->frame_cour=(vd->frame_cour+1)%OUTFRMNUMB;pthread_mutex_unlock(&vd->grabmutex);5.2图像编解码 5.2.1编解码介绍

通过摄像头采集到数据后,还并不能把它们直接通过网卡传输,因为这样的数据很大,网络不能承担如此庞大的数据传输。所以,必须将采集到得数据进行编码,压缩数据大小。通过这样的操作,我们采集到得数据就会变得很小,然后再把这些数据通过网络传输。同样的道理,在输出端我们还要把接收到的已经压缩的数据还原回来,这就涉及到解码的内容。通过这一系列的操作,图像和视频数据就实现的远程的传输。如果没有编解码,远程传输就是实际上不可能的事情,所以图像的编解码是非常重要的。

现在普遍使用的编解码技术。对于静态图像,普遍使用静态压缩JPEG标准;对于动态视频,普遍使用动态压缩MPEG标准。

JPEG是由ISO和CCITT为静态图像压缩所建立的国际上第一个静态图像压缩标准,JPEG有着较高的压缩比,复杂度适中,既可以用硬件实现,也可以用软件实现,实用性强,被广泛使用于计算机和通信行业。

MPEG中文译名为动态图像专家组。到目前为止,MPEG标准主要有五个,32

MPEG-

1、MPEG-

2、MPEG-

4、MPEG-7和MPEG-21。它是由ISO/IEC1172压缩编码标准得出的视频压缩格式,MPEG的出现使视听传播进入数码化时代。MPEG标准的视频压缩编码技术主要利用了具有运动补偿的帧间压缩编码技术以减少时间冗余度,利用DCT技术以减少图像的空间冗余度,利用熵编码技术在信息表示方面减少了统计冗余度。通过一系列技术,极大的体现了压缩性能[16]。

5.2.2系统压缩技术

由于本系统要求实现远程视频传输,为了达到预计的设计要求,设计采用基于MJPEG算法的压缩技术进行视频压缩。MJPEG和MPEG的不同点在于MJPEG不使用帧间编码。可是MJPEG与MPEG仍然是一脉相承的,它对MEPG进行了一些改进和发展,功能更加强大,能发送高质图片、清晰视频,编码容易实现。但MJPEG也有一些缺点,由于功能的提升,MJPEG对带宽的要求很高,编码效率低。

参考文献

1.张永强,赵勇勇,李崇德.嵌入式远程视频采集系统的设计与实现[J].现代电子技术,2006,05(02):57-60.2.Jing Li, Weidong Hao.Research and Design of Embedded Network Video Monitoring System Based on Linux[C].The 2008 International Conference on Embedded Software and Systems Symposia, 2008, 1310-1313.3.陈章龙,唐志强,涂时亮.嵌入式技术与系统——Intel Xscale 结构与开发[M].北 京:北京航空航天大学出版社,2004,143.4.奥尔博公司.PXA270嵌入式实验开发系统——Linux实验指导[M],2007.5.Seon Gyu Kim and Sung Ho Cho.Implementation of an Embedded Software Modem Platform[J].Division of Electrical & Computer Engineering,2006,04(2):5-9 6.杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.7.朱珍民,隋雪青.嵌入式实时操作系统及其应用开发[M].北京:北京邮电大学出版社,2006.8.李亚峰 欧文盛.ARM嵌入式Linux系统开发从入门到精通[M].北京:清华大学 33

出版社,2007,51-54.9.李善平.Linux内核2.4版源代码分析大全[M].北京:机械工业出版社,2002.10.廖日坤.ARM嵌入式应用开发技术白金手册[M].北京:中国电力出版社,2007, 284-290.11.刘昆.Linux环境下宿主机与ARM开发板NFS服务的配置[J].科技资讯,2008,05(04):65-80.12.韦东山.嵌入式Linux应用开发完全手册[M].北京:人民教育出版社,2008.13.孙纪坤,张小全.嵌入式Linux系统开发技术详解——基于ARM[M].北京:人民邮电出版社,2006.14.李冰,孙建平,谭悦,张启勤.基于嵌入式Linux与S3C2410的网络视频监控[J].河北:华北电力大学学报,2006,2(4):15-30.15.董玲,朱宏,杨忠孝.基于ARM的嵌入式Linux应用程序开发研究[J].电子测试,2008,05(06):40-60.16.Yongqiang Zhang, Bing Zhang.Design of Embedded Audio and Video Compression System[J].Workshop on Intelligent Information Technology Application,2007,12(8):76-90.17.Xing Zhang, Li-Ming Song.Implementation of Video Data Transmission Between ARM and DSP Through Embedded Linux[C].The 2008 International Conference on Embedded Software and Systems Symposia,2008,292-295.18.张跃进,谢昕.嵌入式网络数字视频监控系统的设计[J].计算机工程与设计,2009,12(9):70-100.19.Yi Wu, Jiangyong Cai, Xiao Lin, Lianfeng Shen.The Design and Realization of the Wireless Video Monitoring System Based on Embedded Linux and CDMA1X[C].The 2008 International Conference on Embedded Software and Systems Symposia, 2008, 179-184.20.王先春,郭杰荣,胡惟文,樊希平.基于ARM_Linux的嵌入式Web服务器的设计与实现[J].微计算机信息,2007,14(7):90-95.34

第三篇:基于嵌入式ARM平台的远程IO数据采集系统的研究和开发.

Research and Development of the Remote I/O Data Acquisition System Based on Embedded ARM Platform

INTRODUCTION

With the wide use of the networked, intelligent and digital distributed control system, the data acquisition system based on the single-chip is not only limited in processing capacity, but also the problem of poor real-time and reliability.In recent years, with the rapid development of the field of industrial process control and the fast popularization of embedded ARM processor, it has been a trend that ARM processor can substitute the single-chip to realize data acquisition and control.Embedded ARM system can adapt to the strict requirements of the data acquisition system, such as the function, reliability, cost, size, power consumption, and so on.In this paper, a new kind of remote I/O data acquisition system based on ARM embedded platform has been researched and developed, which can measure all kinds of electrical and thermal parameters such as voltage, current, thermocouple, RTD, and so on.The measured data can be displayed on LCD of the system, and at the same time can be transmitted through RS485 or Ethernet network to remote DAS or DCS monitoring system by using Modbus/RTU or Modbus/TCP protocol.The system has the dual redundant network and long-distance communication function, which can ensure the disturb rejection capability and reliability of the communication network.The new

generation remote data acquisition and moni-toring system based on the high-performance embedded ARM microprocessor has important application significance.STRUCTRUE DESIGN OF THE WHOLE SYSTEM

The whole structure chart of the remote data acquisition and monitoring system based on embedded ARM platform is shown in Figure 1.In the scheme of the system, the remote I/O data acquisition modules are developed by embedded ARM processor, which can be widely used to diversified industries such as electric power, petroleum, chemical, metallurgy, steel, transportation and so on.This system is mainly used for the concentrative acquisition and digital conversion of a variety of electrical and thermal signals such as voltage, current, thermal resistance, thermo-couple in the production process.Then the converted data can be displayed on the LCD directly, and also can be sent to the embedded controller through RS485 or Ethernet network communication interface by using Modbus/RTU or Modbus/TCP protocol.The data in the embedded controller platform is transmitted to the work-stations of remote monitoring center by Ethernet after further analyzed and pro-cessed.At the same time, these data can be stored in the real time database of the database server in remote monitoring center.The system has the dual redun-dant network and long-distance communication

function, which can ensure the disturb rejection capability and reliability of the communication network.The hardware platform of the Remote I/O data acquisition system based on emb-edded ARM uses 32-bit ARM embedded microprocessor, and the software plat-form uses the real-time multi-task operating system uC/OS-II, which is open-source and can be grafted, cut out and solidified.The real time operating system(RTOS makes the design and expansion of the application becomes very easy, and without more changes when add new functions.Through the division of the appli-cation into several independent tasks, RTOS makes the design process of the application greatly simple.Figure 1 Structure of the whole system THE HARDWARE DESIGN OF THE SYSTEM

The remote I/O data acquisition system based on embedded ARM platform has high universality, each acquisition device equipped with 24-way acquisition I/O channels and isolated from each other.Each I/O channel can select a variety of voltage and current signals, as well as temperature signals such as thermal resis-tance, thermocouple and so on.The voltage signals in the range of 0-75 mV ,1-5V ,0-5V, and so on, the current signals in the range of 0-10mA and 4-20 mA, the thermal resistance measurement components including Cu50, Cu100, Pt50, Pt100, and the thermocouple measurement components including K, E, S, T, and so on.Figure2.Structure of the remote I/O data acquisition system based on ARM processor The structural design of the embedded remote I/O data acquisition system is shown in Figure 2.The system equipped with some peripherals such as power, keyboard, reset, LCD display, ADC, RS485, Ethernet, JTAG, I2C, E2PROM, and so on.The A/D interface circuit is independent with the embedded system, which is independent with the embedded system, which is system has setting buttons and 128*64 LCD, which makes the debugging and modification of the parameters easy.The collected data can be sent to the remote embedded controller or DAS, DCS system by using

Modbus/RTU or Modbus/TCP protocol through RS485 or Eth-ernet communication interface also, and then be used

for monitoring and control after farther disposal.The system of RS485 has a dual redundant network and long-distance communication function.As the embedded Ethernet interface makes the remote data exchange of the applications become very easy, the system can choose RS485 or Ethernet interface through jumper to communicate with host computer.Ethernet interface use independent ZNE-100TL intelligent embedded Ethernet to serial port conversion module in order to facilitate the system maintenance and upgrade.The ZNE-100TL module has an adaptive 10/100M Ethernet interface, which has a lot of working modes such as TCP Server, TCP Client, UDP, Real COM, and so on, and it can support four connections at most.Figure3.Diagram of the signal pretreatment circuit

Figure 3 shows the signal pretreatment circuit diagram.The signals of thermo-couple such as K,E,S,T etc and 0-500mV voltage signal can connect to the positive end INPx and the negative end INNx of the simulate multiplexers(MUX directly.The 4-20mA current signal and 1-5V voltage signal must be transformed by resis-tance before connecting to the positive end INPx and the negative end INNx of the MUX of certain channel.The RTD thermal resistance signals such as Cu50, Cu100, Pt50 and Pt100 should connect one 1mA constant current before connecting to the positive end INPx and the negative end INNx of the MUX of certain channel.Figure4.Diagram of ADC signal circuit Figure 4 shows the ADC signal circuit, which using the 16-bit ADC chip AD7715.The connection of the chip and the system is simple and only need

five lines which are CS(chip select, SCLK(system clock, DIN(data input, DOUT(data output and DRDY(data ready.As the ARM microprocessor has the characteristics of high speed, low power, low voltage and so on, which make its capacity of low-noise, the ripple of power, the transient response performance, the stability of clock source, the reliability of power control and many other aspects should be have higher request.The system reset circuit use special microprocessor power monitoring chip of MAX708S, in order to improve the reliability of the system.The system reset circuit is shown in Figure 5.Figure5.Diagram of system reset circuit

SOFTWARE DESIGN AND REALIZATION OF THE SYSTEM

The system software of the remote I/O data acquisition system based on embedded ARM platform use the real-time operating system(RTOS uC/OS-II, which is open-source and can be grafted,cut out and solidified.The key part of RTOS is the real-time multi-task core, whose basic functions including task management, resource management, system management, timer management, memory management, information management, queue management and so on.These functions are used though API service functions of the core.The system software platform use uC/OS-II real-time operating system core simplified the design of application system and made the whole structure of the system simple and the complex application hierarchical.The design of the whole system includes the tasks of the operating system and a series of user applications.The main function of the system is mainly to realize the initialization of the system hardware and the operating system.The initialization of hardware includes interr-upt、keyboard、LCD and so on.The initialization of operating system includes the control blocks and events control blocks, and before the start of multi-task schedu-ling, one task must be started at least.A start task has been created in this system, which is mainly responsible for the initialization and startup of clock, the start-up of interruption, the initialization of communication task module, as

well as the division of tasks and so on.The tasks must be divided in order to complete various functions of the real-time multi-task system.Figure6.Functional tasks of the system software Figure6 shows the functional tasks of the system software.According to importance of the tasks and the demands of real-time, the system applications are divided into six tasks with different priority, which including the tasks of A/D data acquisition, system monitoring, receive queue, data send, keyboard input, LCD display.The A/D data acquisition task demands the highest real-time requirements and the LCD display task is the lowest.Because each task has a different priority, the higher-priority task can access the ready one by calling the system hang up function or delay function.Figure7.Chart of AD7715 data transfer flow Figure 7 shows the data conversion flow of AD7715.The application A/D conversion is an important part of the data acquisition system.In the uC/OS-II real-time operating system core, the realization process of A/D driver depends mainly on the conversion time of A/D converter, the analog frequency of the conversion value, the number of input channels, the conversion frequency and so on.The typical A/D

conversion circuit is made up of analog multiplexer(MUX, amplifier and analog to digital converter(ADC.Figure8.Diagram of the application transfer driver Figure8 shows the application procedure transfer driver.The driver chooses the analog channel to read by MUX, then delay a few microseconds in order to make the signal pass through the MUX, and stabilize it.Then the ADC was triggered to start the conversion and the driver in the circle waiting for the ADC until its completion of the conversion.When waiting is in progress, the driver is detecting the ADC state signal.If the waiting time is longer than the set time, the cycle should be end.During waiting time of the cycle, if the conversion completed signal by ADC has been detected, the driver should read the results of the conversion and then return the result to the application.Figure9.Diagram of serial receive Figure9 shows the serial receive diagram with the buffer and signal quantity.Due to the existence of serial peripheral equipment does not match the speed of CPU, a buffer zone is needed, and when the data is sending to the serial, it need to be written to the buffer, and then be sent out through serial one by one.When the data is received from the serial port, it will not be processed until several bytes have been received, so the advance data can be stored in buffer.In practice, two buffer zones, the receiving buffer and the sending buffer, are needed to be opened from the memory.Here the buffer zone is defined as loop queue data structure.As the signal of uC/OS-II provides the overtime waiting mechanism, the serial also have the overtime reading and writing ability.If the initialization of the received data signal is 0, it expresses the loop buffer is empty.After the interrupt received, ISR read the received bytes from the UART receiving buffer, and put into receiving buffer region, at last wake the user task to execute read operation with the help of received signal.During the entire

process, the variable value of the current bytes in recording buffer can be inquired, which is able to shows whether the receive buffer is full.The size of the buffer zone should be set reasonable to reduce the possibility of data loss, and to avoid the waste of storage space.CONCLUSIONS

With the rapid development of the field of industrial process control and the wide range of applications of network, intelligence, digital distributed control System, it is necessary to make a higher demand of the data accuracy and reliability of the control system.Data acquisition system based on single-chip has been gradually eliminated because the problem of the poor real-time and reliability.With the fast popularization of embedded ARM processor, there has been a trend that ARM processor can alternate to single-chip to realize data acquisition and control.The embedded ARM system can adapt to the strict requirements of the data acquisition system, such as the function, reliability, cost, size, power consum-ption, and so on.In this paper, A kind of ARM-based embedded remote I/O data acquisition system has been researched and developed, whose hardware platform use 32-bit embedded ARM processor, and software platform use open-source RTOS uC/OS-II core.The system can be widely applied to electric power, petroleum, chemical, metallurgy, steel, transportation and so on.And it is mainly used in the collection and monitoring of all

kinds of electrical and thermal signals such as voltage, current, thermal resistance, thermocouple data of the production process.Then these data can be sent to the remote DAS, DCS monitoring system through RS485 or Ethernet interface.The system has the dual redundant network and long-distance communication function, which can ensure the disturb rejection capability and reliability of the communication network.基于嵌入式ARM平台的远程I / O数据采集系统的研究和开发

导言

随着网络化,智能化,数字化分布式控制系统的广泛使用,基于单芯片的数据采集系统不仅在处理能力上受限制,并且在实时性和可靠性方面也出现了问题。近几年来,随着工业过程控制领域的迅速发展和嵌入式ARM处理器的迅速普及,ARM处理器代替单芯片实现数据的采集和控制成为了趋势。嵌入式ARM系统能适应数据采集系统的严格要求,如功能性,可靠性,成本,体积,功耗等等。

在本文中提出一种新型的基于ARM嵌入式平台的远程I / O数据采集系统已被研制开发,它可以衡量各种电气和热参数,如电压,电流,热电偶,热电阻等等。那个测量数据可以显示在液晶显示器的系统中,同时可通过使用Modbus / RTU或的Modbus / TCP协议从RS485或以太网网络传送到DAS或DCS远程监控

系统。该系统具有双冗余网络和长途电通信功能,它可以确保通信网络的干扰抑制能力和可靠性。基于高性能嵌入式ARM微处理器的新一代远程数据采集和监控系统具有重要的应用意义。

整个系统的结构设计

基于嵌入式ARM的平台的远程数据采集和监控系统的整个结构图在以下的图1中展示。在这系统的计划中,通过使用广泛用于多种行业如电气电力,石油,化工,冶金,钢铁,运输等的嵌入式ARM处理器来开发远程I / O数据采集模块。该系统主要用于的集中采购和将各种电和热信号如电压,热电阻,热电偶在生产过程中进行数字转换。转换的数据可直接在液晶显示器上显示,也可以通过使用的Modbus / RTU或的Modbus / TCP协议的RS485总线或以太网网络通信接口被发送到嵌入式控制器。嵌入控制器平台的数据通过进一步以太网的分析和处理被传送至远程监控中心的工作站。与此同时,这些数据可以存储在远程监控中心数据库服务器的实时数据库中。该系统具有双冗余网络和远程通讯功能,它可以确保通信网络的干扰抑制能力和可靠性。

基于嵌入式ARM远程I / O数据采集系统的硬件平台使用32位ARM嵌入式微处理器和软件平台使用的是开源的并且可移植,削减和巩固的实时多任务操作系统的第二代UC / OS核心。实时操作系统(RTOS)使设计和应用的扩大变得非常容

易,增加新的功能时也没多大变化。通过几个独立的任务的应用,实时操作系统使得应用的设计过程极为简单。

系统的硬件设计

基于嵌入式ARM平台的远程I / O数据采集系统具有很高的普遍性,每个购置设备配备24收购方式的I / O渠道且彼此孤立。每个I / O通道可以选择不同的电压和电流信号,以及温度信号如热电阻,热电偶等。在05V的,010毫安和4100TL智能嵌入式以太网串口转换模块。该ZNE500mV的电压信号可以直接接到模拟多路复用器(复用器)的INPx正极和INNx负极。45V的电压信号必须用阻抗转换。热电阻的电阻信号如Cu50,Cu100,Pt50和Pt100应在接到某些频道的复用器INPx正极和INNx负极前连接一1毫安的恒流源。

图4显示了使用16位ADC芯片AD7715的ADC信号电路。芯片与系统的连接非常简单,只需要CS(芯片选择),SLCK(系统时钟),DIN(数据输入),DOUT(数据输出)和DRDY(数据准备)5根线。

由于ARM微处理器具有高速,低功耗,低电压等优点,这使它在低噪音,纹波权力,瞬态响应性能,时钟来源的稳定,功率控制和许多其他方面需要有更高的要求。为了改善系统的可靠性该系统复位电路中使用特殊的微处理器电源监测芯片MAX708S。图5展示了该系统复位电路。

系统软件的设计与实现

基于嵌入式ARM平台的远程I / O数据采集系统的软件使用的是开源的并且可移植,削减和巩固的实时多任务操作系统的第二代UC / OS核心。RTOS的关键部分是实时多任务的核心,其基本功能包括任务管理,资源管理,系统管理,计时器管理,内存管理,信息管理,队列管理等。通过API服务职能核心使用这些功能。

该系统软件平台使用的是单一化的uC/ OS第二代实时简化操作系统核心,使整个结构系统简单和应用层次复杂。整个系统的设计包括操作系统的任务和一系列的用户应用程序。系统的主要职能是实现系统硬件和操作系统的初始化。硬件初始化包括中断,键盘,液晶显示器等。操作系统初始化包括控制模块和事件控制,在多任务调度前,至少有一个任务开始。一个开端任务已建立在这一系统,这系统主要负责初始化和启动的时钟,开办中断,通信任务模块的初始化,以及任务分工等。为了完成实时多任务系统的多种职能那个任务必须被划分。

图6显示系统软件的功能任务。根据任务的重要性和实时要求,系统的应用曾划分为六个不同优先级的任务,其中包括A / D数据采集任务,系统监控,接受队列,数据传送,键盘输入,液晶显示屏显示。A / D数据采集任务要求最高的实时要求和液晶显示器显示任务是最低的。因为每个任务都有不同的优先事项,通过使用系统挂断功能或延迟功能更高的优先任务可以开始已经准备好的任务。

图7显示的是AD7715的数据转换流。A / D转换器的应用是数据采集系统的一个重要组成部分。在uS/ OS的第二代实时操作系统的核心中,A / D驱动程序的实现过程主要取决于A / D转换器的转换时间,有转换价值的模拟频率,输入通

道的数量,转换频率等等。典型的A / D转换电路由模拟复用器(复用器),放大器和模拟到数字转换器(ADC)组成。

图8显示了申请程序转移的驱动程序。驱动程序可以在模拟通道读取由复用器,那么几微秒的延迟,以便使信号通过多路开关,并使其稳定。然后,当转换开始时,ADC被触发,并且驱动程序在一个周期内等待ADC的触发,直到完成转换。当等待的进展,该驱动程序检测ADC的状态信号。如果等待时间比规定的时间越长,周期应该结束。在等待的周期时间,如果转换完成ADC的信号被检测到,驱动程序应改为转换的结果,然后将结果返回给应用程序。

图9显示了缓冲区和信号量的序列接收图。由于外围串行设备的存在CPU的运行速度匹配,一个缓冲区是必要的,当数据发送到序列,它必须被写入缓冲区,然后通过串行逐一地被发送出去。当从串行端口收到数据,这些数据将不会被处理直到收到一些字节,因此先前的数据可以存储在缓冲区中。在实践中,两个缓冲区,一个接收缓冲区和一个发送缓冲区,它们是需要从内存开放出来。在这里缓冲区像循环队列数据结构一样被定义。

由于uC/OS-II提供额外时间等待机制的信号,串口也具有额外的阅读和写作能力。如果收到的数据信号初值为0,它表示循环缓冲区是空的。在中断收到后,ISR从UART接受缓冲区中读到收到的数据,并投入接收缓冲区域,最后通过收到的数据开始用户执行读操作的的任务。在整个过程中,变量价值目前字节在存储缓冲区中的字节的变量值是可以被询问的,这能够表明接收缓冲区是否已满。为了降低数据丢失的可能性和避免浪费存储空间应合理地设置缓冲区的大小。

结论

随着工业过程控制领域的快速发展和网络,智能,数字化分布式控制系统广泛应用,有必要发展对数据准确性和控制可靠性要求更高的系统。由于较差的实时性和可靠性基于单片机数据采集系统已逐步被淘汰。随着嵌入式ARM处理器的迅速普及,ARM处理器替代单芯片实现数据采集与控制成为了一种新的趋势。嵌入式ARM系统能够适应数据采集系统的严格要求,如功能,可靠性,成本,大小,耗电量等等。

在本文中一种基于ARM的嵌入式远程I / O数据采集系统已被研究和开发,其硬件平台采用32位嵌入式ARM处理器和软件平台的使用开源的RTOS uS/ OS-Ⅱ核心。该系统可广泛应用于电力,石油,化工,冶金,钢铁,交通运输等方面。这是主要用于收集和监测各种电气和热信号,如电压,电流,热电阻,生产过程中的热电偶数据。然后通过RS485或以太网接口将这些数据发送到远程的DAS,DCS控制系统的监测系统。该系统具有双冗余网络和长途通信功能,它可以确保干扰抑制和通信网络的可靠性。

第四篇:数据采集系统设计研究论文

摘要:针对LabVIEW及MSP430F5529单片机构成的多路数据采集系统研究及设计,分为上位机和下位机两个主要模块来进行阐述。MSP430F5529作为前端数据采集系统进行数据采集,采集到的电压通过串口传到上位机LabVIEW界面。

关键词:MSP430F5529,单片机,数据采集,LabVIEW

LabVIEW程序设计方面相对来说比较简单,但是,Lab-VIEW的使用灵活性和功能完整性也很强大。MSP430F5529单片机多路电压数据采集系统的设计,从结构上来看比较简单,此类单片机工作电压区间比较低,耗能相对较低,内部集成了许多功能模块,功能完整性比较强大。结构简单的单片机系统与LabVIEW上位机的串行通信的功能结合,增加了系统灵活性。同时,又利用了MSP430F5529的超低耗功能,降低成本,使用简便。另外,虚拟仪器除了在物理形式上实现之外,也可以实现系统内的软件、硬件资源共享。将两者结合的多路电压数据采集系统无论是从运行效率还是编程方式,都展现了强大的优势。

1数据采集系统

1.1数据采集系统需求基于LabVIEW及单片机构成的多路电压数据采集系统研究和设计,其中MSP430F5529单片机、ADC转换器组成的下位机数据采集系统实现采集电压的功能;采集到的多路电压信号被发送至LabVIEW程序功能模块进行分析和处理,并显示数据处理的结果;研究电平的转换。下位机的TTL电平转换成上位机能够接收的RS232电平。首先系统进行初始化,然后单片机通过串口进行多路数据采集,打开ADC转换器,开始转换,读取转换结果。然后发送到上位机界面,显示得到的数据处理结果。1.2数据采集系统方案设计的采集系统以上位机数据显示界面和数据采集系统实物的形式呈现,研究上位机与下位机的数据交互机制,实现数据的交互。方案:在上位机与下位机之间需要研究一个电平转换,采用MSP430系列单片机作为下位机采集模块,LabVIEW作为上位机处理模块;两个模块之间加入电平转换模块,采用的是CP2102转换芯片。此方案编程简单且方便,成本也相对较低,从整体来说也比较严谨。系统初始设计时,第一部分设计下位机单片机模块,启动A/D转换,得到的转换结果发送到单片机处理。并且加入了LCD显示模块;第二部分设计上位机LabVIEW程序处理模块,将采集到的结果上传到上位机显示。设计方案的流程图如图1所示。

2下位机采集系统设计此次设计采用

MSP430F5529Launchpad,MSP430F5529开发板内部集成A/D转换模块,多路电压采集系统下位机的重点在于A/D转换,所谓A/D转换即指模拟量等转换为数字量。MSP430F5529单片机可以自定义参考电压,此次设计的参考电压设计的是3.3V。所以本数据采集系统可采集的电压范围是0~3.3V。本设计是采集多路电压,转换的方法模式是采用转换速度较快的序列通道多次转换,提高转换速率。在程序设计里面是用ADC12CONSEQ_3来选择采样模式。同时,定义了ADC12SHP等于1,来定义信号的来源是采样定时器。ADCMEMx存储器用来存储转换结果。此类存储器是CSTARTADDx位定义的。参考电压和通道是需要经过定义才能工作的,一般是通过ADC12MCTLx寄存器。多路电压数据采集的下位机流程图如图2所示。首先执行端口初始化,第一步便是关闭看门狗,在MSP430单片机中,主程序首先要关闭看门狗,如果不关闭看门狗,程序执行一段时间后,可能会导致程序无法运行。因为看门狗有定期重置CPU的功能。然后端口定义,ADC转换和串口通信的工作模式的初始化,之后进入中断采集数据,在有信号输入的时候才会进入中断,如果没有外部电压信号的输入不会进行中段。采集电压信号后开始转换,转换完成之后数据被传送两个方向:一是传送到LCD显示,二是发送到上位机LabVIEW程序界面显示。在AD转换的过程中是进入中断进行数据测量的,此次多路数据采集系统的下位机设计的中断标志位采用ADC12IFG寄存器设置。MSP430单片机的中断可以说是非常大的一个亮点。想要有效提高程序运行的速率,在程序中加入中断便可实现。MSP430单片机的每个片上运行后,CPU便被唤醒,此时低功耗模式是不存在的,中断完成后,CPU脱离唤醒模式。此时的单片机回到低功耗状态。在下位机串口发送方面,U-CA0CTL控制寄存器来定义了时钟源,需要通过相应的时钟源来确定波特率,此控制寄存器的第0位是USCWRST,它具有软件复位的功能,在设计中需要使它置1,那么逻辑将会在复位状态一直保持。第6到7位的UCSSEL,用来选择时钟源,时钟源选择的是AMCLK,那么UCSSEL的状态是01,此时的波特率需要求出相应的分频细数来定义,AMCLK的频率是32768Hz。跟据定义,在低频时钟的情况下,分频参数是时钟频率与波特率的比重,此次设计的波特率是9600,因此可以得出的是分频参数是3.41,所以,UCA0BR0等于3。

3显示界面上位机设计

3.1上位机LabVIEW设计此次多路电压数据采集系统的上位机LabVIEW程序流程图如图3所示。上位机的部分,首先设计了单路的电压数据采集系统,其程序框图如图4所示。上位机LabVIEW的设计首先是配置串口参数,参数的配置与下位机端要保持一致,参数配置完成后要进入while循环中的VISAREAD,读取从下位机传来的数据。单路数据采集就是直接显示电压。加入while循环的目的是使程序可以一直运行,而且是直接只运行读取缓冲区数据部分,不用每次都配置串口参数,提高了程序运行速率。3.2TTI与RS232电平转换MSP430单片机输出的L电平与上位机接收的电平不是同一种,分别为TTL和RS232。所以上位机与下位机之间需要进行转换,15V~5V指的是RS232电平逻辑1时的状态,而逻辑0的话,是在+5V~+15V,而TTL电平逻辑0在0~0.8V之间,逻辑1在2.4V~5V之间,所以在TTL电平与RS232之间,需要进行正负逻辑的转换。在此次设计中选用的是主要由CP2102转换芯片构成的转换模块。同时里面也集成了MAX2485和MAX232通信芯片。CP2102是一种品质较好,工作比较稳定的且性能强大的转换芯片。整个转换模块体积小,便于移动。此次设计用MSP430F5529专门用于串口发送的P3.3口与RX引脚连接。如图5所示。CP2102的RX引脚专门用来接收TTL电平。CP2102的另一端与电脑相连,打开上位机LabVIEW程序,串口信息配置好之后,便可以显示采集的电压数据。

4多路电压数据采集系统测试

为了便于系统能够成功采集数据,采集的电压采取就近原则,直接采集单片机管脚电压,此次测试三次电压分别为:3.3V电源管脚电压、普通管脚电压(1.78V)以及GND管脚电压(0V)。由于误差作用,系统不能准确测到3.3V,以及3.3V会对旁边线路产生影响,所以第二路电压信号会从1.78V拉高到2.76V,第三路接地,所以是0.00V。除去显示结果以外,增加了波形显示,使采集到的电压变化变得一目了然。此外加入了串口工作灯指示,在串口正常工作的情况下,串口灯是绿色,在串口工作异常的情况下,串口灯是红色。改变某一路电压后,把第三路采集电压的管脚从接地端拔了下来,悬空时的电压是1.78V,同样会被3.3V的电压拉高,电压的变化直接在上位机界面呈现出来,直观明了,如图7所示。波形显示的坐标是可以自动变换的,根据数据的大小智能变换,改变采集管脚的电压后,如图8所示。

5结束语

基于MSP430F5529和LabVIEW进行多路电压数据采集系统,实际应用的结果,下位机与上位机的通信功能正常,操作也非常简单方便,完成了设计之初的要求,可以实现的功能有:①采集三路0V~3.3V的电压;②采集到的电压在LCD屏显示;③采集到的电压上传至LabVIEW上位机数据采集编写模块显示;④上位机LabVIEW界面显示电压数据及电压波形。研究并实现了MSP430F5529单片机的数据采集及处理、ADC转换、TTL电平转RS232电平、上位机与下位机之间的串口通信。同时,此次设计也存在些许不足:①只能采集三路数据;②不能调取历史采集数据。

参考文献

[1]陈美玉.基于单片机及LabVIEW的多路数据采集系统设计[J].企业技术开发,2017,36(1):69-71

[2]王克胜.系统软件设计及控制分析[J].科技与企业,2013(4):81-81

[3]段新燕.单片机液晶显示系统的设计[J].电子科技,2012,25(8):13

[4]周丽,裴东兴.基于MSP430单片机的超低功耗温度采集系统设计[J].电子测试,2011(10):35-38

第五篇:单位数据采集系统用户手册

西安市医疗保险数据采集系统(单位端)

西安市医疗保险管理信息系统

单位数据采集子系统

用 户 手 册

Ver 1.0

沈阳东软软件股份有限公司

二零零二年四月 西安市医疗保险数据采集系统(单位端)

目 录.............................................................2 版权声明............................................................3 第一章 系统概要介绍................................................5

§1.1 系统进入说明..................................................................................................................5

§1.2 系统主界面介绍..............................................................................................................5 §1.3 系统主要功能介绍..........................................................................................................5

第二章 缴费工资...................................错误!未定义书签。

§2.1 界面布局如下:..............................................................................................................6 §2.2 操作说明..........................................................................................................................6

第三章 医疗保险数据采集............................................8

§3.1界面布局如下图:...........................................................................................................8 §3.2操作说明:.......................................................................................................................9

第四章 其他........................................................9

§4.1 实用工具........................................................................................................................10 §4.2 窗口................................................................................................................................11 §4.3 退出................................................................................................................................11 §4.4 帮助................................................................................................................................11

西安市医疗保险数据采集系统(单位端)

版权声明

西安市医疗保险信息管理系统Ver1.00版权归沈阳东软软件股份有限公司所有,任何侵犯版权的行为将被追究法律责任。未经沈阳东软软件股份有限公司的书面准许,不得将本手册的任何部分以任何形式、采用任何手段(电子的或机械的,包括照相、复制或录制)、或为任何目的,进行复制或扩散。

(C)copyright 2000—2003沈阳东软软件股份有限公司。版权所有,翻制必究。

是沈阳东软软件有限公司的注册商标。

单位数据采集系统用于单位报盘,各单位操作员在使用本系统时必须详细阅读此说明书,严格按照操作规范;如果因为操作员的失误而造成数据的不准确性,其后果由操作员自行负责。

西安市医疗保险数据采集系统(单位端)

阅读指南

〖手册目标〗

本手册是沈阳东软软件股份有限公司的软件产品——西安市医疗保险管理信息系统单位数据采集子系统的用户手册。本手册详细介绍了该系统的操作过程。

〖阅读对象〗

本手册是为西安市医疗保险信息管理系统单位数据采集子系统涉及的医疗保险参保单位相关的操作人员编写的。用户在使用西安市医疗保险信息管理系统单位数据采集子系统之前,应该首先阅读本手册,以避免误操作。

西安市医疗保险数据采集系统(单位端)

第一章

系统概要介绍

§1.1 系统进入说明

正确安装单位数据采集子系统(在桌面有快捷图表):企业数据采集,点击即启动本系统。

§1.2 系统主界面介绍

双击图标后出现如下主界面:

§1.3 系统主要功能介绍

系统包括的功能有:

单位年审:完成参保职工在每年工资变更时的维护工作。新参保人员上报:采集本次要进入医疗保险信息库中的数据。单位基本信息变更:完成对医疗保险信息库中的单位信息的修改。

西安市医疗保险数据采集系统(单位端)

第二章 单位年审

该业务主要是用于对参保职工工资变更时由单位批量的修改后再报盘给医疗保险管理事业处。主要是在每年年审的时候使用!

§2.1 界面布局如下:

图2-1 §2.2 操作说明

1.点击【取档】按钮,出现如下的选择文件的选择文件的窗口:

西安市医疗保险数据采集系统(单位端)

图2-2 选择一个扩展名为dbf的文件,然后打开,如果数据格式不是很符合规范或不是有效的导出数据,会出现一些提示,禁止用户导入。选择确定,取出数据,如图2-3:

图2-3 在此基础上修改数据,修改完毕后,点击【保存】按钮,进行数据准确性校验并且保存,然后出现如图2-2的界面,把数据重新存储为一个扩展名为dbf的文件,用于上报医保处。

【单位名称输入】如需在打印“工资申报花名册”报表时,在表头添加单位名称,则需在此录入单位名称。

【打印】把所有的数据打印出来;

【清屏】清除屏幕,使窗口回到如图2-1界面。

【关闭】关闭此窗口,进行其他业务的工作。如果数据修改,也会提示保存!注意:修改数据时要格外仔细,以免造成数据的不准确性。【查询】点击此查询按钮的时候,弹出如2-4的查询条件窗口:

西安市医疗保险数据采集系统(单位端)

图2-4 输入姓名或者身份证号然后按【确定】按钮可以查找出对应的数据,并定位光标到符合条件的行,如果没有符合条件的数据,则查询不出!

第三章 新参保人员上报

该业务主要是用于一个新参保单位的员工批量新参保时的数据采集。

§3.1界面布局如下图:

图3-1 8 西安市医疗保险数据采集系统(单位端)

§3.2操作说明:

点击【添加】按钮,出现如下界面:

图3-2 在此界面下录入一个新参保人员的基本信息,录入完后,再按【添加】按钮再次添加一个新参保人员的基本信息。

如果发现其中某条信息不正确,则选中其中该条信息,按【删除】按钮就可以删除光标所在行的信息,注意:删除时要十分小心,以免误操作!

在数据正确无误的录入完毕后,按【存盘】按钮,出现如图3-2所示的界面,把所有数据存为一个扩展名为dbf的文件,用于上报医保处。

【打印】把所有数据打印出来;

【关闭】关闭该窗口,进行其他的业务操作。关闭窗口的时候会提示保存数据!注意:录入数据时要格外小心,如果由于录入员疏忽造成数据不准确,其后果由录入员自行负责。

【取上次存档文件】紧接上次保存文件进行数据录入。

第四章 单位信息变更

该业务主要是用于单位基本信息的变更修改。西安市医疗保险数据采集系统(单位端)

§4.1界面布局如下图:

图4-1 §4.2操作说明:

在此界面下录入单位需要变更的基本信息,录入完后,再按【添加】按钮再次添加一个新参保人员的基本信息。

如果发现其中某条信息不正确,则选中其中该条信息,按【清屏】按钮就可以删除光标所在行的信息,注意:删除时要十分小心,以免误操作!

在数据正确无误的录入完毕后,按【存盘】按钮,出现如图3-2所示的界面,把所有数据存为一个扩展名为bg的文件,用于上报医保处。

【打印】把所有数据打印出来;

【关闭】关闭该窗口,进行其他的业务操作。关闭窗口的时候会提示保存数据!注意:录入数据时要格外小心,如果由于录入员疏忽造成数据不准确,其后果由录入员自行负责。

第五章

其他

§5.1 实用工具

为了方便操作员,程序中集成了windows操作系统的工具:计算器和记事本。西安市医疗保险数据采集系统(单位端)

§5.2 窗口

可以改变窗口的几种显示方式,用户可以根据自己的需要选择。

§5.3 退出

退出系统操作。

§5.4 帮助

关于,可以查阅一些基本信息,如系统信息,软件版本信息等,如下图:

图5-1 11

下载基于ARM的数据采集系统的设计--优秀毕设申请材料word格式文档
下载基于ARM的数据采集系统的设计--优秀毕设申请材料.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    基于嵌入式ARM平台的远程I O数据采集系统的研究和开发

    苏州大学本科生毕业设计(论文) Research and Development of the Remote I/O Data Acquisition System Based on Embedded ARM Platform INTRODUCTION With the wide use of......

    小型车辆信息管理系统毕设论文

    北京城市学院2014届毕业设计 小型车辆信息管理系统的设计与实现 学生姓名:学 号:班 级:专 业:学 部:指导教师: 穆高佳 10111611123 10计本一 计算机科学与技术 信息学部......

    基于USB的数据采集系统的研究与设计--总结

    基于 USB 的数据采集系统的研究与设计 目前,市场上有几百种 USB 设备,包括 USB 集线器、打印机、扫描仪器、存储器、数码相机和调制解调设备等。在数据采集系统中应用 USB2.0......

    FPGA数据采集与回放系统设计论文[推荐五篇]

    FPGA数据采集与回放系统设计论文在个人成长的多个环节中,大家或多或少都会接触过论文吧,论文是我们对某个问题进行深入研究的文章。怎么写论文才能避免踩雷呢?下面是小编为大家......

    2010年毕设工作总结(优秀范文五篇)

    2010年毕设工作总结 第一、 毕设题解 A、 终极目的:改善特定型号(武汉华大050型)伺服电机的控制性能 B、 实现目的的障碍: 1、电机的非线性(磁化曲线的非线性) 2、气隙磁场的非理......

    基于ARM的指纹识别门禁系统设计

    HUBEI NORMAL UNIVERSITY 嵌入式课程设计报告 课题: 指纹识别门禁系统设计 姓名: 万苗 学号: 20*** 院系: 计算机科学与技术学院班级: 1303班导师: 曹杉杉 第 1 / 23......

    基于ARM的IP网络电话系统设计.

    海思工作室 杭州汇文教育咨询有限公司 ——VoIP电话方案投标书 海思工作室 海思工作室 VoIP电话方案投标书 目 录 一、公司介绍以及项目综述 ...................................

    基于VC的PLC数据采集管理系统

    龙源期刊网 http://.cn 基于VC的PLC数据采集管理系统 作者:李 波 舒朝君 江 彦 余 磊 刘永喜 胡玉庆 皮智敏 来源:《现代电子技术》2009年第06期......