摘 要:針對心電監護系統在體積、功能、實時性等方面的不足,以S3C2440為中央處理器設計了一款便攜式心電監護系統,具有體積小、成本低、功能強、實時性好等特點,并在此基礎上研究了Vivi在心電監護系統中的移植。經測試,移植的Vivi在設計的心電監護系統硬件平臺上能穩定運行。
關鍵詞:便攜式; 心電監護系統; Vivi; S3C2440
中圖分類號:TP249文獻標識碼:A
文章編號:1004-373X(2010)15-0146-03
Application of Vivi in Portable ECG Monitoring System Design
SHAO Hua-feng, LI Jing, HUANG Yong
(The 710 Research and Development Institute, CSIC, Yichang 443003, China)
Abstract: A new portable ECG system was designed by S3C2440 CPU, which has many advantages of smaller size, lower cost, stronger function and better real-time performance for solving the shortcomings of ECG monitoring system. Based on the design of portable ECG system, the transplantation of Vivi in ECG monitoring system design is particularly researched, and the transplanted Vivi can run stably on the platform of designed ECG system by testing.
Keywords: portable; ECG monitoring system; Vivi; S3C2440
0 引 言
目前,心電監護系統主要存在體積大、功能簡單、實時性不強等方面的缺點。隨著嵌入式技術的迅猛發展,小型化、智能化、多功能化及網絡化是心電監護系統未來的發展趨勢,實時監護、心電數據分析及輔助診斷技術將會在心電監護系統中得到很大突破[1]。現以S3C2440為中央處理器設計了一款便攜式心電監護系統,具有體積小、成本低、功能強、實時性好等優點,并以此為基礎研究了Vivi在心電監護系統設計中的應用,詳細討論了Vivi的啟動流程、移植過程及編譯等,最后在心電監護系統硬件平臺上對移植的Vivi進行了測試。
1 便攜式心電監護系統硬件電路設計
便攜式心電監護系統的硬件結構如圖1所示,主要包括:中央處理器、心電信號采集電路、帶觸摸屏液晶屏、存儲器、報警電路及通信接口電路等。
中央處理器選用Samsung公司的S3C2440,它采用了32位的低功耗RISC內核ARM920T,其內核包含了存儲管理單元(MMU)、高速指令和數據緩存,主頻最高可達266 MHz,支持實時操作系統Linux和Win CE [2]。同時,S3C2440芯片內部集成了LCD控制器、觸摸屏接口、串口和USB接口等一系列通用外圍接口,簡化了外圍擴展電路的設計。
圖1 便攜式心電監護系統硬件結構
心電信號采集電路用于實現心電信號的提取、放大、濾波等前期處理,并將調理好的心電信號輸入到S3C2440的AD轉換器。由于心電信號十分微弱,典型值僅1 mV,頻率為0.05~100 Hz[3],且受到多種信號干擾,因此心電信號采集電路選用低噪聲、高共模抑制比的運算放大器INA326和OPA2335,并采用兩級放大電路設計,其主要包括前級放大電路、濾波電路、后級放大電路和右腿驅動電路等。
液晶屏選用NEC 256K色240×320分辨率3.5英寸TFT觸摸真彩液晶屏,主要用于心電監護系統界面、心電信號及各種特征參數的顯示,同時通過觸摸屏可對系統進行操作,為心電監護系統提供良好的人機交互界面。
另外,心電監護系統存儲器部分擴展了64 MB SDRAM,2 MB NOR FLASH和64 MB NAND FLASH,主要用于存儲BootLoader、操作系統內核、文件系統、應用程序及程序運行等。通信接口部分主要擴展了串口、USB接口及以太網接口,方便心電監護系統與其他設備或網絡間的通信。
該設計既充分利用了S3C2440芯片高性能及豐富片上資源的特點,又考慮了系統的可移植性和人機交互性,具有成本低、體積小、功能強、實時性好等特點。
2 系統存儲空間地址分配及映射
S3C2440芯片提供了多種存儲器的外擴接口,整個外擴存儲空間為1 GB,分為8個Bank[4]。如圖1所示,便攜式心電監護系統外擴了2 MB的NOR FLASH、64 MB的NAND FLASH和64 MB的SDRAM,其中NOR FLASH存儲系統的Boot Loader,NAND FLASH存儲Linux操作系統內核、根文件系統及心電監護系統應用程序。便攜式心電監護系統外擴存儲空間的地址分配和映射如圖2所示。
圖2 系統存儲空間地址分配及映射
3 Vivi在心電監護系統中的應用
3.1 Vivi簡介
Vivi是韓國Mizi公司開發的一款針對ARM9處理器系列的BootLoader,其基本功能是初始化硬件設備、建立內存空間映射圖等,為引導和加載操作系統內核做好準備[5]。對于特定的嵌入式硬件平臺,需在Vivi的基礎上,根據其硬件配置和啟動需求進行移植,以實現操作系統內核的正確引導。
Vivi的整個啟動過程分為兩個階段:Stage 1和Stage 2。
Stage 1階段主要完成系統基本硬件的初始化、復制Vivi代碼到SDRAM,設置系統的堆棧并跳轉到Stage 2,為Stage 2階段的運行做好準備。
Stage 2階段則完成系統硬件設備的初始化,內存映射檢測,復制操作系統內核及根文件系統映象到SDRAM,設置內核啟動參數并調用內核,為操作系統的啟動做好準備[6]。
Vivi的整個啟動流程如圖3所示。
圖3 Vivi啟動流程
3.2 Vivi移植
在便攜式心電監護系統的設計中,Vivi的移植必須根據系統的硬件配置和啟動要求,移植與之相符合的BootLoader。根據設計的便攜式心電監護系統硬件配置和啟動要求,Vivi的移植主要有以下幾個部分。
(1) Vivi工程管理文件。Vivi在配置和編譯時需調用許多函數庫,包括交叉編譯器庫和頭文件、交叉編譯開關選項設置、Linux內核代碼庫和頭文件[7]。Vivi移植時,需重新設置Makefile文件中各函數庫的調用路徑。
(2) 硬件初始化文件。硬件初始化文件在Vivi/arch目錄下,主要負責Vivi的啟動和系統硬件的初始化[8]。文件中的初始配置參數均為外部定義的常數或宏,主要包括系統存儲空間地址分配及映射、處理器時鐘、串口、GPIO口等硬件的初始化配置。在心電監護系統的Vivi移植中,部分硬件初始化參數配置如下:
/*存儲空間地址分配及映射*/
#define NORROM_BASE0 0x00000000
#define SDRAM_BASE0 0x30000000
#define NORROM_ SIZE 0x200000
#define NANDROM_ SIZE 0x4000000
#define SDRAM_ SIZE 0x4000000
#define VIVI_ROM_BASE 0x00000000
/* RAM空間分配*/
#define VIVI_RAM_SIZE 0x100000
#define HEAP_SIZE 0x100000
#define MMU_TABLE_SIZE 0x4000
#define STACK_SIZE 0x8000
/*系統時鐘*/
#define MDIV_200 0x5c
#define PDIV_200 0x4
#define SDIV_200 0x0
(3) 存儲設備驅動。在Vivi的移植中,存儲設備驅動是系統對外擴存儲設備操作的核心程序[9]。而flash.c是存儲設備驅動中最重要的部分之一,它對FLASH存儲器進行初始化、讀、寫和擦除等操作。在心電監護系統Vivi的移植中,主要編寫以下函數:
static void flash_command();
static int flash_init();
static int flash_read_ecc();
static int flash _write_ecc();
static int flash _erase();
(4) 內核啟動參數。Vivi啟動的最后階段會向操作系統內核傳遞啟動參數,以正常啟動操作系統。在心電監護系統Vivi的移植中,內核啟動參數主要包括內核分區、內存基地址、內核復制到內存的地址等[10]。
便攜式心電監護系統的Vivi移植除上述內容外,還需對其他部分進行簡單移植,完成所有的移植工作后,就進行Vivi的編譯。
3.3 Vivi編譯及測試
Vivi的編譯需要安裝Linux操作系統和建立交叉編譯環境,并準備好編譯所需的函數庫。Vivi編譯時,首先要修改Makefile文件中的函數庫調用路徑,刪掉Vivi目錄下的“*.o”和“*.o.flag”文件,以確保編譯的有效性。通過menuconfig命令進入編譯配置界面,配置并保存后,使用make命令編譯Vivi。如果沒有錯誤提示,在/vivi中就生成了移植到心電監護系統中的Vivi映象文件。
測試時,將移植好的Vivi映象文件燒入便攜式心電監護系統的NOR FLASH中,系統重新啟動后,通過超級終端可以看到Vivi的啟動信息,如圖4所示。
4 結 語
分析測試結果可得,移植的Vivi實現了系統啟動基本信息打印、內存空間映射、時鐘設置、FLASH初始化等功能,并為Linux操作系統內核啟動做好了準備。這表明移植的Vivi在設計的便攜式心電監護系統硬件平臺上能穩定運行,為便攜式心電監護系統的Linux操作系統移植、應用軟件設計等后繼開發奠定了基礎。本文設計的便攜式心電監護系統及Vivi在系統中的移植
為開發人員提供了一種方案,在此基礎上可對便攜式心電監護系統的快速啟動、心電信號采集和分析及心電數據的網絡傳輸等方面進行進一步的研究。
圖4 Vivi測試啟動信息
參考文獻
[1]鄭崇勛.醫療監護技術及其發展方向[J].電子科技導報,2006(11):37-40.
[2]鄭靈翔.嵌入式系統設計與應用開發[M].北京:北京航空航天大學出版社,2006.
[3]余學飛.醫學電子儀器原理與設計[M].廣州:華南理工大學出版社,2003.
[4]周立功.ARM嵌入式Linux系統構建與驅動開發[M].北京:北京航空航天大學出版社,2003.
[5]楊金顯,袁贛南,王麗娜.基于ARM的Vivi研究分析[M].北京:北京航空航天大學出版社,2006.
[6]萬永波,張根寶,田澤,等.基于ARM的嵌入式系統Bootloader啟動流程分析[J].微計算機信息,2005,21(11):91-94.
[7]楊潔,趙剛.嵌入式系統中Bootloader的編譯與移植[J].四川大學學報:自然科學版,2007,44(4):835-839.
[8]魏峰,王曉玲.基于S3C2410的Vivi研究[J].連云港職業技術學院學報,2006,19(3):16-18.
[9]曾宏安,齊堯.用U-BOOT構建嵌入式系統的引導裝載程序[J].單片機與嵌入式系統應用,2005(2):82-85.
[10]陳艷.引導加載程序Vivi的分析和移植研究[J].電子設計應用,2006(11):112-114.
[11]李婧,劉知貴,李彬.遠程心電監測系統的研究與設計[J].現代電子技術,2008,31(15):107-110.
[12]范麗芳,韋云隆,魏云茂,等.基于嵌入式技術的監護系統的研究與設計[J].現代電子技術,2008,31(8):35-37.