薛 俊
(長江大學工程技術學院,湖北荊州434020)
血液抽樣化驗的電子自動化充分反映出醫(yī)療器械與高速發(fā)展的微電子技術密切相結合,多渠道高性能低成本的特點使得血液檢測系統(tǒng)可以廣泛應用于化學分析、免疫分析、巖礦分析、食品檢驗、環(huán)境分析等領域,是當前化學分析和免疫分析研究的熱點。其實現(xiàn)機理是依據(jù)免疫學診斷的基礎——抗原-抗體的特異性結合反應,將酶或其他非放射性標記物標記于抗原或抗體,然后與已知抗原或抗體反應,標記的酶使反應底物進行發(fā)光,經(jīng)光電倍增管測量后可得到被測樣本的每秒鐘發(fā)光計數(shù)(CPS),再根據(jù)系統(tǒng)內(nèi)置的標準曲線將CPS轉換為樣本的濃度值[2]。該項技術的應用,使抗原-抗體的反應時間縮短,特異性程度和靈敏度得到提高,同時輔以嵌入式技術的應用,使整個反應的全自動化實現(xiàn)成為可能,是近十年來免疫檢驗技術的一個飛躍。
硬件分為上位機和下位機兩部分,上位機以S3C44B0芯片為核心,邊置 NAND/NOR FLASH、32M內(nèi)存、USBHost、串口0打印機、串口1下位相連、LCD觸摸、SD卡、鍵盤鼠標雙PS/2、網(wǎng)卡;下位機以89S52單片機為核心,邊置加樣引擎、光子計數(shù)器、混勻電機、8255 I/O擴展、抽樣試管轉輪,串口上位相連。
軟件在上位機采用μC/OS-Ⅱ操作系統(tǒng)管理多個硬件工作任務,實現(xiàn)液晶顯示英文中文輸入法及其可觸摸,方便醫(yī)生管理和修改病人檢測血液信息,隨時用U盤或者SD卡即時保存病人數(shù)據(jù),通過網(wǎng)絡遠程控制系統(tǒng)工作,運用鍵盤鼠標便捷可視化操作,最后運用打印機打印結果信息。在下位機運用串口相連,即時發(fā)送檢測數(shù)據(jù)給上位機,并擴展IO口供各個混勻系統(tǒng)的電機控制。血液檢測系統(tǒng)的框架如圖1所示。
圖1 血液檢測系統(tǒng)整體框架結構圖
硬件開發(fā)平臺采用Samsung(三星)公司推出的16/32位RISC嵌入式微處理器S3C44B0X(ARM7TDMI內(nèi)核)為核心,該處理器為手持設備和一般類型應用提供了高性價比和高性能的微控制器解決方案。利用ADS1.2軟件開發(fā)平臺實現(xiàn)。
由于系統(tǒng)采用了上位機下位機模型來分別處理各自的數(shù)據(jù)操作,所以針對各自設備,要逐一撰寫各個設備驅動,調(diào)試驅動通過以后,運用操作系統(tǒng)μC/OS-Ⅱ將這些設備驅動程序當作任務逐個管理起來,達到各自之間協(xié)調(diào)通信和同步。在μC/OS-Ⅱ操作系統(tǒng)的應用層次,我們根據(jù)項目需要妥善地向系統(tǒng)穿插源代碼,編寫適合于μC/OS-Ⅱ環(huán)境下的實際應用程序。
μC/OS-Ⅱ的實現(xiàn)代碼用的是C語言,但是仍需要用匯編寫一些與處理器相關的代碼,這是因為μC/OS-Ⅱ在讀寫處理器寄存器時只能通過匯編來實現(xiàn),如任務堆棧使用狀況、任務切換、系統(tǒng)時鐘等,并且這些代碼跟芯片型號、主頻、工作模式都有很大的關系,所以要讓μC/OS-Ⅱ操作系統(tǒng)真正在指定芯片S3C44B0上面工作起來,必須進行匯編語言改寫。
由于μC/OS-Ⅱ僅是一個內(nèi)核式操作系統(tǒng),并且在設計時就已經(jīng)充分考慮了可移植性,所以μC/OS-Ⅱ移植相對來說比較容易,通常體現(xiàn)在下面幾個方面:
(1)修改 OS_CPU.H
修改配置文件,使得μC/OS-Ⅱ支持ARM7的32位模式,設置堆棧增長方向,添設ARM7下的一些CPSR的處理,主要程序如下:
(2)修改 OS_CPU_C.C
這是真正實現(xiàn)管理堆棧的C文件。為芯片開辟堆棧組織堆棧是任務運行的根本保證,關鍵函數(shù)是OSTaskStkInit()。
void*OSTaskStkInit(void(*task)(void*pd),void*pdata,void*ptos,INT16U opt);task函數(shù)指針即是指向需要的具體任務名字,分60字節(jié)的空間給其堆棧,--stack逐一配置 pc、lr、r0 ~ r12、cpsr、spsr值。
(3)修改 OS_CPU_A.ASM
這個文件主要匯集如何設置系統(tǒng)時鐘、如何實現(xiàn)系統(tǒng)任務的匯編切換、如何調(diào)度任務、如何處理外部中斷事件。
完成這三個文件的修改操作,系統(tǒng)就可以跑動起來了。
血液檢測系統(tǒng)的數(shù)據(jù)存儲設計,是系統(tǒng)開發(fā)重要的一個部分。來自外部采集的數(shù)據(jù)、經(jīng)醫(yī)學算法處理的數(shù)據(jù)、LCD顯示屏顯示的數(shù)據(jù)以及最終處理并打印的數(shù)據(jù)都需要放在外部存儲設備進行管理,而且數(shù)據(jù)經(jīng)常隨著不同操作界面有不同的含義,這就需要在編寫驅動設備的同時,建立合適的訪問方式和層次管理才能有條不紊地進行數(shù)據(jù)的讀寫。
經(jīng)由USB主機系統(tǒng)整個協(xié)議棧,我們可以理順主機軟件開發(fā)骨架。由于血液檢測系統(tǒng)的開發(fā)融入μC/OS-Ⅱ操作系統(tǒng)的管理,而在USB總線活動時,USB主機系統(tǒng)僅需要按照協(xié)議的特定時序來運行,因此操作系統(tǒng)μC/OS-Ⅱ調(diào)度U盤工作的時候,可以使用μC/OS-Ⅱ的中斷機制來處理來自U盤或者給U盤的數(shù)據(jù)信息。下面是程序代碼開發(fā)的軟件層次。
(1)主CPU與各系統(tǒng)模塊的初始化程序設計:實現(xiàn)主CPU的初始化和邊置芯片的初始化,包括內(nèi)存、NAND Flash、LCD顯示,鍵盤,以及RS-232串口程序等,也初始化CPU與USB主機控制器之間的數(shù)據(jù)通信功能。
(2)μC/OS-Ⅱ操作系統(tǒng)的啟動:進入操作系統(tǒng)初始化,創(chuàng)建空閑進程,分配系統(tǒng)各個任務號,配置S3C44B0的系統(tǒng)中斷,時刻接受來自硬件的中斷信息,管理對U盤的訪問。
(3)USB主機系統(tǒng)軟件的實現(xiàn):主要完成核心驅動程序的功能,具體來說就是實現(xiàn)USB的4種基本的數(shù)據(jù)傳輸方式,實現(xiàn)USB設備的枚舉過程,并獲取USB設備的描述符等,這些功能都可以通過讀寫主控制器寄存器來完成,因此,系統(tǒng)中只需分別定義一個讀寄存器函數(shù)和寫寄存器函數(shù),然后以此函數(shù)為基礎來構成各功能函數(shù),實現(xiàn)數(shù)據(jù)傳輸、設備枚舉以及獲取描述符等各種操作。
(4)Mass Storage類協(xié)議的程序設計:實現(xiàn)Mass Storage設備類中Bulk-Only傳輸協(xié)議,實現(xiàn)Mass Storage類中UFI子類的讀寫請求命令,以此對設備進行各種訪問和讀寫操作。
(5)應用程序設計:主要實現(xiàn)FAT文件系統(tǒng)??筛鶕?jù)FAT文件系統(tǒng)的核心思想,通過MassStorage類協(xié)議中的UFI子類命令和標準的設備請求命令與設備U盤建立連接關系,并在USB主機系統(tǒng)中建立磁盤的空間結構,定義MBR,DBR的數(shù)據(jù)結構,建立FAT表,F(xiàn)DT表,來實現(xiàn)對文件系統(tǒng)進行讀取等操作即可。
μC/OS-Ⅱ對U盤管理是中斷層次的概念,也就是說μC/OS-Ⅱ在系統(tǒng)初始化之后,設置中斷處理為一項任務,來處理外部事件的發(fā)生。主芯片S3C44B0對主控制器枚舉的時候,如果沒有USB設備的接入,系統(tǒng)自動進入到其它任務的運行中,同時將中斷任務掛起等待郵箱信號,當U盤接入系統(tǒng)的時候,SL811主控制器發(fā)送中斷給S3C44B0,中斷處理程序發(fā)送U盤工作時需要的郵箱信號,由于中斷任務的優(yōu)先級最高,那么U盤取得信號就進入到自己的工作方式當中,實現(xiàn)枚舉與探測。
血液檢測系統(tǒng)的開發(fā),就是要滿足用戶定制,達到產(chǎn)品運行時各種功能的正確運行。各個模塊的聯(lián)調(diào)、整機系統(tǒng)的磨合檢測,需要一定外在的軟件邊界測試和意外數(shù)據(jù)測試;數(shù)據(jù)測試也是一塊不可以缺少的工作,下面是關于系統(tǒng)幾個關鍵模塊的數(shù)據(jù)測試,包括自行開發(fā)的穿插軟件測試。
超級終端是常用的調(diào)試工具,雖然不能直接檢測項目的圖形效果,但卻能夠捕捉軟件在運行時各軟件塊的工作情況,而且RS232的快速性不會延誤系統(tǒng)工作機時,能夠打印軟件局部位置執(zhí)行時的數(shù)據(jù)結果。因此我們采用超級終端打印信息來反饋機器工作情況,用截圖闡述數(shù)據(jù)測試結果。
圖2 用戶登錄綜合數(shù)據(jù)
圖3 PC機讀U盤的數(shù)據(jù)
基于ARM處理器的嵌入式血液檢測系統(tǒng)經(jīng)過半年開發(fā),成功地實現(xiàn)了系統(tǒng)所要求的各項技術指標;實現(xiàn)了主機液晶、觸摸屏、鍵盤鼠標、串口下位機、USB的設備驅動程序,完成了U盤的USB1.1協(xié)議棧、USB的MassStorage類的Bulk-only傳輸,實現(xiàn)輕型文件系統(tǒng)FAT16,撰寫了U盤μC/OS-Ⅱ環(huán)境下多任務多數(shù)據(jù)的防紊亂程序;編寫和調(diào)試PS/2鍵盤鼠標和LCD觸摸屏一體化軟件源代碼,從整體軟件和硬件驅動的延時機制來處理系統(tǒng)輸入法漢字錯誤累積長度;實現(xiàn)了μC/OS-Ⅱ操作系統(tǒng)下循環(huán)緩沖隊列機制和郵箱機制的運用,綜合中斷串口數(shù)據(jù)、醫(yī)學算法、U盤存儲存在著不同執(zhí)行速度和執(zhí)行順序,使用源碼穿插和數(shù)據(jù)緩沖拷貝形式解決速度差異帶來的機械性,最終實現(xiàn)系統(tǒng)批量采集外在數(shù)據(jù),進行自動化處理。由于ARM技術的迅猛發(fā)展,融入了SOC上的LINUX操作系統(tǒng)管理,綜合圖形界面,支持各式樣的文件系統(tǒng),能夠兼容各層驅動,攘擴絕大部分常用設備的驅動,并提供便捷的驅動開發(fā)模塊等等,這都有益于本血液檢測系統(tǒng)向更高層次的ARM主芯片方向開發(fā),使它更具有全自動性和界面美觀性,反應速度也大大提高。在未來的血液檢測系統(tǒng)升級改進中,使用LINUX系統(tǒng)是大勢所趨。
[1]李烈均,劉少杰,張夜新.醫(yī)療系統(tǒng)的現(xiàn)狀及發(fā)展前景[M].北京:科學出版社,2004.
[2]李麗娜.新型流動注射-化學發(fā)光體系的研究及其應用[D].重慶:西南大學,2006.
[3]馬忠梅,馬廣云,徐英慧,等.ARM嵌入式處理器結構與應用基礎[M].北京:北京航空航天大學出版社,2005.
[4]邵貝貝.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ的應用與新發(fā)展[M].北京:北京航空航天大學出版社,2003.
[5]Adam Chapweske.PS/2 Interface Development[M].A-merica,2000.
[6]劉丙成.μC/OS-Ⅱ內(nèi)核分析及其平臺的構建[D].呼和浩特:內(nèi)蒙古工業(yè)大學,2005.
[7]尹高.LCD液晶模塊理論[M].北京:高等教育出版社,2004.
[8]張建鵬.全自動化學發(fā)光免疫分析儀[D]天津大學,2005.
[9]宋寅卯,張青波.μC/OS-Ⅱ在 S3C44BOX上的移植[J].微計算機信息,2005.21(4):127 ~128.
[10]邵同震,孫光民.嵌入式系統(tǒng)中USB總線驅動的開發(fā)與應用[J].計算機應用研究,2002.(12):33 -41.