第一篇:基于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定義在
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