<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式虹膜圖像采集及預處理

嵌入式虹膜圖像采集及預處理

作者: 時(shí)間:2012-05-18 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:簡(jiǎn)要介紹了Blackfin561的DMA功能和BMP文件的格式,敘述了在基于Blackfin561的操作系統uClinux下并行外部接口(PPI)驅動(dòng)程序的框架,以及驅動(dòng)程序中各個(gè)函數的具體功能與實(shí)現方式。完成了數據的,并對數據進(jìn)行了預,提取其中所有亮度信息,生成BMP文件。同時(shí)指出了調試過(guò)程中常遇的問(wèn)題以及解決方法。關(guān)鍵詞:系統;設備驅動(dòng)程序;圖像;DMA;PPI

本文引用地址:http://dyxdggzs.com/article/171433.htm

0 引言

隨著(zhù)計算機和網(wǎng)絡(luò )技術(shù)的發(fā)展,信息安全顯示出前所未有的重要性,而身份識別作為保證信息安全的必要前提,也越來(lái)越受到重視。識別技術(shù)是基于眼睛虹膜的生物識別技術(shù)。虹膜的終生不變性以及信息提取的非接觸性等特性,使其成為各項生物識別技術(shù)中最突出的一項。本文論述了在基于Blackfin561的操作系統uClinux的虹膜圖像以及預。為后期在嵌入式平臺上進(jìn)行虹膜圖像運算提供了圖像來(lái)源。

1 Blackfin561中的DMA

Blackfin系列DSP產(chǎn)品是ADI公司的基于微信號體系結構的DSP,適用于各種視頻、音頻、通信領(lǐng)域。ADSP-BF561有多個(gè)獨立的DMA控制器,能夠以最小的DSP內核開(kāi)銷(xiāo)完成數據自動(dòng)傳輸。DMA傳輸可以發(fā)生在A(yíng)DSP-BF561的內部存儲器和任一有DMA能力的外設之間。此外,DMA傳輸也可以在任一有DMA能力的外設和已連接到外部存儲器接口的外部設備之間完成(包括SDRAM控制器、異步存儲器控制器)。有DMA傳輸能力的外設包括SPORT、SPI端口、UART和PPI端口。每個(gè)獨立的有DMA能力的外設至少有一個(gè)專(zhuān)用DMA通道。BF561內部專(zhuān)門(mén)為適應視頻數據而增加了二維DMA。

2 PPI接口驅動(dòng)的具體實(shí)現

uClinux是針對微控制領(lǐng)域而設計的Linux系統,面向沒(méi)有MMU(Memory Management Unit)的硬件平臺。它是Linux的一個(gè)變種,一方面它繼承了Linux的大部分優(yōu)點(diǎn),例如穩定性,強大的網(wǎng)絡(luò )功能;另一方面其內核相當精簡(jiǎn), 內核體積小于512KB, 內核加文件系統小于900KB。uClinux同標準Linux主要的區別在于兩者的內存管理機制和進(jìn)程調度管理機制,另外它采用了romfs文件系統,并對Linux上的C語(yǔ)言庫glibc做了簡(jiǎn)化。uClinux完全符合GNU/GPL公約,完全開(kāi)放源代碼,因此在嵌入式領(lǐng)域得到廣泛應用。

為管理各種外圍硬件設備,uClinux系統對其采取面向對象的封裝機制。uClinux將所有的外圍設備看成是一類(lèi)特殊文件,稱(chēng)為“設備文件”,它抽象了對硬件的處理,用戶(hù)進(jìn)程只需通過(guò)標準的系統調用如open(),read(),write(),close()而無(wú)需了解設備在硬件層上實(shí)現的細節即可實(shí)現對設備的訪(fǎng)問(wèn)控制。驅動(dòng)程序則負責這些系統調用的具體實(shí)現。

針對具體應用,在驅動(dòng)程序中實(shí)現了模塊注冊注銷(xiāo)函數,open,release接口函數和read接口函數(如圖1所示)。驅動(dòng)程序采用了中斷方式,對PPI和DMA進(jìn)行了配置,采用BF561提供的二維DMA功能。詳細介紹如下:

1.gif

(1)模塊初始化函數init_module()。該函數是每個(gè)內核模塊加載的時(shí)候首先調用的一個(gè)默認函數。程序中使用了module_init()宏來(lái)顯式命名模塊的注冊函數為 ppi_init(),在該函數中完成了設備’ppi’的注冊,當模塊加載完畢之后,內核即知曉該設備的存在。

(2)模塊卸載函數cleanup_module(),該函數與init_module()做相反的工作,在內核中取消設備的登記。與模塊注冊類(lèi)似,程序中使用module_exit()宏來(lái)顯式命名模塊的注銷(xiāo)函數為 ppi_exit()該函數在模塊卸載的時(shí)候自動(dòng)調用。

(3)設備驅動(dòng)程序的file_operations結構。由于所使用的PPI接口只用來(lái)做數據采集,因此file_operation結構定義如下:

static struct file_operations ppi_fops = {

owner: THIS_MODULE,

read: ppi_read,

open: ppi_open,

release: ppi_release,

};

(4)open,release接口函數。在這兩個(gè)函數中分別使用了MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT宏,被操作系統內核用來(lái)記錄當前訪(fǎng)問(wèn)設備文件的進(jìn)程數。由于要使用中斷方式,所以在open和release中要分別實(shí)現中斷的申請和釋放。設備驅動(dòng)程序通過(guò)調用request_irq()函數申請中斷,將一個(gè)硬件處理函數掛到相應的處理隊列中,通過(guò)調用free_irq()函數釋放中斷。在open函數中初始化了PPI和DMA的部分相關(guān)寄存器。擇要描述如下:

*pDMA1_0_Y_COUNT = 625; 二維DMA的外層循環(huán)計數寄存器,用于保存外層循環(huán)的數目。

*pDMA1_0_X_COUNT = 1728/4; 二維DMA的內層循環(huán)計數寄存器,用于保存內層循環(huán)的數目。

*pDMA1_0_X_MODIFY= *pDMA1_0_Y_MODIFY = 4; 內層外層循環(huán)地址增量寄存器。為有效利用DMA帶寬,設置了PPI使之能處理32位DMA,且數據緩沖區是連續的,此處兩個(gè)增量寄存器都被設置為4。

*pPPI0_FRAME = 625; 在PPI被設置成ITU-656輸入模式下,該寄存器用于保存每幀的數據線(xiàn)路數。

(5)read接口函數。在該函數中初始化PPI控制寄存器和DMA配置寄存器及DMA地址寄存器。

*pDMA1_0_START_ADDR = buf;

*pDMA1_0_CONFIG = 0x109B;

*pPPI0_CONTROL = 0x01C5;

設置好寄存器后,使進(jìn)程進(jìn)入睡眠隊列,等待DMA結束產(chǎn)生的中斷將其喚醒。

數據緩沖區在用戶(hù)區定義,因一幀數據大小確定,所以在用戶(hù)應用程序中定義的數據存儲區大小指定為625*1728B。通過(guò)調用函數時(shí)傳遞指針的方式通知數據緩沖區的位置。在該函數中不再使用copy_to_user()函數,此方式節省了內存空間,對于嵌入式應用來(lái)說(shuō)意義重大。事實(shí)上每次DMA開(kāi)始傳送的頭4個(gè)字節總是被忽略掉的,這4個(gè)字節是第一個(gè)活動(dòng)視頻開(kāi)始(EAV)代碼。即需要的一幀圖像數據比實(shí)際傳送的要少4個(gè)字節,但是為了數據處理的方便,仍將數據緩存區定義為完整一幀圖像的大小,這樣數據緩存區的最后4個(gè)字節是下一幀圖像的EAV代碼。到此,虹膜圖像采集的驅動(dòng)程序基本完成,可以看出,驅動(dòng)程序與應用程序聯(lián)系緊密,這也反應了嵌入式系統的一個(gè)特點(diǎn),面向應用,專(zhuān)用性極強。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 處理 采集 圖像 虹膜 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>