王雨飛李欣
(1、中國(guó)海洋大學(xué)信息科學(xué)與工程學(xué)院,山東青島266100;2、中國(guó)海洋大學(xué)信息科學(xué)與工程學(xué)院,青島,266100)
海底原位監(jiān)測(cè)技術(shù)是一種能對(duì)海底表面或近海底進(jìn)行定點(diǎn)、連續(xù)、多要素同步測(cè)量的水下監(jiān)測(cè)技術(shù)。研發(fā)深海海底邊界層原位監(jiān)測(cè)技術(shù),對(duì)于加快提升我國(guó)海底資源探測(cè)開(kāi)發(fā)的技術(shù)創(chuàng)新能力、促進(jìn)深??茖W(xué)研究均具有極為重要的意義。
開(kāi)發(fā)板的硬件系統(tǒng)是海底原位監(jiān)測(cè)技術(shù)的核心基礎(chǔ),根據(jù)系統(tǒng)設(shè)計(jì)要求,實(shí)現(xiàn)深海海底邊界層原位監(jiān)測(cè)系統(tǒng)程序的自啟動(dòng),采集數(shù)據(jù)的存儲(chǔ)以及數(shù)據(jù)傳輸。
系統(tǒng)主要由以下幾部分構(gòu)成:可以在海底穩(wěn)定工作的海洋探測(cè)儀器;控制系統(tǒng)自動(dòng)化運(yùn)行以及數(shù)據(jù)采集的嵌入式系統(tǒng);負(fù)責(zé)電源管理和兩路模擬量數(shù)據(jù)采集的單片機(jī)系統(tǒng);實(shí)現(xiàn)數(shù)據(jù)中轉(zhuǎn)的串口服務(wù)器和交換機(jī)系統(tǒng)。
鑒于以上分析,采用基于ARM9的嵌入式系統(tǒng)作為自動(dòng)化控制系統(tǒng),通過(guò)讀取傳感器的數(shù)據(jù)來(lái)判斷環(huán)境位置,基于TCP/IP協(xié)議,通過(guò)串口服務(wù)器與海洋儀器進(jìn)行通信,進(jìn)行數(shù)據(jù)采集和管理。電源管理系統(tǒng)基于MSP430單片機(jī),智能控制電源分配,采集一種其數(shù)據(jù)后,斷開(kāi)深海儀器與嵌入式系統(tǒng)的供電,進(jìn)入低功耗模式,等待下一周期。
ARM微處理器具有體積小、低功耗、高性能的優(yōu)點(diǎn)[1],嵌入式系統(tǒng)采用ATMEL公司的AT91S9263CU微處理器作為控制核心。2MB norflash用來(lái)存放u-boot引導(dǎo)程序;10M/100M以太網(wǎng)接口,用于程序下載、網(wǎng)絡(luò)通訊應(yīng)用;4GB SD卡作為系統(tǒng)的主存區(qū),從深海設(shè)備中采集到的數(shù)據(jù),經(jīng)處理后保存到SD卡中。MSP430系列單片機(jī)是一種16位單片機(jī),集成功能豐富,內(nèi)存也比較強(qiáng)大[2]。MSP430單片機(jī)自帶8路12位ADC,精度高,設(shè)計(jì)靈活巧妙,在本系統(tǒng)中的功能主要是采集模擬量數(shù)據(jù)和控制整個(gè)系統(tǒng)的電源供給。
系統(tǒng)共集成了8臺(tái)海洋儀器,分別為聲學(xué)多普勒流速計(jì)(ADV),三維海流計(jì)(Aquadopp),CO2、CH4、PH、DO 傳感器,高度計(jì)和深海攝像子系統(tǒng)。其中ADV、Aquadopp、CO2、CH4 四臺(tái)儀器為 RS232通訊接口,經(jīng)過(guò)串口服務(wù)器轉(zhuǎn)換與RJ45接口的交換機(jī)及ARM通訊。PH、DO傳感器數(shù)據(jù)為模擬量輸出,與MSP430單片機(jī)的12位轉(zhuǎn)換通道相連,數(shù)據(jù)經(jīng)模數(shù)轉(zhuǎn)換后打包,通過(guò)串口服務(wù)器轉(zhuǎn)換后上傳給ARM。系統(tǒng)集成了深海攝像子系統(tǒng)拍攝海底影像。
深海海底邊界層原位監(jiān)測(cè)系統(tǒng)的核心是以Atmel公司的AT91S9263CU為微處理器的ARM9開(kāi)發(fā)板,采用Linux2.6.30作為開(kāi)發(fā)板的操作系統(tǒng)。選擇Linux操作系統(tǒng)作為開(kāi)發(fā)板的操作系統(tǒng)主要是因?yàn)長(zhǎng)inux操作系統(tǒng)是穩(wěn)定的系統(tǒng),可以進(jìn)行獨(dú)立工作,自由與開(kāi)放,配置要求低廉,功能強(qiáng)大而穩(wěn)定[3],適合需要小核心程序的嵌入式系統(tǒng)。
2.6 版本的內(nèi)核相比于2.4版本的內(nèi)核使用了新的進(jìn)程調(diào)度算法,在高負(fù)載的情況下執(zhí)行的極其出色,并且當(dāng)有很多處理器時(shí)也可很好擴(kuò)展[4]。內(nèi)核任務(wù)可以被搶占,從而提高系統(tǒng)的實(shí)時(shí)性,可以處理任意數(shù)目的縣城,增加對(duì)文件系統(tǒng)支持。
移植內(nèi)核需要對(duì)內(nèi)核進(jìn)行適當(dāng)?shù)牟眉簦詽M足開(kāi)發(fā)的需要。根據(jù)開(kāi)發(fā)需求,對(duì)內(nèi)核進(jìn)行裁剪。這里,選擇與Atmel公司的AT91S9263CU微處理器相關(guān)的配置。保存相關(guān)配置,對(duì)內(nèi)核進(jìn)行配置,并且對(duì)內(nèi)核進(jìn)行編譯。因嵌入式系統(tǒng)需通過(guò)uboot來(lái)燒寫Linux內(nèi)核以及文件系統(tǒng),而且uImage是u-boot加載的映像格式,生成可執(zhí)行的內(nèi)核鏡像文件uImage。
鏡像燒寫是開(kāi)發(fā)板加載操作系統(tǒng)的基礎(chǔ),選擇燒寫jffs2鏡像,是因?yàn)閖ffs2支持Nand Flash裝置,是具有斷電可靠性的日志結(jié)構(gòu)文件系統(tǒng)。
JFFS2是JFFS的后繼者,由Red Hat重新改寫而成。JFFS2的全名為Journalling Flash File System Version 2(閃存日志型文件系統(tǒng)第2版),其功能就是管理在MTD設(shè)備上實(shí)現(xiàn)的日志型文件系統(tǒng)。與其他的存儲(chǔ)設(shè)備存儲(chǔ)方案相比,JFFS2并不準(zhǔn)備提供讓傳統(tǒng)文件系統(tǒng)也可以使用此類設(shè)備的轉(zhuǎn)換層。它只會(huì)直接在MTD設(shè)備上實(shí)現(xiàn)日志結(jié)構(gòu)的文件系統(tǒng)。JFFS2會(huì)在安裝的時(shí)候,掃描MTD設(shè)備的日志內(nèi)容,并在RAM中重新建立文件系統(tǒng)結(jié)構(gòu)本身。
深海海底邊界層原位監(jiān)測(cè)系統(tǒng)需要使用可寫文件系統(tǒng),因此選擇使用JFFS2具有斷電可靠性的日志結(jié)構(gòu)文件系統(tǒng)。根據(jù)開(kāi)發(fā)者的開(kāi)發(fā)需求對(duì)開(kāi)發(fā)板的系統(tǒng)文件進(jìn)行適當(dāng)?shù)男薷模詽M足系統(tǒng)的需求。
在數(shù)據(jù)存儲(chǔ)方面,選用Atmel公司的AT91S9263CU為微處理器的ARM9的開(kāi)發(fā)板,其存儲(chǔ)器容量為64MB SDRAM、128MB NandFlash、2MB DataFlash,不能滿足存儲(chǔ)大容量數(shù)據(jù)的要求,需要外接存儲(chǔ)設(shè)備。在外圍設(shè)備方面,本型號(hào)的開(kāi)發(fā)板有1路SD/MMC卡接口,可以在外部擴(kuò)展存儲(chǔ)容量,通過(guò)外部擴(kuò)展SD卡實(shí)現(xiàn)大容量數(shù)據(jù)存儲(chǔ)的要求。
對(duì)開(kāi)發(fā)板自啟動(dòng)文件進(jìn)行相應(yīng)的修改,實(shí)現(xiàn)自動(dòng)掛載SD卡的功能。開(kāi)機(jī)自啟動(dòng)的文件是Linux操作系統(tǒng)的系統(tǒng)文件,該文件完成各種設(shè)備的掛載。通過(guò)修改此文件,可以實(shí)現(xiàn)設(shè)備的自動(dòng)掛載。
為實(shí)現(xiàn)自動(dòng)掛載SD卡的功能,在此系統(tǒng)文件中添加相關(guān)命令。重新啟動(dòng)嵌入式系統(tǒng),通過(guò)相關(guān)監(jiān)測(cè)設(shè)備可以監(jiān)測(cè)是否自動(dòng)掛載SD卡。
在深海海底邊界層原位監(jiān)測(cè)系統(tǒng)中,SD卡內(nèi)的監(jiān)測(cè)程序是整個(gè)系統(tǒng)中最核心的部分,而監(jiān)測(cè)程序的自動(dòng)啟動(dòng)是深海海底邊界層原位監(jiān)測(cè)系統(tǒng)能夠順利工作的基礎(chǔ)。實(shí)現(xiàn)程序的自動(dòng)啟動(dòng)除了實(shí)現(xiàn)開(kāi)機(jī)后SD卡自動(dòng)掛載,還需要實(shí)現(xiàn)使用者自定義開(kāi)機(jī)啟動(dòng)程序,Linux啟動(dòng)最后階段,系統(tǒng)會(huì)執(zhí)行SD卡中相關(guān)文件命令。在系統(tǒng)開(kāi)機(jī)時(shí),需自動(dòng)運(yùn)行自定義開(kāi)機(jī)啟動(dòng)程序。將通過(guò)交叉編譯環(huán)境所生成的二進(jìn)制文件存儲(chǔ)到SD卡中并且建立相關(guān)文件,在該文件中添加啟動(dòng)命令,重新啟動(dòng)通過(guò)監(jiān)測(cè)設(shè)備可以監(jiān)測(cè)程序是否自動(dòng)運(yùn)行。
FTP是文件傳輸協(xié)議(File Transfer Protocol)的簡(jiǎn)稱,是因特網(wǎng)上使用的最廣泛的文件傳輸協(xié)議。FTP提供交互式的訪問(wèn),允許客戶指明文件的類型與格式,并允許文件具有存取權(quán)限[5],文件傳送協(xié)議FTP使用TCP可靠的運(yùn)輸服務(wù)。在進(jìn)行文件傳輸時(shí),F(xiàn)TP的客戶和服務(wù)器之間要建立兩個(gè)并行的TCP連接:控制連接和數(shù)據(jù)連接??刂七B接在整個(gè)會(huì)話期間一直保持打開(kāi),F(xiàn)TP客戶所發(fā)出的傳送請(qǐng)求,通過(guò)控制連接發(fā)送給服務(wù)器端的控制進(jìn)程。服務(wù)器端的控制進(jìn)程在接收到FTP客戶發(fā)送來(lái)的文件傳輸請(qǐng)求后就創(chuàng)建數(shù)據(jù)傳送進(jìn)程和數(shù)據(jù)連接,用來(lái)連接客戶端和服務(wù)器端的數(shù)據(jù)傳送進(jìn)程。
通過(guò)FTP服務(wù)器,可以使上位機(jī)(PC機(jī))通過(guò)網(wǎng)絡(luò)接口訪問(wèn)嵌入式系統(tǒng),實(shí)現(xiàn)上傳下載數(shù)據(jù)的功能。FTP服務(wù)器使用簡(jiǎn)單,可以通過(guò)FTP客戶端建遠(yuǎn)程登錄FTP服務(wù)器,進(jìn)行各種文件的操作。
FTP有多種實(shí)現(xiàn)形式,本系統(tǒng)在調(diào)試時(shí)使用bftpd服務(wù)器程序。bftpd可以廣泛應(yīng)用于 Linux、BSD/OS、FreeBSD、Solaris、DG-UX以及Tru64平臺(tái)。bftpd主旨成為一款高速、小巧而且配置方便的服務(wù)器,可以使用其默認(rèn)的配置選項(xiàng),也可以通過(guò)交叉編譯將其嵌入在不同的應(yīng)用平臺(tái)上,bftpd依賴關(guān)系比較簡(jiǎn)單,運(yùn)行穩(wěn)定。
通過(guò)長(zhǎng)時(shí)間連續(xù)掛載SD卡以及連接FTP服務(wù)器的試驗(yàn),表明以上方法可以滿足深海海底邊界層原位監(jiān)測(cè)系統(tǒng)硬件系統(tǒng)的設(shè)計(jì)要求,實(shí)現(xiàn)了在外圍設(shè)備中的數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)傳輸。
[1]劉銳,王林.基于ARM數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].中國(guó)測(cè)量,2010(36):89-92.
[2]秦龍.MSP430單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006:1.
[3]鳥(niǎo)哥.鳥(niǎo)哥的Linux私房菜,基礎(chǔ)學(xué)習(xí)篇(第二版)[M].北京:人民郵電出版社,2007:16.
[4]宋寶華.Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2008:45-46.
[5]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第 5版)[M].北京:電子工業(yè)出版社,2007:232.