基于ARM9處理器的家用遠(yuǎn)程醫(yī)療監(jiān)護(hù)終端結(jié)構(gòu)功能及應(yīng)用
軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括Linux的移植,嵌入式Web Server-Boa的移植,CGI(通用網(wǎng)關(guān)接口)程序的設(shè)計(jì),功能程序的設(shè)計(jì)。
圖6 系統(tǒng)軟件框圖
Linux的移植
本設(shè)計(jì)采用linux-2.4.18內(nèi)核。正確進(jìn)行Linux移植的前提是具備一個(gè)與Linux配套、易于使用的BootLoader,它能夠正確完成硬件系統(tǒng)的初始化和Linux的引導(dǎo)。本系統(tǒng)中采用vivi,它是由韓國(guó)MIZI公司提供的一款針對(duì)S3C2410芯片的BootLoader。
Linux內(nèi)核的目錄/arch中包含了所有與硬件體系結(jié)構(gòu)相關(guān)的內(nèi)核移植代碼,目錄/arch中的每個(gè)子目錄代表了一種Linux支持的處理器。移植Linux到S3C2410平臺(tái)主要是修改/arch/arm目錄及其子目錄下相關(guān)的makefile文件和配置文件。例如:修改內(nèi)核根目錄下的Makefile文件,指明要移植的硬件平臺(tái)為ARM:ARCH:=arm,指明使用的交叉編譯器CROSS_COMPILE=/opt/host/armv41/bin/armv41-unknown-linux-;修改arm/arm目錄下的config.in文件,配置S3C2410的相關(guān)信息;為初始化處理器,還需在arch/arm/boot/compressed目錄下添加head-s3c2410.s文件。內(nèi)核修改完成后,用命令make menuconfig配置Linux,再用make zImage命令編譯內(nèi)核,編譯通過(guò)后則在目錄arch/arm/boot下生成zImage內(nèi)核文件,還需利用工具軟件MKCRAMFS制作cramfs文件系統(tǒng)。最后,在minicom終端的vivi命令行下利用load命令將內(nèi)核和文件系統(tǒng)下載到目標(biāo)系統(tǒng),至此移植完成。
Boa的移植和CGI程序設(shè)計(jì)
由于嵌入式設(shè)備資源有限,并且不需要同時(shí)響應(yīng)多用戶(hù)請(qǐng)求,因此一般使用一些專(zhuān)門(mén)的Web服務(wù)器用于嵌入式應(yīng)用設(shè)計(jì)。Boa是單任務(wù)web服務(wù)器,源代碼開(kāi)放,性能高,支持CGI,能為CGI程序fork出一個(gè)進(jìn)程來(lái)執(zhí)行,其設(shè)計(jì)目標(biāo)是速度和安全,可執(zhí)行代碼只有約60KB。移植Boa的過(guò)程如下:從sourceforge.net上下載 boa-0.94.13,在其解壓目錄下生成并修改makefile文件,然后運(yùn)行make得到可執(zhí)行程序,利用命令armv4l-unknown-linux-strip將調(diào)試信息剝?nèi)ィ缓笮薷腂oa的配置文件boa.conf,使其能支持CGI程序的運(yùn)行。最后將生成的可執(zhí)行程序Boa掛載到目標(biāo)系統(tǒng),若能成功訪(fǎng)問(wèn)靜態(tài)HTML網(wǎng)頁(yè)和運(yùn)行測(cè)試用的CGI程序,則表明配置成功。
通用網(wǎng)關(guān)接口CGI可將Web服務(wù)器連接到外部應(yīng)用程序,它主要完成兩件事情:一是收集從Web瀏覽器發(fā)送給Web服務(wù)器的信息,并將這些信息提供給外部程序利用;二是對(duì)提出請(qǐng)求的Web瀏覽器發(fā)送程序的輸出。CGI具有平臺(tái)獨(dú)立性、語(yǔ)言獨(dú)立性和層次感等優(yōu)點(diǎn)。利用CGI程序則可以實(shí)時(shí)執(zhí)行并輸出動(dòng)態(tài)信息,且其占用資源少。CGI程序的執(zhí)行過(guò)程為:瀏覽器將表單數(shù)據(jù)以POST方法提交給Web服務(wù)器,服務(wù)器根據(jù)收到的數(shù)據(jù)設(shè)置環(huán)境變量,并新開(kāi)一子進(jìn)程來(lái)執(zhí)行CGI程序,CGI程序從環(huán)境變量中讀取所需要的數(shù)據(jù),通過(guò)調(diào)用用戶(hù)自定義的外部功能函數(shù)完成數(shù)據(jù)處理后,再讀取相應(yīng)的HTML模板文件,根據(jù)注釋標(biāo)記將對(duì)應(yīng)的數(shù)據(jù)填充到HTML文件中,生成新的HTML頁(yè)面經(jīng)Web服務(wù)器返回給瀏覽器。
為快速開(kāi)發(fā)符合應(yīng)用要求的CGI程序,在設(shè)計(jì)時(shí)添加了CGIC庫(kù)和gd庫(kù)。CGIC是一個(gè)功能強(qiáng)大的支持CGI開(kāi)發(fā)的開(kāi)放源碼的標(biāo)準(zhǔn)C庫(kù)。Thomas Boutell編寫(xiě)的gd庫(kù)是標(biāo)準(zhǔn)的C語(yǔ)言庫(kù),具有基本的繪圖等功能。為實(shí)現(xiàn)在網(wǎng)頁(yè)上動(dòng)態(tài)顯示心電波形,將每次采集的數(shù)據(jù)經(jīng)過(guò)功能程序處理后存儲(chǔ)的同時(shí)送給CGI程序,利用gd庫(kù)提供的函數(shù)來(lái)創(chuàng)建圖像。通過(guò)在網(wǎng)頁(yè)模塊上設(shè)定刷新時(shí)間(使用HTML語(yǔ)言的META標(biāo)記),從而實(shí)現(xiàn)在網(wǎng)頁(yè)上心電波形的動(dòng)態(tài)顯示。
主程序設(shè)計(jì)
主程序首先完成對(duì)系統(tǒng)的初始化,然后阻塞監(jiān)聽(tīng)網(wǎng)絡(luò)接口是否有連接請(qǐng)求,一旦客戶(hù)端發(fā)出連接請(qǐng)求,則在服務(wù)器端產(chǎn)生中斷;讀取網(wǎng)絡(luò)數(shù)據(jù),然后對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,這一步主要是解析HTTP協(xié)議,需要判斷連接請(qǐng)求是否符合服務(wù)器規(guī)定的請(qǐng)求格式,判斷是連接請(qǐng)求的請(qǐng)求方法,判斷請(qǐng)求的文件是否存在服務(wù)器上,判斷認(rèn)證信息是否正確等等;在處理A/D采集的數(shù)據(jù)這一過(guò)程中,首先要將采集后的心電信號(hào)進(jìn)行濾波處理,主要是抑制心電信號(hào)中的50Hz工頻干擾,再完成濾波后,將數(shù)據(jù)送到本地的LCD上顯示,同時(shí)將當(dāng)前的數(shù)據(jù)以網(wǎng)頁(yè)數(shù)據(jù)的格式發(fā)送到網(wǎng)口。
結(jié)語(yǔ)
本系統(tǒng)的設(shè)計(jì)定位于家庭醫(yī)療監(jiān)護(hù),通過(guò)在用于生理特征信息監(jiān)測(cè)的嵌入式系統(tǒng)中集成Web服務(wù)器實(shí)現(xiàn)Internet的接入,從而實(shí)現(xiàn)用于遠(yuǎn)程家庭醫(yī)療的監(jiān)護(hù)系統(tǒng)。其意義在于:設(shè)計(jì)出一套價(jià)格低且易于推廣的遠(yuǎn)程家庭醫(yī)療監(jiān)護(hù)系統(tǒng),改變目前我國(guó)家庭醫(yī)療監(jiān)護(hù)落后的狀況;有效提高中老年人群心血管等慢性疾病的監(jiān)護(hù)水平,有利于提高中老年人群突發(fā)疾病患者的整體救治率;為醫(yī)療機(jī)構(gòu)提供大量有價(jià)值的我國(guó)中老年人群疾病的原始數(shù)據(jù)進(jìn)行科研工作。
評(píng)論