艾 紅,錢運(yùn)鍇
(北京信息科技大學(xué)自動化學(xué)院,北京 100192)
采集生產(chǎn)過程的實時數(shù)據(jù)進(jìn)行監(jiān)控和監(jiān)測是科學(xué)管理生產(chǎn)的重要基礎(chǔ)。如果生產(chǎn)過程分布范圍不大,可采用近距離監(jiān)測。但有的生產(chǎn)現(xiàn)場分布地域較廣,如電力、鐵路、采礦和石油等,要對相距遙遠(yuǎn)的生產(chǎn)過程進(jìn)行遠(yuǎn)程監(jiān)控和監(jiān)測,如仍沿用就近監(jiān)測的辦法在技術(shù)上和經(jīng)濟(jì)上都是不足取的,必須采用遠(yuǎn)程監(jiān)測技術(shù)。遠(yuǎn)程監(jiān)控是利用計算機(jī)、測量儀表、遠(yuǎn)程通信設(shè)備對遙遠(yuǎn)現(xiàn)場的數(shù)據(jù)進(jìn)行監(jiān)控和測量。基于嵌入式網(wǎng)絡(luò)技術(shù),研究并實現(xiàn)了一種用于嵌入式設(shè)備的監(jiān)控系統(tǒng)。該系統(tǒng)采用客戶端和服務(wù)器架構(gòu),通過在嵌入式設(shè)備中內(nèi)建一個嵌入式WEB服務(wù)器,可使得相應(yīng)的嵌入式設(shè)備直接接入Internet。同時用戶可使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器,對此設(shè)備進(jìn)行訪問控制和管理[1-2]。
通常嵌入式系統(tǒng)的軟件編譯和執(zhí)行是在兩個不同平臺上進(jìn)行的。編譯過程在宿主機(jī)即PC機(jī)的Linux虛擬機(jī)中完成,執(zhí)行是在目標(biāo)機(jī)即S3C2410為核心的嵌入式系統(tǒng)硬件平臺。在宿主機(jī)上通過跨平臺交叉編譯器把源文件編譯成目標(biāo)平臺上可執(zhí)行的文件,再通過串口或者網(wǎng)絡(luò)下載至目標(biāo)平臺上的Flash或者其他存儲介質(zhì),然后由目標(biāo)機(jī)運(yùn)行這些文件。交叉編譯器和一般的編譯器功能類似,是把源代碼通過編譯器編譯成目標(biāo)文件,然后通過鏈接器、可重定位器程序和定位器把目標(biāo)文件重新定位成可執(zhí)行文件。與通用的編譯器之間最大的差別在于跨平臺編譯器編譯出來的可執(zhí)行程序通常只能在特定CPU所屬平臺上運(yùn)行。所以一般來說每種CPU都對應(yīng)有不同的跨平臺編譯器。系統(tǒng)設(shè)計采用基于ARM9的S3C2410開發(fā)板,使用的ARM交叉編譯器為 arm-linux-gcc-3.3.2版本,對目標(biāo)平臺的操作通過Xshell軟件完成。將平臺與PC機(jī)通過串口連接,配置好端口和波特率后,便可通過串口在目標(biāo)平臺上執(zhí)行相關(guān)指令[3-4]。
Linux中的驅(qū)動設(shè)計是嵌入式Linux開發(fā)中十分重要的部分,不僅要熟悉Linux的內(nèi)核機(jī)制、驅(qū)動程序與用戶級應(yīng)用程序的接口關(guān)系、考慮系統(tǒng)中對設(shè)備的并發(fā)操作等等,而且還要熟悉所開發(fā)硬件的工作原理。Linux的驅(qū)動開發(fā)調(diào)試有兩種方法,一種是直接編譯到內(nèi)核,再運(yùn)行新的內(nèi)核來測試。另外一種是編譯為模塊形式,單獨加載運(yùn)行調(diào)試。第一種方法效率較低,但在某些場合是唯一的方法。模塊方式調(diào)試效率很高,使用insmod工具將編譯的模塊直接插入內(nèi)核,如果出現(xiàn)故障,可以使用rmmod從內(nèi)核中卸載模塊。不需要重新啟動內(nèi)核,使驅(qū)動調(diào)試效率大大提高。系統(tǒng)設(shè)計中的驅(qū)動除USB攝像頭驅(qū)動外均編譯為模塊形式。當(dāng)模塊與內(nèi)核鏈接時,insmod會檢查模塊和當(dāng)前內(nèi)核版本是否匹配。每個內(nèi)核版本都需要特定版本的編譯器支持。如系統(tǒng)用到Linux-2.6.24內(nèi)核需要3.3.2的GCC版本編譯器。Linux-2.6版本的insmod命令裝載模塊時,從/lib/modules目錄和內(nèi)核相關(guān)的子目錄中查找模塊文件,可以使用命令insmod module.ko從當(dāng)前目錄裝載。驅(qū)動程序與應(yīng)用程序不同,驅(qū)動程序沒有main函數(shù),通過使用宏module_init(初始化函數(shù)名)將初始化函數(shù)加入內(nèi)核全局初始化函數(shù)列表中,在內(nèi)核初始化時執(zhí)行驅(qū)動的初始化函數(shù),完成驅(qū)動的初始化和注冊。驅(qū)動程序中有一個宏module_exit(退出處理函數(shù)名)注冊退出處理函數(shù),它在驅(qū)動退出時被調(diào)用[5]。
遠(yuǎn)程視頻監(jiān)控部分由USB攝像頭、基于ARM的嵌入式流媒體服務(wù)器、網(wǎng)絡(luò)傳輸和客戶端瀏覽器等幾部分組成如圖1所示。
圖1 遠(yuǎn)程視頻監(jiān)控系統(tǒng)組成
現(xiàn)場的圖像數(shù)據(jù)通過USB攝像頭采集,通過USB傳輸?shù)交贏RM的嵌入式流媒體服務(wù)器即BOA服務(wù)器,進(jìn)行圖像壓縮和處理,通過網(wǎng)絡(luò)向遠(yuǎn)程客戶端傳輸視頻圖像??蛻舳送ㄟ^瀏覽器對現(xiàn)場進(jìn)行遠(yuǎn)程監(jiān)控。
系統(tǒng)設(shè)計使用的USB攝像頭芯片型號為中芯微ZC301P。USB攝像頭驅(qū)動程序?qū)崿F(xiàn)原理如圖2所示。
圖2 攝像頭驅(qū)動程序?qū)崿F(xiàn)原理
在驅(qū)動代碼中,首先應(yīng)聲明一個video_device結(jié)構(gòu),使USB驅(qū)動與內(nèi)核提供的視頻驅(qū)動掛鉤,并為其指定文件操作函數(shù)指針數(shù)組fops向系統(tǒng)注冊。當(dāng)應(yīng)用程序發(fā)出文件操作的相關(guān)命令時,內(nèi)核根據(jù)這些指針調(diào)用相應(yīng)函數(shù),并將該結(jié)構(gòu)作為參數(shù)傳遞給它們,實現(xiàn)驅(qū)動與內(nèi)核之間的通信。例如:
攝像頭驅(qū)動程序是根據(jù)S3C2410開發(fā)板的配置進(jìn)行一定修改后,通過交叉編譯生成的。根據(jù)攝像頭的型號,采用spca5xx-20060501.tar.gz驅(qū)動源碼包,解壓后修改 Makefile文件,指定交叉編譯工具CC=armv4l-unknown- linux- gcc。修改Kconfig文件,添加攝像頭的相關(guān)信息。修改usb-ochi.c文件,刪除與PCI接口相關(guān)的代碼。初始化主機(jī)控制器寄存器的起始地址,初始化USB主機(jī)控制器寄存器的中斷向量。執(zhí)行make命令,生成所需要的.ko驅(qū)動文件。驅(qū)動程序設(shè)計完成后,使用動態(tài)加載的方法添加到內(nèi)核中。在宿主機(jī)上交叉編譯好驅(qū)動模塊,通過NFS共享將文件下載到ARM開發(fā)板上,將驅(qū)動掛載命令insmod寫入/etc/init.d/rcS文件中,當(dāng)開發(fā)板啟動時自動加載模塊。加載過程中出現(xiàn)USB相關(guān)信息。說明USB攝像頭驅(qū)動成功添加,隨后便可以進(jìn)行用戶級軟件即應(yīng)用程序的開發(fā)。
瀏覽器是一個顯示網(wǎng)頁服務(wù)器或檔案系統(tǒng)內(nèi)的HTML文件,瀏覽器是經(jīng)常使用到的客戶端程序。WEB服務(wù)器通常是在遠(yuǎn)程機(jī)器上,負(fù)責(zé)對瀏覽器頁面請求做出響應(yīng),返回HTML編碼或類似的數(shù)據(jù)流。WEB服務(wù)器傳送頁面使瀏覽器可以瀏覽。WEB服務(wù)器是一種專門處理超文本傳送協(xié)議HTTP(hypertext transport protocol)請求的服務(wù)器[6]。嵌入式WEB服務(wù)器架構(gòu)如圖3所示。
圖3 嵌入式WEB服務(wù)器架構(gòu)
遠(yuǎn)程視頻監(jiān)控所需的嵌入式流媒體服務(wù)器是建立在WEB服務(wù)器之上的,系統(tǒng)在S3C2410開發(fā)板上植入BOA服務(wù)器,在其基礎(chǔ)上運(yùn)行流媒體服務(wù)器,并用于處理遠(yuǎn)程客戶端的請求,實現(xiàn)視頻監(jiān)控和現(xiàn)場A/D數(shù)據(jù)采集功能。系統(tǒng)采用boa-0.94.13版本,需要的源碼在虛擬機(jī) Linux系統(tǒng)的 boa-0.94.13目錄下。設(shè)置目標(biāo)平臺和制定交叉編譯器。
進(jìn)入/src目錄,修改compat.h文件,使#define TIMEZONE_OFFSET(foo)foo->tm_gmtoff生效。運(yùn)行./configure命令生成Makefile文件,修改Makefile文件如下所示。
指定交叉編譯器的前綴為arm-linux-gcc,使得編譯后的BOA服務(wù)器能在ARM開發(fā)板上正常運(yùn)行。編譯生成BOA服務(wù)器鏡像。即在/src中執(zhí)行make命令,得到可執(zhí)行的boa文件。將BOA服務(wù)器鏡像下載到開發(fā)板并進(jìn)行相關(guān)配置。BOA服務(wù)器的正常運(yùn)行需要正確配置服務(wù)器相關(guān)的配置文件。BOA服務(wù)器運(yùn)行時會自動在/etc/boa/目錄下尋找BOA服務(wù)器的配置文件boa.conf。通過NFS共享文件夾將BOA服務(wù)器鏡像共享到ARM開發(fā)板的/bin目錄下。
配置/etc/boa/boa.conf文件主要內(nèi)容如下所示。
保存BOA服務(wù)器的配置文件boa.conf,在var/log/boa中建立error_log文件存放錯誤信息。完成BOA服務(wù)器的移植工作,隨后便可通過在PC機(jī)的瀏覽器地址欄中輸入服務(wù)器的地址瀏覽服務(wù)器主頁。
由于在移植BOA服務(wù)器的過程中將服務(wù)器默認(rèn)首頁設(shè)置為index.html文件,需要創(chuàng)建一個index.html文件作為服務(wù)器的主頁。用HTML語言編寫主頁,通過瀏覽器觀察攝像頭的拍攝畫面和A/D轉(zhuǎn)換的數(shù)據(jù)采集值。主頁設(shè)計中建立兩個按鈕分別是遠(yuǎn)程視頻監(jiān)控和AD數(shù)據(jù)采集。網(wǎng)頁頁面背景為白色,在HTML語言中白色的編碼為“#FFFFFF”,即:<body bgcolor="#FFFFFF">。以遠(yuǎn)程視頻監(jiān)控為例,整個代碼寫在一個以<td>開頭,</td>結(jié)尾的單元格中。如
其中“input”為按鈕,類型為“點擊”(submit),按鈕名稱寫在“value”中,并通過“style”設(shè)置按鈕大小。保存 index.html文件,將其拷貝到ARM開發(fā)板的/var/www/目錄中,用命令ifconfig eth0 192.168.1.13設(shè)置 BOA服務(wù)器地址,即開發(fā)板地址為192.168.1.13。進(jìn)入/bin目錄,使用命令 ./boa后臺執(zhí)行 boa程序,打開PC機(jī)IE瀏覽器,在地址欄輸入BOA服務(wù)器地址192.168.1.13,即可看到 index.html的內(nèi)容。
系統(tǒng)采用Spcaserv流媒體服務(wù)器完成對視頻數(shù)據(jù)的采集、壓縮和傳輸。成功加載USB攝像頭的驅(qū)動并移植好BOA服務(wù)器之后,需要移植嵌入式流媒體服務(wù)器Spcaserv。
Spacserv流媒體服務(wù)器是建立在WEB服務(wù)器之上的,WEB服務(wù)器采用 BOA服務(wù)器,通過 Linux下的 V4L API函數(shù)、MJPEG圖像壓縮器和TCP網(wǎng)絡(luò)傳輸協(xié)議完成視頻圖像信號的獲取、壓縮和傳輸。Spcaview是Linux系統(tǒng)下用于實現(xiàn)網(wǎng)絡(luò)視頻服務(wù)器的軟件包。Spcaview可以用來紀(jì)錄數(shù)據(jù)流,也可以用在客戶端播放數(shù)據(jù),Spcaserv流媒體服務(wù)器帶有JPEG圖像壓縮器,可對其直接進(jìn)行交叉編譯。編譯后可工作在ARM9開發(fā)板上,配合嵌入式Linux專用的spca5xx網(wǎng)絡(luò)攝像頭驅(qū)動實現(xiàn)視頻采集。對于USB口攝像頭,其驅(qū)動程序中需要提供基本的I/O操作接口函數(shù)open、read、write和close的實現(xiàn)。在打開視頻采集設(shè)備后,分別通過ioctl(vd- >fd,VIDIOCGCAP,&(vd- >ca-pability))函數(shù)的VIDIOCGCAP控制命令,獲取關(guān)于視頻采集設(shè)備所能顯示的最大圖像大小和信號源的通道數(shù)。通過ioctl(vd- >fd,VIDIOCGPICT,&(vd- >picture))的 VIDIOCGPICT獲取一些關(guān)于圖像的亮度和對比度等信息。
采用spcaview-20061208源碼包,在虛擬機(jī)Linux系統(tǒng)中解壓并進(jìn)入源碼目錄,修改Makefile文件,使其在交叉編譯環(huán)境下編譯生成系統(tǒng)所需要的Spcaserv流媒體服務(wù)器程序,但是Spcaview的安裝依賴libsdl庫,因此需要先安裝 SDL-1.2.12.tar.gz。在 SDL-1.2.12 的源碼目錄中,打開 configure配置文件,指定目標(biāo)板的交叉編譯工具和虛擬機(jī)的編譯工具,執(zhí)行make以及make install安裝libsdl庫。安裝完成后進(jìn)行spcaserv軟件的安裝。語句如下所示。
修改完成后執(zhí)行make spcaserv命令,生成可執(zhí)行文件spcaserv,通過NFS共享文件夾將spcaserv和spcaview-20061208源碼包中的http-java-applet文件夾拷貝到ARM開發(fā)板上。其中,http-java-applet文件夾的內(nèi)容在BOA服務(wù)器的/var/www文件夾中。
客戶端通過瀏覽器窗口實現(xiàn)遠(yuǎn)程視頻監(jiān)控需要建立HTTP服務(wù)器。在BOA服務(wù)器的基礎(chǔ)上,通過服務(wù)器主頁中的“遠(yuǎn)程視頻監(jiān)控”按鈕連接到相應(yīng)的監(jiān)控網(wǎng)頁,在http-java-applet文件夾中的index.html文件,設(shè)計網(wǎng)頁代碼。當(dāng)“遠(yuǎn)程視頻監(jiān)控”按鈕按下時,網(wǎng)頁自動打開index1.html文件,將設(shè)計的遠(yuǎn)程視頻監(jiān)控界面保存至index1.html。打開BOA服務(wù)器主頁后,點擊“遠(yuǎn)程視頻監(jiān)控”按鈕,瀏覽器中顯示遠(yuǎn)程視頻監(jiān)控界面網(wǎng)頁。
插入USB攝像頭,將ARM開發(fā)板IP地址設(shè)置為“192.168.1.13”,后臺運(yùn)行 BOA 服務(wù)器,執(zhí)行 spcaserv程序,具體指令如下所示。
在PC機(jī)上打開IE瀏覽器,輸入BOA服務(wù)器地址,看到主頁后,點擊“遠(yuǎn)程視頻監(jiān)控”按鈕進(jìn)入遠(yuǎn)程視頻監(jiān)控界面如圖4所示。
圖4 遠(yuǎn)程視頻監(jiān)控界面
圖4中表明USB攝像頭實現(xiàn)了對雙容水箱液位控制系統(tǒng)的電動調(diào)節(jié)閥工作情況進(jìn)行監(jiān)視。點擊“返回”按鈕,瀏覽器頁面返回到BOA服務(wù)器主頁,實現(xiàn)了遠(yuǎn)程視頻監(jiān)控功能。
客戶端為HTML網(wǎng)頁形式,用戶通過點擊網(wǎng)頁按鈕執(zhí)行相應(yīng)的后臺CGI程序,對ARM開發(fā)板上的3路A/D輸入量進(jìn)行采樣,通過網(wǎng)絡(luò)傳輸采集的數(shù)據(jù)最終在網(wǎng)頁上顯示。
A/D轉(zhuǎn)換器是將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字信號,便于計算機(jī)系統(tǒng)進(jìn)行處理、存儲和顯示。A/D控制器寄存器可以同時外接8個模擬量輸入,精度為10位。A/D控制寄存器還集成了觸摸屏控制器,因此,A/D轉(zhuǎn)換和觸摸屏驅(qū)動不能同時啟用。A/D設(shè)備驅(qū)動是通過交叉編譯器編譯驅(qū)動模塊生成s3c2410_adc.ko驅(qū)動文件,通過NFS共享將文件下載到ARM開發(fā)板上。通過驅(qū)動掛載命令insmod s3c2410_adc.ko加載驅(qū)動,查找設(shè)備號,為A/D設(shè)備創(chuàng)建設(shè)備節(jié)點。執(zhí)行cat/proc/devices命令查看A/D設(shè)備號顯示為252。使用命令mknod/dev/adc c 252創(chuàng)建A/D設(shè)備節(jié)點,之后便可以進(jìn)行應(yīng)用程序的開發(fā)。
命名數(shù)據(jù)采集頁面為adc.html,文件中包含了HTML代碼和JavaScript腳本。HTML代碼用于編輯頁面的樣式,采集三路A/D數(shù)據(jù),建立一個三行兩列的table表格,顯示三路的通道名稱和相應(yīng)的A/D值。為了能夠隨時停止A/D數(shù)據(jù)采集,需要在網(wǎng)頁上設(shè)置“停止采集”按鈕,當(dāng)按下該按鈕時,自動運(yùn)行后臺“停止”程序。在設(shè)計頁面時可采用input按鈕來完成“停止采集”的目的。如下所示。
為了使網(wǎng)頁能夠動態(tài)地刷新ARM開發(fā)板傳來的數(shù)據(jù),需要編寫JavaScript腳本。通過兩個函數(shù)loadXML和getmessage實現(xiàn)。loadXML函數(shù)調(diào)用getmessage函數(shù)。loadXML函數(shù)的作用是載入一個.XML文件,loadXML函數(shù)設(shè)計如下所示。
此處加載的是adc.xml文件。LoadXML函數(shù)在頁面被打開時調(diào)用,在該函數(shù)的末尾語句setTimeout("loadXML()",1 000)的作用是讓這個函數(shù)每1 000 ms即1 s重新執(zhí)行一次,避免了手動刷新的麻煩。
getmessage函數(shù)的作用是從服務(wù)器的adc.xml文件中解析出需要的數(shù)據(jù)在頁面上顯示。因此,這個函數(shù)和服務(wù)器上的adc.xml文件是緊密相關(guān)的。
通用網(wǎng)關(guān)接口CGI(Common Gateway Interface)是HTTP服務(wù)器與你的或其他機(jī)器上的程序進(jìn)行交互的一種工具,程序需運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。絕大多數(shù)的CGI程序被用來解釋處理來自表單的輸入信息,并在服務(wù)器產(chǎn)生相應(yīng)的處理或?qū)⑾鄳?yīng)的信息反饋給瀏覽器。CGI程序使網(wǎng)頁具有交互功能。CGI的處理過程是通過Internet把用戶請求送到服務(wù)器。服務(wù)器接收用戶請求并交給CGI程序處理。CGI程序把處理結(jié)果傳送給服務(wù)器。服務(wù)器把結(jié)果送回到用戶。CGI工作原理如圖5所示。
圖5 CGI工作原理
A/D數(shù)據(jù)采集功能使用CGI程序分別控制數(shù)據(jù)采集的開始和數(shù)據(jù)采集的結(jié)束。A/D數(shù)據(jù)采集CGI程序是由.c文件經(jīng)過交叉編譯器編譯生成。有采集開始程序和采集停止程序,程序執(zhí)行流程圖如圖6所示。
采集開始和采集停止程序說明如下。
7.4.1 采集開始程序run.c
程序調(diào)用fork()函數(shù)創(chuàng)建兩個線程。一個用于打印HTML代碼,使頁面跳轉(zhuǎn)到adc.html頁面打印完HTML信息后該線程就退出。另一個子線程執(zhí)行A/D數(shù)據(jù)采集,讀取三個通道的A/D值進(jìn)行轉(zhuǎn)換,并將讀取的結(jié)果寫入adc.xml文件中供用戶檢索。程序通過函數(shù)adcfd=open("/dev/adc",O_RDWR)打開A/D設(shè)備,并將返回值給adcfd,當(dāng)A/D設(shè)備成功打開時即adcfd>0時,程序通過open()函數(shù)打開adc.xml文件準(zhǔn)備寫入數(shù)據(jù)。將adc.xml文件上鎖,防止其它進(jìn)程對其進(jìn)行操作。打開adc.xml后,程序檢測文件中<stop>標(biāo)簽的值,如果為‘$',說明用戶按下了“停止采集”按鍵,程序向<stop>標(biāo)簽中重新寫入‘A'后,解除 adc.xml的鎖定狀態(tài),關(guān)閉 adc.xml文件和 A/D數(shù)據(jù)采集設(shè)備,程序終止。
圖6 采集開始和采集停止程序流程圖
如果<stop>不為‘$',說明用戶要求讀取A/D數(shù)據(jù)采集值,程序執(zhí)行g(shù)etdata函數(shù),向adc.xml文件中寫入三路通道的測量值。程序通過 ioctl(adcfd,j,0);依次打開三個通道,用read()函數(shù)讀通道值存放在temp中,以ASCII碼的形式寫入對應(yīng)的 buf[i]中,完成對 adc.xml文件內(nèi)容的更新。
7.4.2 采集停止程序stop.c
采集停止程序在用戶按下“停止采集”按鈕后執(zhí)行,使頁面跳轉(zhuǎn)到主界面,修改adc.xml文件的<stop>標(biāo)簽值為‘$',使得采集開始程序run.c檢測到相應(yīng)變化而停止運(yùn)行。
采集開始程序和采集停止程序都在ARM開發(fā)板上運(yùn)行,因此要在交叉編譯環(huán)境下進(jìn)行編譯,使用語句arm-linux-gcc-o run.cgi run.c和 arm -linux-gcc -o stop.cgi stop.c進(jìn)行編譯生成.cgi文件下載到開發(fā)板上運(yùn)行。成功加載A/D設(shè)備驅(qū)動后,后臺運(yùn)行BOA網(wǎng)絡(luò)服務(wù)器。在PC機(jī)瀏覽器地址欄輸入服務(wù)器地址,進(jìn)入BOA服務(wù)器主頁后點擊“AD數(shù)據(jù)采集”按鈕,看到圖7所示的AD數(shù)據(jù)采集界面。
圖7 A/D數(shù)據(jù)采集界面
改變ARM開發(fā)板上的3路電壓值,可在頁面中看到相應(yīng)的A/D數(shù)據(jù)采集值隨著變化。
應(yīng)用嵌入式技術(shù)設(shè)計了一種基于Linux和S3C2410的集視頻采集傳輸系統(tǒng)、A/D數(shù)據(jù)傳輸系統(tǒng)和SOCKET網(wǎng)絡(luò)傳輸為一體的遠(yuǎn)程監(jiān)控系統(tǒng),實現(xiàn)了嵌入式Linux在ARM平臺上的剪裁和移植,嵌入式WEB服務(wù)器BOA的建立,USB攝像頭在Linux下的驅(qū)動程序開發(fā)?;赩4L的流媒體網(wǎng)絡(luò)服務(wù)器的建立實現(xiàn)了視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸。通過A/D轉(zhuǎn)換設(shè)備在Linux下的驅(qū)動程序開發(fā)和SOCKET網(wǎng)絡(luò)接口程序設(shè)計,實現(xiàn)了基于TCP協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)傳輸。
[1]王洪濤.基于ARM&Linux的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng).儀表技術(shù)與傳感器,2009(5):8-57.
[2]楊春杰.基于ARM的GPRS定位系統(tǒng)設(shè)計.計算機(jī)應(yīng)用,2008,(4):36-37.
[3]汪忠華,章益品,姚銀花等.基于ARM的GPRS地面目標(biāo)跟蹤及報警系統(tǒng)的設(shè)計與實現(xiàn).國外電子元器件,2007(6):35-36.
[4]趙海峰,馬后勇,梁斌.基于嵌入式LINUX的WEB監(jiān)控系統(tǒng)設(shè)計.無限電工程,2010(4):23 -26.
[5]吳彰良,孫長庫,劉潔.基于圖像處理的油封缺陷自動檢測與分類識別方法.儀器儀表學(xué)報,2013,34(5):1093 -1094.
[6]肖理慶,王化祥,程紅林等.改進(jìn)遺傳算法的 ERT有限元模型拓?fù)浣Y(jié)構(gòu)優(yōu)化.儀器儀表學(xué)報,2012,33(7):1490-1493.