基于ARM7新型嵌入式心電監(jiān)護儀的研制
3.2.2、系統(tǒng)程序存儲器Flash ROM和SDRM擴展
S3C44B0X自身不具有ROM,因此必須外接ROM器件來存儲掉電后仍需要保存的程序代碼和數(shù)據(jù)。我們采用了SST公司推出的容量為1MB×16的CMOS多用途Flash ROM,它具有可靠性好、功耗低、讀取速度快等優(yōu)點。系統(tǒng)復(fù)位后,首先從0X00000000地址處開始執(zhí)行,系統(tǒng)啟動代碼應(yīng)該以此地址開始存放,所以Flash映射在處理器的Bank0區(qū)域內(nèi)。
采用Linksmart公司的一種容量為8MB的SDRM L43L16064作為系統(tǒng)程序的運行空間、數(shù)據(jù)區(qū)和堆棧區(qū),供系統(tǒng)快速讀寫。它的存儲方式為4Bank×1MB×16,采用多Bank和管道結(jié)構(gòu),具有自動刷新、低功耗和掉電模式。其存儲空間映射在S3C44B0X的Bank6上,地址范圍為:0XC000000H-0XCFFFFFFH。
3.2.3、液晶顯示LCD和鍵盤模塊
為了使用戶能夠?qū)Σ杉降男碾娦盘栍幸粋€直觀的印象和進行常識性的觀察,我們采用了EPSON公司的EG1147型FSTN單色液晶顯示模,對時間、波形、心電參數(shù)和系統(tǒng)菜單進行顯示,同時配合按鍵進行儀器控制和設(shè)定。它的顯示器點陣為240×320,采用EL背光源,自帶驅(qū)動器,通過對S3C44B0X內(nèi)置LCD控制器編程,將定位在存儲器的顯示緩沖器內(nèi)的圖像數(shù)據(jù)傳送給外部LCD的驅(qū)動器中,PC口和PD口作為LCD驅(qū)動接口,設(shè)置PC口工作在第三功能狀態(tài),PD口工作在第二功能狀態(tài)。
3.2.4、以太網(wǎng)模塊設(shè)計
S3C44B0X沒有集成網(wǎng)絡(luò)接口控制器NIC(Network Interface Controller),因此我們?yōu)橄到y(tǒng)擴展了一個REALTECK公司的RTL8019AS控制器,它與NE2000兼容,軟件移植好,接口電路簡單。RTL8019AS工作原理:驅(qū)動程序把要發(fā)送的數(shù)據(jù)按照指定格式寫入芯片并啟動發(fā)送命令即可。反之,芯片從物理通道上收到信號會直接根據(jù)以太網(wǎng)協(xié)議把他們轉(zhuǎn)化成相應(yīng)格式的數(shù)據(jù),并發(fā)出中斷,請求CPU讀取數(shù)據(jù)。
四、系統(tǒng)軟件設(shè)計
軟件設(shè)計主要包括嵌入式操作系統(tǒng)uClinux在S3C44B0X上的移植,心電數(shù)據(jù)的采集和存儲,基于S3C44B0X的嵌入式GUI的實現(xiàn),網(wǎng)絡(luò)設(shè)備驅(qū)動程序開發(fā)等。
4.1、嵌入式uClinux操作系統(tǒng)在S3C44B0X上的移植
uClinux是專門針對無MMU(Memory Management Unit 內(nèi)存管理單元)的處理器而設(shè)計的一種免費開放源代碼的操作系統(tǒng)。支持多任務(wù),采取模塊化設(shè)計。系統(tǒng)移植可分為bootloader和內(nèi)核的移植兩大部分。
Bootloader從本質(zhì)上講它不屬于系統(tǒng)內(nèi)核,在CPU上電啟動后即開始運行,創(chuàng)立初始化環(huán)境和引導(dǎo)內(nèi)核。這部分代碼用匯編語言編寫,主要完成硬件初始化,對系統(tǒng)的存儲映射(memory map)進行初始化設(shè)置等操作,同時改變PC值,使得CPU開始從SDRM執(zhí)行操作系統(tǒng)的內(nèi)核。
內(nèi)核移植時首先RedHat Linux環(huán)境下下載源代碼文件包建立交叉編譯環(huán)境,接著進入uClinux-dist文件夾進行內(nèi)核配置,系統(tǒng)配置主要由三部分組成:Makefile、配置文件(config.in)和配置工具(在/script目錄下)。運行make menuconfig命令,會現(xiàn)頂層菜單,選擇硬件系統(tǒng)、內(nèi)核版本和C庫的選擇,我們在這里vendors選Samsung的S3C44B0X,內(nèi)核版本為Linux-2.4-x,C庫選uClibc。接著要修改源代碼,對應(yīng)于各個硬件的子目錄中,例如在uClinux-dist/linux-2.4-x/drivers/修改或增加驅(qū)動程序;保存設(shè)置退出后運行再執(zhí)行make dep和make lib_only命令,生成C庫;運行make user_only生成應(yīng)用程序;接著運行make romfs和make image,生成rom文件系統(tǒng),拷貝內(nèi)核文件到uClinux-dist/images中;最后運行make,生成可供嵌入式系統(tǒng)運行的內(nèi)核文件,這時可以在uClinux-dist/images中出現(xiàn)三個文件:含“rom”是壓縮內(nèi)核,含“ram”是直接運行的內(nèi)核,romfs.img是uClinux的文件系統(tǒng)?!皉am”和“rom”文件可以通過超級終端從PC串口下載到嵌入式系統(tǒng)的內(nèi)存中直接運行,這時超級終端上也將顯示uClinux的啟動信息。
4.2、基于S3C44B0X的嵌入式GUI的實現(xiàn)
屏幕驅(qū)動的程序設(shè)計主要是PSD(Pointer to Screen Device)的結(jié)構(gòu)指針,指針?biāo)赶虻慕Y(jié)構(gòu)中記錄了有關(guān)的一切屬性,根據(jù)顯示屬性判斷選擇那個子函數(shù)來提供有關(guān)的顯示函數(shù)。圖形引擎調(diào)用PSD完成矩形,圓形等作圖函數(shù),這些函數(shù)調(diào)用底層的屏幕驅(qū)動基本作圖函數(shù)來完成圖形顯示。
4.3、RTL8019AS驅(qū)動程序在uClinux下的實現(xiàn)
在uClinux中,網(wǎng)絡(luò)接口被看作是一個發(fā)送和接收數(shù)據(jù)包的實體,用一個net_device的數(shù)據(jù)結(jié)構(gòu)表示,在數(shù)據(jù)結(jié)構(gòu)中定義對網(wǎng)絡(luò)接口的各種操作。程序我們是在uClinux網(wǎng)絡(luò)驅(qū)動文件的基礎(chǔ)上修改而成,主要修改在/drivers/net下的兩個文件:ne.c和8390.c,包括芯片的初始化、收包、網(wǎng)絡(luò)注冊等大部分工作。內(nèi)核在初始化時會自動調(diào)用函數(shù)ne_probe(),讀取RTL8019AS標(biāo)識寄存器,檢測設(shè)備是否存在以決定是否啟動驅(qū)動程序,配置和初始化硬件,然后初始化net_device結(jié)構(gòu)中的變量,再調(diào)用Rtl8019as_init()對RTL8019AS做寄存器的相關(guān)設(shè)置,最后根據(jù)starp的值來啟動和關(guān)閉RTL8019AS。
五、結(jié)束語
針對心電信號ECG極其微弱和極易受到外界干擾的特點,本文的創(chuàng)新點為采用具有低漂移、共模抑制比的儀表放大器AD620對信號進行初級放大,并設(shè)計右腿驅(qū)動電路以增強信號的抗干擾能力; LCD的引入給人直觀的印象和常識性的判斷;采集到的數(shù)據(jù)可通過以太網(wǎng)實時傳輸?shù)竭h(yuǎn)程數(shù)據(jù)中心,供專家分析和診斷;嵌入式uClinux的引入保證了系統(tǒng)穩(wěn)定、可靠的運行;小型化的設(shè)計,更有利于患者的攜帶。隨著心血管疾病的發(fā)病率不斷地逐年上升,這種便攜式心電監(jiān)護儀具有很高的應(yīng)用價值和良好的市場前景。
評論