<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式虹膜圖像采集及預(yù)處理

          嵌入式虹膜圖像采集及預(yù)處理

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

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

          本文引用地址:http://www.ex-cimer.com/article/171433.htm

          0 引言

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

          1 Blackfin561中的DMA

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

          2 PPI接口驅(qū)動(dòng)的具體實(shí)現(xiàn)

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

          為管理各種外圍硬件設(shè)備,uClinux系統(tǒng)對其采取面向?qū)ο蟮姆庋b機(jī)制。uClinux將所有的外圍設(shè)備看成是一類特殊文件,稱為“設(shè)備文件”,它抽象了對硬件的處理,用戶進(jìn)程只需通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用如open(),read(),write(),close()而無需了解設(shè)備在硬件層上實(shí)現(xiàn)的細(xì)節(jié)即可實(shí)現(xiàn)對設(shè)備的訪問控制。驅(qū)動(dòng)程序則負(fù)責(zé)這些系統(tǒng)調(diào)用的具體實(shí)現(xiàn)。

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

          1.gif

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

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

          (3)設(shè)備驅(qū)動(dòng)程序的file_operations結(jié)構(gòu)。由于所使用的PPI接口只用來做數(shù)據(jù)采集,因此file_operation結(jié)構(gòu)定義如下:

          static struct file_operations ppi_fops = {

          owner: THIS_MODULE,

          read: ppi_read,

          open: ppi_open,

          release: ppi_release,

          };

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

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

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

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

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

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

          *pDMA1_0_START_ADDR = buf;

          *pDMA1_0_CONFIG = 0x109B;

          *pPPI0_CONTROL = 0x01C5;

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

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

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();