基于DM642的高分辨率紅外熱像儀設(shè)計與實現(xiàn)
3 軟件設(shè)計
基于DM642的軟件設(shè)計有兩種主要方式,其中之一是類似單片機的程序設(shè)計方法,主程序是一個死循環(huán),通過中斷和定時器來實現(xiàn)各個任務(wù)的控制。這種方式在程序較大、任務(wù)較多并且任務(wù)間需要同步和通信時不太適合,難以發(fā)揮出處理器的性能。因此本文采用TI公司針對C6000芯片的BIOS操作系統(tǒng)來進行軟件設(shè)計,采用多線程技術(shù),對硬件的訪問都通過BIOS架構(gòu)的Mini-Driver方式,這就保證了系統(tǒng)的穩(wěn)定性和可靠性。
3.1 驅(qū)動程序
對硬件的訪問都封裝成對應(yīng)的驅(qū)動模塊,并且需要用到TI的DDK和NDK開放包,主要包括:(1)對VP1和VP0的驅(qū)動設(shè)計,在DDK中TI為了降低設(shè)計難度,已經(jīng)針對VP口提供了常用的編碼器和解碼器的驅(qū)動模塊,如TVP5146 和TVP5150等,因此可以在現(xiàn)有的VPORT.lib庫上進行修改。具體來說就是把頭文件中的VPORTCAP_Params和VPORTDIS_Params結(jié)構(gòu)中位寬定義字段修改為需要的位寬格式,然后把編碼器和解碼器的OPEN、CLOSE、CTRL函數(shù)中參數(shù)和實際用到的編碼器和解碼器對應(yīng)修改即可。修改完后需要重新編譯VPORT工程,把編譯得到的VPORT.lib文件保存到新工程目錄下調(diào)用。(2)TI已經(jīng)在NDK中提供了TCP/IP協(xié)議棧的支持,但NDK要在自己設(shè)計的板子上運行,還需要在用戶板級驅(qū)動包中添加對EMAC和MDIO的初始化操作。這里在BIOS的全局初始化函數(shù)中首先對物理層芯片進行復(fù)位,然后實現(xiàn)兩個回調(diào)函數(shù)_getConfig和_linkStatus,分別實現(xiàn)對MAC地址配置和以太網(wǎng)鏈路狀態(tài)信息的讀取。
3.2 主程序設(shè)計
主程序流程如圖5所示。首先進行硬件初始化,包括CACHE、VP口、EMAC、I2C、EDMA、中斷等;然后啟動網(wǎng)絡(luò)監(jiān)聽任務(wù)和熱圖采集任務(wù);最后啟動數(shù)據(jù)處理任務(wù)和視頻顯示任務(wù)。各個任務(wù)的功能如下:(1)在熱圖采集任務(wù)中采集到一幀完整的640×480×16 bit的紅外圖像原始數(shù)據(jù)并通過雙緩沖模式通過EDMA把數(shù)據(jù)保存在SDRAM中,然后通過TI提供的RF5框架中的SCOM通信模塊,把地址指針和同步信號發(fā)送到數(shù)據(jù)處理任務(wù)。(2)數(shù)據(jù)處理任務(wù)把原始紅外數(shù)據(jù)進行非均勻性校正、直方圖均衡、溫度計算等處理,并且同時生成具有字符疊加后的模擬視頻數(shù)據(jù);然后數(shù)據(jù)處理任務(wù)把模擬視頻數(shù)據(jù)通過SCOM通信模塊發(fā)送到視頻顯示任務(wù),通過ADV7179得到PAL格式的模擬紅外視頻。如果熱像傳輸任務(wù)已經(jīng)啟動,數(shù)據(jù)處理任務(wù)還需要把處理后的熱圖數(shù)據(jù)發(fā)送到熱像傳輸任務(wù)。(3)熱像傳輸任務(wù)和命令收發(fā)任務(wù)都是基于NDK提供的網(wǎng)絡(luò)通信,首先是初始化TCP SOCKET連接并監(jiān)聽,當接收到網(wǎng)絡(luò)來的連接請求并通過鑒權(quán)后,再啟動對應(yīng)傳輸和命令收發(fā)任務(wù)。其中熱像傳輸任務(wù)的輸入數(shù)據(jù)是來自數(shù)據(jù)處理任務(wù),然后通過TCP協(xié)議發(fā)送到PC計算機進行顯示、存儲和進一步處理。命令收發(fā)任務(wù)接收網(wǎng)絡(luò)傳來的命令信息,包括對探測器的配置、對熱像儀定標數(shù)據(jù)的配置,以及通過該任務(wù)對FLASH進行讀寫,實現(xiàn)熱像儀在線軟件更新功能。
這種基于BIOS操作系統(tǒng)的多線程、多任務(wù)處理方式,充分利用了DM642的高效和并行處理能力,能在保證紅外熱像網(wǎng)絡(luò)傳輸不受干擾的情況下,同時對機芯進行有效的命令配置。并且在有多個PC的上位機程序同時通過網(wǎng)絡(luò)連接熱像儀時,只需要額外啟動對應(yīng)的熱像傳輸線程即可。
4 實驗與總結(jié)
熱像儀網(wǎng)絡(luò)傳輸?shù)乃俣确浅V匾?,這是由于紅外圖像通常不希望進行有損壓縮,而高分辨率的熱像儀對網(wǎng)絡(luò)帶寬要求較高。如FLIR公司的PHOTON640機芯的熱像數(shù)據(jù)輸出為9幀/s,每幀分辨率為640×480,每點14 bit。為了方便處理,在DM642和FPGA的處理中用16 bit存儲每點的數(shù)據(jù),這樣每秒在網(wǎng)絡(luò)中傳輸?shù)膸捴辽傩枰?2 Mb/s。
為了測試DM642的傳輸速度并且和基于ARM9的設(shè)計方案進行比較,在百兆局域網(wǎng)中通過PC和三種設(shè)計方案的熱像儀原理樣機直接連接,并用測試數(shù)據(jù)進行網(wǎng)絡(luò)傳輸,其中包括本文的設(shè)計方案,以及文獻[3]中提出的ARM9+DM9000和ARM9+AX88180。LXT971ALC是物理層芯片,這是由于DM642內(nèi)嵌EMAC控制器,實現(xiàn)網(wǎng)絡(luò)連接外部只需要物理層芯片即可。而ARM9沒有內(nèi)嵌EMAC控制器,只能通過外部通用地址和數(shù)據(jù)總線和外部MAC控制器連接,這里分別選用16位寬的百兆DM9000和32位寬的千兆AX88180 MAC控制器。測試結(jié)果如表1所示??梢娪捎谔幚砥骷軜?gòu)限制,ARM9即使搭配32位寬的千兆MAC芯片,其傳輸速度才33 Mb/s,而DM642卻可以達到80 Mb/s,能夠?qū)崿F(xiàn)640×480這樣的高清晰度熱像儀無損網(wǎng)絡(luò)數(shù)據(jù)傳輸。
基于DM642的嵌入式系統(tǒng)設(shè)計由于其軟硬件的靈活剪裁,并且能充分利用BIOS的多任務(wù)機制,非常適合高性能的嵌入式設(shè)備設(shè)計。本文設(shè)計的紅外熱像儀可以作為獨立的手持設(shè)備,也可以方便地通過網(wǎng)絡(luò)集成到現(xiàn)有系統(tǒng),因此已經(jīng)作為產(chǎn)品,批量地生產(chǎn)應(yīng)用在消防、醫(yī)療和邊防監(jiān)控中,并在甲型H1N1防疫工作中起到了關(guān)鍵作用。
參考文獻
[1] 彭煥良.紅外焦平面熱成像技術(shù)的發(fā)展[J].激光與紅外,2006,36(12):776-780.
[2] 劉國賀,李玉惠,李勃,等.基于FPGA的數(shù)字圖像水印實時嵌入系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2010(3):27-30.
[3] 吳華,謝禮瑩,徐澤宇.基于ARM9的紅外熱像儀設(shè)計與實現(xiàn)[J].計算機工程,2010,36(16):234-236.
[4] 代少升.紅外焦平面陣列非均勻性非線性校正新方法[J].光電工程,2008,35(4):121-125.
評論