【作 者】陸 強,李文鋒,張西學(xué),李俊民, 劉龍清
泰山醫(yī)學(xué)院信息工程學(xué)院,山東,泰安,271016
肺音是呼吸系統(tǒng)在換氣過程中產(chǎn)生的聲音的總稱,蘊含著呼吸系統(tǒng)的病理學(xué)、生理學(xué)信息。自發(fā)明聽診器后,肺音聽診一直是呼吸系統(tǒng)疾病診斷的基本方法。
如何實時有效地采集肺音,并進行顯示與存儲,是這種診斷方法實現(xiàn)的前提。針對這個問題,在分析當(dāng)前國內(nèi)外先進的肺音信號采集技術(shù)的基礎(chǔ)上,開發(fā)了基于ARM和Linux的肺音采集器。
肺音采集器整體結(jié)構(gòu)如圖1所示。肺音采集模塊的硬件以ARM的S3C2440芯片為核心,以駐極體話筒為聲音信號傳感器,音頻芯片采用UDA1341TS。由于S3C2440和UDA1341TS都提供了IIS音頻解碼接口,在設(shè)計時將兩者的IIS信號引腳直接連接。
S3C2440微處理器是三星公司為手持設(shè)備而設(shè)計的一款處理器。它采用了發(fā)展的ARM920T內(nèi)核,0.13μm的CMOS標(biāo)準(zhǔn)宏單元和存儲單元。主要功能模塊有電源管理模塊、片上時鐘發(fā)生器、RTC、IIS數(shù)字音頻總線接口、4通道DMA、擴展內(nèi)存控制器、3通道UART、USB模塊、定時器模塊和24路外部中斷源。
模數(shù)轉(zhuǎn)換芯片為Philip公司推出的UDA1341TS。它采用了先進的Sigma-delta過采樣技術(shù),工作電壓范圍為2.4~3.6V。由于其功耗特別低,非常適合于MP3、MD播放器等低功耗場合的應(yīng)用。UDAl341TS芯片除了提供模數(shù)轉(zhuǎn)換功能外,還具有L3接口、IIS(Inter-IC Sound bus)接口和麥克風(fēng)揚聲器接口。
在音頻信號采集系統(tǒng)中,L3接口分別連到S3C2440的3個通用數(shù)據(jù)輸出引腳上。S3C2440通過向這個通用端口發(fā)送數(shù)據(jù)來對UDA1341TS進行初始化。圖2所示為S3C2440與UDA1341TS連接圖,圖中CDCLK、I2SSCLK、I2SLRCK、I2SSDI、I2SSDO、L3MODE、LSCLOCK和L3DATA引腳連接到S3C2440。
Flash存儲器是一種可在系統(tǒng)進行電擦寫,掉電后信息不丟失的存儲器。Flash存儲器作為一種非易失性存儲器,是用于裝載系統(tǒng)的Bootloader程序、操作系統(tǒng)、數(shù)據(jù)和應(yīng)用程序的核心。
本系統(tǒng)NANDFlash芯片K9F1216,是SAMSUNG公司生產(chǎn)的采用NAND技術(shù)的大容量、高可靠的Flash存儲器。該器件采用三星公司的CMOS浮置門技術(shù)和與非存儲結(jié)構(gòu),工作電壓2.7-3.6V,存儲容量為32MX16位。圖3所示為S3C2440與Flash連接圖。
圖2 S3C2440與UDA1341TS連接圖Fig 2. Connection Between S3C2440 and UDA1341TS
圖3 S3C2440與Flash連接圖Fig 3. Connection Between S3C2440 and Flash
系統(tǒng)的軟件設(shè)計首先需要搭建軟件平臺,即Bootloader、Linux內(nèi)核、文件系統(tǒng)配置;然后進行驅(qū)動程序的設(shè)計與加載;最后根據(jù)具體需要設(shè)計應(yīng)用軟件,完成所要求的功能。
交叉編譯是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。交叉編譯環(huán)境是一個由編譯器、鏈接器等組成的綜合開發(fā)環(huán)境。Linux環(huán)境下使用GNU工具完成編譯、鏈接等過程,包括針對目標(biāo)系統(tǒng)的編譯器gcc、針對目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫glibc、針對目標(biāo)系統(tǒng)的二進制工具binutils和針對目標(biāo)系統(tǒng)的Linux內(nèi)核頭文件等。
在本系統(tǒng)中使用的是cross-3.3.2交叉編譯器工具鏈。在Linux下解壓后即生成編譯所需的工具,然后在環(huán)境變量PATH中添加路徑。
BootLoader是在操作系統(tǒng)內(nèi)核運行之前的一段程序,相當(dāng)于PC上的BIOS。通過BootLoader,可以完成對硬件的初始化,包括初始化CPU、堆棧和存儲器等;把內(nèi)核從NANDFlash復(fù)制到SDRAM,然后啟動;下載映像文件并寫入Flash等。
本系統(tǒng)的BootLoader采用U-Boot,首先要下載源碼包u-boot-1.1.6,在Linux下解壓后即得到全部U-Boot源程序。U-Boot源碼通過GCC和Makefile組織編譯。Makefile從功能上分成兩部分,一部分用來編譯生成uboot.bin文件,另一部分用來執(zhí)行每種board相關(guān)的配置。編譯流程為執(zhí)行make smdk2440_config傳入ARCH,CPU,BOARD,SOC參數(shù),mkconfig根據(jù)參數(shù)將include頭文件夾相應(yīng)的頭文件夾連接好,生成config.h。然后執(zhí)行make分別調(diào)用各個子目錄的Makefile生成所有的obj文件和obj庫文件。最后連接所有目標(biāo)文件,生成鏡像文件。
Linux內(nèi)核是Linux操作系統(tǒng)的核心,也是整個Linux功能體現(xiàn)。它是用C語言編寫,符合POSIX標(biāo)準(zhǔn)。本系統(tǒng)采用的內(nèi)核為linux-2.6.30.4。其移植的具體步驟如下:
(1) 首先修改根目錄下的Make fi le文件。在根目錄下的Makefile文件中,首先要指定所移植的硬件平臺以及所使用的交叉編譯器。
(2) 使用“make menuconfig”菜單方式,來配置內(nèi)核。配置時盡量剪裁內(nèi)核,需要注意CPU的型號、串口的設(shè)置和肺音系統(tǒng)各個模塊的設(shè)置。
(3) 配置好后保存退出,執(zhí)行指令:make zImage。交叉編譯得到內(nèi)核映像名為zImage的文件,然后將其下載到目標(biāo)板上運行。
文件系統(tǒng)指文件存在的物理空間。在Linux系統(tǒng)中,每個分區(qū)都是一個文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。主要內(nèi)容包括應(yīng)用程序,對應(yīng)目錄為/bin,/sbin,/usr/bin,/usr/sbin;設(shè)備文件,對應(yīng)目錄為/dev;腳本和配置文件,對應(yīng)目錄為/etc;庫文件,對應(yīng)目錄為/lib,/usr/lib,/usr/share。常見文件有cramfs,romfs,jffs和yaffs。本系統(tǒng)采用yaffs文件系統(tǒng)。其具體步驟為:
(1) 下載busybox,通過make menucon fi g修改并配置busybox;
(2) 執(zhí)行指令make install;
(3) 新建目錄root_2.6.30.4,把busybox下的bin、sbin、usr和linuxrc拷入新建目錄下,建立dev、etc、home、lib、opt和proc等文件目錄,并配置內(nèi)容;
(4) 制作映像文件,燒寫到主板中運行。
這里重點介紹一下UDA1341驅(qū)動程序。在Linux系統(tǒng)中,有兩類音頻設(shè)備驅(qū)動框架;即OSS和ALSA。前者包括dsp和mixer字符設(shè)備接口,在用戶空間的編程中,完全使用文件操作;后者以card和組件為主線,在用戶的編程空間中使用alsalib。本系統(tǒng)選用OSS框架。
在本系統(tǒng)中,驅(qū)動程序的主要任務(wù)是控制音頻數(shù)據(jù)在硬件中流動,并為音頻應(yīng)用程序提供標(biāo)準(zhǔn)接口,系統(tǒng)包括設(shè)備的注冊和卸載模塊、聲音的錄制和播放和mixer混音器設(shè)備接口模塊。
2.5.1 設(shè)備的注冊和卸載模塊
本模塊包括對與L3接口相連的I/O口和與IIS接口相連的GPIO口的設(shè)置,對UDA1341的初始化,對DMA通道的選擇和初始化,并且通過register_sound_dsp()和register_sound_mixer()函數(shù)注冊音頻設(shè)備和混音器設(shè)備。
2.5.2 聲音的錄制和播放模塊
聲音的錄制和播放主要通過dsp設(shè)備接口函數(shù)實現(xiàn),向該設(shè)備寫數(shù)據(jù),就是播放聲音,向該設(shè)備讀數(shù)據(jù),就是錄制聲音。對設(shè)備的打開、讀寫和控制函數(shù)在 fi le_operations結(jié)構(gòu)中進行了定義,結(jié)構(gòu)體如下:
對設(shè)備的打開、讀寫、控制和關(guān)閉函數(shù)分別對應(yīng)open()、read()、write()、ioctl()和release()函數(shù)。2.5.3 混音器設(shè)備接口模塊
mixer混音器的功能是將多個信號組合或者疊加在一起?;煲羝鞯牟僮鞑环献x寫模式,因為大部分操作是通過ioctl()系統(tǒng)調(diào)用,來實現(xiàn)諸音量的調(diào)節(jié)、高低音的控制、FM合成器的控制和放音音量的控制。函數(shù)原形為static int sound_mixer_ioctl
本系統(tǒng)應(yīng)用程序主要實現(xiàn)肺音信號的采集、存儲和播放功能。程序流程圖如圖4所示。
圖4 程序流程圖Fig 4. Flow chart of Program
利用所構(gòu)建的系統(tǒng),進行了肺音的采集實驗。采集時,要求環(huán)境安靜,正常人采用坐姿勢,將駐極體一端放在采集人身上,采集呼吸音信號。所采集到的肺音波形如圖5所示。
利用該信號,可以得到肺音特征。通過算法,還可以很容易地得到肺音信號的時域和頻域參數(shù)。
圖5 肺音信號波形Fig 5. Waveform of Lung Sound
本研究利用ARM和Linux技術(shù),成功實現(xiàn)了對肺音信號的采集,并可以將信號進行直觀地顯示。為醫(yī)生提供了一種有效的診斷工具。
[1] 范愛華,卞春華,寧新寶, 等. 基于ARM的無線心電監(jiān)測儀Flash存儲器[J]. 中國醫(yī)療器械雜志, 2008, 32(6): 416-418.
[2] 牛海軍, 萬明習(xí), 王素品. 不同種類肺音信號的雙譜分析[J]. 儀器儀表學(xué)報, 2001, 22(5): 486-490.
[3] 呂萍, 閔一建, 錢鐵群. 運動前后肺音信號的提取與頻譜分析[J].陜西師范大學(xué)學(xué)報, 2005, 33(3): 62-64.
[4] 劉志芳, 阮建雯, 劉志彥. 基于ARM_Linux的嵌入式數(shù)控系統(tǒng)設(shè)計[J]. 機床與液壓, 2009, 37(10): 188-190.
[5] 馬毓昭, 柴新禹, 任秋實. 基于S3C2410的Q開關(guān)Nd_YAG激光器控制系統(tǒng)的研究與設(shè)計[J]. 中國醫(yī)療器械雜志, 2007, 31(6): 411-414.
[6] 趙倉明, 穆煜. 嵌入式Linux應(yīng)用開發(fā)教程[M]. 北京: 人民郵電出版社, 2009