亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式機器視覺系統(tǒng)中ARM與DSP的數(shù)據(jù)通信方法

        2010-06-05 10:47:58毛曉波劉國棟陳鐵軍黃云峰
        電子設(shè)計工程 2010年10期
        關(guān)鍵詞:嵌入式信號設(shè)備

        毛曉波,劉國棟,陳鐵軍,黃云峰

        (1.鄭州大學(xué) 電氣工程學(xué)院,河南 鄭州450001;2.鄭州市供電公司試驗所 河南 鄭州 450007)

        DSP對數(shù)字信號和數(shù)值算法具有強大的運算處理能力,因而在信號采集與處理中被廣泛應(yīng)用,但其在任務(wù)管理、實時控制、人機交互等方面不占優(yōu)勢。而ARM微控制器則控制功能強大,可以加載嵌入式操作系統(tǒng),且能夠提供良好的人機交互、任務(wù)管理、網(wǎng)絡(luò)通信等方面功能。因此,發(fā)揮DSP和ARM處理器各自的優(yōu)勢,采用ARM+DSP結(jié)構(gòu)的設(shè)計方案已成為嵌入式系統(tǒng)的研究熱點,倍受關(guān)注。通過嵌入式機器視覺系統(tǒng)的設(shè)計實例,闡述ARM與DSP有機結(jié)合的設(shè)計思想,重點研究ARM與DSP之間的數(shù)據(jù)通信。

        1 嵌入式機器視覺系統(tǒng)總體方案

        采用ARM+DSP結(jié)構(gòu)的機器視覺系統(tǒng)總體結(jié)構(gòu)如圖1所示。以三星公司高性能ARM處理器S3C2440作為主控制器,配置并移植Linux操作系統(tǒng),同時以TI公司的DSP芯片TMS320C5402為圖像處理的協(xié)處理器,通過對DSP芯片自帶的HPI接口的硬件連接方案和驅(qū)動程序設(shè)計,將二者有機地結(jié)合起來,各自發(fā)揮其獨特優(yōu)勢,協(xié)調(diào)配合,完成目標采集、處理與視覺跟蹤。

        圖1 嵌入式機器視覺系統(tǒng)結(jié)構(gòu)Fig.1 Framework of embedded machine vision system

        首先由智能攝像機采集現(xiàn)場運動目標的圖像,由ARM控制將數(shù)據(jù)存放在ARM與DSP的公共存儲區(qū)域中,并通知信號處理模塊DSP調(diào)用各種算法(幀間差分、圖像分割、特征提取、形心計算等)對視頻圖像進行處理,完成目標的識別與定位,并將結(jié)果信息傳給ARM處理器,由ARM控制步進電機,調(diào)整PTZ攝像機位姿(水平轉(zhuǎn)動P-Pan、垂直轉(zhuǎn)動T-Tilt、景深伸縮Z-Zoom),使其對準運動目標,實現(xiàn)實時跟蹤。此外,ARM處理器還負責(zé)多任務(wù)管理、人機交互及中斷報警等。

        作為雙核系統(tǒng),雙核各自擁有很好的性能,于是主機ARM與協(xié)處理器DSP之間能否進行快速可靠的數(shù)據(jù)交換,直接決定機器視覺系統(tǒng)的運行效率。在硬件設(shè)計方面,采用主機并行接口HPI實現(xiàn)主機ARM與協(xié)處理器DSP之間的硬件直連,設(shè)計簡單方便,時鐘頻率可達到DSP時鐘頻率的1/5,能夠支持DSP與主機之間的高速數(shù)據(jù)傳輸。在軟件設(shè)計方面,則移植嵌入式Linux操作系統(tǒng),將HPI看作字符設(shè)備完成了驅(qū)動程序的設(shè)計。

        2 雙機通信硬件設(shè)計

        2.1 HPI接口簡介

        主機接口 (HPI)是TI公司C54x系列定點信號處理器(DSP)內(nèi)部自帶的接口部件,通過它可以方便地實現(xiàn)DSP與其他主機連接。C54x中的主機接口主要有3種類型:標準8位主機接口HPI-8,增強8位主機接口HPI-8,增強16位主機接口HPI-16。增強型的HPI可以允許主機訪問DSP所有的片上RAM單元,而標準主機接口只允許訪問固定的2 K片上RAM。本文中用到的TMS320C5402擁有增強HPI-16主機接口。它由以下5部分組成:

        1)HPI存儲器 (DARAM)傳送主機與DSP之間的數(shù)據(jù),在一個機器周期內(nèi)能被訪問2次,可以用作通用的雙導(dǎo)址數(shù)據(jù)RAM或者程序RAM。

        2)HPI地址寄存器 (HPIA)只有主機能對其進行直接訪問。該寄存器中存放著當(dāng)前尋址的HPI存儲單元的地址。

        3)HPI控制寄存器(HPIC)地址002CH,主機和DSP都能對他直接訪問,用來保存HPI操作的控制和狀態(tài)位。

        4)HPI數(shù)據(jù)鎖存器 (HPID)只有主機能對它進行直接訪問。如果當(dāng)前進行的是讀操作,則HPID中存放的是要從HPI存儲器中讀出的數(shù)據(jù);如果當(dāng)前進行寫操作,則HPID中存放的是將要寫到HPI存儲器的數(shù)據(jù)。

        5)HPI控制邏輯 處理HPI與主機之間的接口信號。

        接口電路中使用的引腳及其作用是[1]:HD[15:0]:并行、雙向、三態(tài)的數(shù)據(jù)總線,不傳遞數(shù)據(jù)時為高阻態(tài);HHWIL:半字定義選擇引腳,用來表示第一或者第二半字。當(dāng)?shù)碗娖綍r表示第一半字;當(dāng)高電平時表示第二半字。HR/W:讀/寫輸入信號。高電平表示主機要讀HPI,低電平表示寫HPI。若主機沒有讀/寫選通,則可以用一根地址線代替。HCNTL0和HCNTL1控制引腳表示訪問那個內(nèi)部HPI寄存器和訪問寄存器的類型。表1是具體功能說明。HCS:輸入主要作為HPI的使能信號,而HDS1和HDS2信號控制HPI數(shù)據(jù)傳遞;它們?nèi)呱蓛?nèi)部選通信號HSTROBE。HRDY:HPI就緒信號引腳,高電平表示HPI已經(jīng)準備好執(zhí)行1次數(shù)據(jù)傳送;低電平表示HPI正忙。HINT:主機外部中斷信號,用于HPI向主機發(fā)出中斷。HAS:地址選通信號,僅用于復(fù)用方式。對于地址/數(shù)據(jù)總線分開的主機,必須把信號連接到高電平。

        表1 HCNTL0和HCNTL1引腳功能說明Tab.1 Pin function of HCNTL0 and HCNTL1

        2.2 接口電路及其工作原理

        S3C2440與TMS320C5402通過HPI連接的接口電路如圖2所示,二者連接簡潔方便,不必使用任何的附加電路。工作時,ARM首先初始化控制寄存器HPIC和地址寄存器HPIA,然后對HPID進行讀寫。初始化HPIC、HPIA時,通過A2、A3、A4、A5對應(yīng)的地址進行操作,設(shè)置寄存器訪問控制HCNTL0、HCNTL1、讀寫控制HR/W 和半字訪問HHWIL,配置好HPIC,并在HPIA中寫入 HPI存儲器的起始地址[2]。因為ARM主機具有獨立的地址總線和數(shù)據(jù)總線,采用非復(fù)用方式,所以將HAS信號接高電平(VCC)。S3C2440的nWAIT信號與HPI的HRDY信號邏輯上反向,之間用反相器連接。S3C2440通過片選信號nGCS2、讀使能信號nOE、寫使能信號nWE三者生成內(nèi)部選通信號HSTROBE,控制對HPI的讀寫[3]。

        圖2 S3C2440與TMS320C5402之間的HPI接口電路Fig.2 HPI interface circuit between S3C2440 and TMS320C5402

        3 軟件設(shè)計

        3.1 Linux驅(qū)動程序

        Linux操作系統(tǒng)引入設(shè)備文件的概念,即把每一個設(shè)備都看作一個文件,像對待文件一樣對設(shè)備進行操作。在Linux操作系統(tǒng)下,設(shè)備文件主要有3種類型:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備,各自對應(yīng)一種類型的設(shè)備驅(qū)動程序。本文設(shè)計的HPI接口的驅(qū)動程序?qū)儆谧址O(shè)備驅(qū)動程序。

        Linux下的驅(qū)動程序是為相應(yīng)的設(shè)備編寫多個基本函數(shù),填充file_operations結(jié)構(gòu)體。其中定義了實現(xiàn)各種操作函數(shù),如下所示:

        其中,open和release完成設(shè)備的打開和關(guān)閉。mmap為內(nèi)存地址映射操作。驅(qū)動程序的設(shè)計是通過實現(xiàn)個中操作函數(shù)的基本功能,為相應(yīng)的設(shè)備在應(yīng)用層提供統(tǒng)一的接口。

        下面是本文中的HPI接口的驅(qū)動程序的設(shè)備入口hpi_open函數(shù),它負責(zé)打開、準備設(shè)備。

        任何時候?qū)ψ址O(shè)備(HPI)接口進行打開操作,都會調(diào)用設(shè)備的open入口點(hpi_open)。所以open函數(shù)(hpi_open)必須對將要進行的I/O操作(對DSP讀寫數(shù)據(jù))做好必要的準備工作,例如設(shè)備是獨占的,則open函數(shù)(hpi_open)必須將設(shè)備標記成忙狀態(tài),如上面例程中的①處兩行所示。

        3.2 驅(qū)動程序中映射的實現(xiàn)

        由于在Linux系統(tǒng)中,用戶應(yīng)用程序不能直接對驅(qū)動程序的內(nèi)存空間進行操作,因此必須用到內(nèi)存映射機制。內(nèi)存映射是指把內(nèi)核中的特定的內(nèi)存空間映射到用戶空間的內(nèi)存中去[4]。對驅(qū)動程序來說,內(nèi)存映射可以提供給用戶程序直接訪問設(shè)備內(nèi)存的能力。

        mmap系統(tǒng)調(diào)用映射一個設(shè)備,意味著使用戶空間的一段地址關(guān)聯(lián)到設(shè)備內(nèi)存上,這使得只要程序在分配的地址范圍內(nèi)進行讀取或者寫入,實際上就是對設(shè)備的訪問。

        mmap方法是file_operations結(jié)構(gòu)的一部分,要實現(xiàn)映射必須分兩步[4-7]:

        1)調(diào)用內(nèi)核中的remap_page_range函數(shù),它的功能是:構(gòu)造用于映射一段物理地址的新頁表,實現(xiàn)了內(nèi)核空間與用戶空間的映射,其原型如下:

        int remap_page_range (unsigned long virt_add ,unsigned long phys_add, unsigned long size,pgprot_t prot);

        函數(shù)參數(shù)的確切含義如下:unsigned long virt_add為重映射開始處的虛擬地址。這個函數(shù)為虛地址空間virt_add和virt_add+size之間的范圍構(gòu)造頁表。unsigned long phys_add為虛擬地址應(yīng)該映射到的物理地址。unsigned long size為被重映射的區(qū)域的大小,以字節(jié)為單位。pgprot_t prot為新VMA所請求的“保護”屬性。驅(qū)動程序不必修改保護,在vma->vma_page_prot中找到的參數(shù)可以不加改變地使用。

        本課題中使用mmap調(diào)用的代碼如下:

        這樣就為DSP的HPI接口所對應(yīng)的總線物理地址:0x10000000(對應(yīng) nGCS2)在 vma->vm_start和 vma->vm_end之間構(gòu)造了新的頁表[5]。

        2)在構(gòu)造好新頁表之后,可以調(diào)用mmap函數(shù)完成映射,從圖2可以看到硬件連接圖中的連接DSP片選信號HCS的是引腳nGCS2,從圖3中查出它在內(nèi)存空間對應(yīng)的位置是0x10000000。 mmap 函 數(shù) 的 原 型 是 :mmap (void*start,size length,int prot,int flags, int fd,off_t offset)。 用以下語句獲得映射后的地址:

        hpi_mmap_add=mmap(NULL,length,PROT_READ|PROT_WRITE,MAP_SHARED,hpi_fd,0)其中參數(shù) start指明描述字fd對應(yīng)的“文件”(也就是/dev/hpi設(shè)備)在進程地址空間內(nèi)的映射區(qū)的開始地址,必須是頁面對齊的地址,通常設(shè)為NULL,讓內(nèi)核去自動選擇開始地址。任何情況下,mmap的返回值為內(nèi)存映射區(qū)的開始地址。這樣通過對hpi_mmap_add操作,實現(xiàn)對起始地址為0x10000000的內(nèi)存段操作。

        圖3 S3C2440復(fù)位后的存儲器地址分配Fig.3 S3C2440 memory address assignment

        3.3 驅(qū)動程序的內(nèi)核加載方式

        在完成了嵌入式Linux驅(qū)動程序的編寫測試工作后,下一步就是將編寫好的驅(qū)動程序加載到系統(tǒng)內(nèi)核,完成驅(qū)動硬件的工作。通常有以下兩種做法:

        1)驅(qū)動程序直接編譯入內(nèi)核 采用這種方式編譯的驅(qū)動程序在內(nèi)核啟動時就已經(jīng)在內(nèi)存中,運行時不需要再自行加載驅(qū)動,可以保留專用的存儲器空間。

        2)驅(qū)動程序的模塊加載 采用模塊加載方式的驅(qū)動程序?qū)阅K形式存儲在文件系統(tǒng)里,需要時動態(tài)載入內(nèi)核即可,使得驅(qū)動程序按需加載,不用時節(jié)省內(nèi)存,并且驅(qū)動程序相對獨立于內(nèi)核,升級靈活,授權(quán)方式靈活。本文就采用此種方式。

        因為采用的是模塊加載方式,所以還需要借助兩個重要的函數(shù) init_module()和 cleanup_module(),完成模塊的注冊和卸載。具體源碼可以參見/usr/src/linux/kernel/module.c。在2.3版本以后采用了新的方法命名這兩個函數(shù),定義example_init()代 替 init_module()函 數(shù) ,example_cleanup()代 替cleanup_module()函數(shù)。在程序的最后用下面兩行代碼進行聲明:

        3.4 接口具體應(yīng)用的設(shè)計方法

        利用編寫好的驅(qū)動程序,用戶可以編寫出不同的應(yīng)用接口程序。下面給出自增寫的方法:

        根據(jù)圖 2的接口電路,A2,A3,A4,A5對應(yīng)的接口分別是 HCNTL0,HCNTL1,HR/W,HHWIL, 當(dāng)自增模式寫低半字時, 它們的值應(yīng)該分別是:HCNTL0=0,HCNTL1=1,HR/W=0,HHWIL=0,即 A[5:2]=0010,在 HPI_VA_BASE 上增加偏移就可以對控制口線控制[6]。所以自增寫第一半字時,加00000100即:0x04,當(dāng)自增模式寫高字節(jié)時,它們的值應(yīng)該是HCNTL0=,HCNTL1=1,HR/W=0,HHWIL=1,即 A[5:2]=1010。 所以自增寫第二半字時,加00101000即:0x28。對HPI控制寄存器寫地址用如下宏定義[7]:

        另外,在自增寫過程中,對于作為接收端的DSP處理器,需要明確:1)是否準備就緒,可以進行寫入數(shù)據(jù),HPI-16中可以通過HPIC寄存器查詢HRDY的狀態(tài),當(dāng)HRDY為1時,即表明HPI已經(jīng)準備就緒;2)指明要寫數(shù)據(jù)的區(qū)域址,即dsp_add_w=(hpi.hpi_dsp_add),這是從應(yīng)用程序傳過來的參數(shù),以確定寫數(shù)據(jù)區(qū)域的起始地址。自增寫的代碼和注釋如下:

        4 結(jié)束語

        通過一個嵌入式機器視覺系統(tǒng)工程實例,闡述了嵌入式系統(tǒng)中,用ARM+DSP的雙核結(jié)構(gòu)加載Linux操作系統(tǒng),通過HPI接口進行通信和交換數(shù)據(jù)的設(shè)計方法,設(shè)計了HPI接口連接的硬件電路和Linux環(huán)境下的驅(qū)動程序,描述了該接口的具體應(yīng)用設(shè)計方法。

        ARM+DSP的雙核系統(tǒng)是新型的嵌入式機器視覺系統(tǒng)構(gòu)建方法,而這里設(shè)計的通過HPI接口交換數(shù)據(jù)的雙機通信方法,在機器視覺系統(tǒng)項目中被成功地應(yīng)用證明,傳輸數(shù)據(jù)速度達到10 Mb/s,能夠滿足嵌入式系統(tǒng)對實時性的要求,具有廣闊的應(yīng)用前景。但在應(yīng)用中需要注意的是:HPI接口的讀寫過程都涉及到公共的寄存器(HPI的控制寄存器、地址寄存器和數(shù)據(jù)寄存器)及HPI接口提供給主機(host)端讀寫的內(nèi)存的相關(guān)操作,所以在特定的應(yīng)用程序、驅(qū)動程序的設(shè)計中,一定要用信號量等互斥機制加以保護,否則,會出現(xiàn)讀寫錯亂的現(xiàn)象。

        [1]楊波,闕小茜,薛斌.DSP與ARM的雙機通信[J].兵工自動化,2008,27(4):77-79.YANG Bo, QUE Xiao-qian, XUE bin.Inter-communications between DSP and ARM[J].Ordnance Industry Automation, 2008,27(4):77-79.

        [2]陳猛,趙繼敏.ARM CPU S3C44B0X與C54X DSP的接口設(shè)計[J].電子技術(shù)應(yīng)用,2003(3):15-17.CHEN Meng,ZHAO Ji-min.Design of interface between ARM CPU S3C44B0X and C54X DSP[J].Application of Electronic Technique, 2003(3):15-17.

        [3]陳育林,張秦艷.基于ARM S3C2410與 TMS320C6416的接口設(shè)計[J].測控技術(shù),2006,25(11):80-82.CHEN Yu-lin,ZHANG Qin-yan.Design of interface between ARM S3C2410 and TMS320C6416[J].Measurement&Control Technology, 2006,25(11):80-82.

        [4]Corbet J, Rubini A,Kroah-Hartman G.Linux設(shè)備驅(qū)動程序[M].中國電力出版,2006:418-428.

        [5]張金平,張定會.基于Linux下的ARM與DSP之間數(shù)據(jù)通信[J].儀器儀表學(xué)報,2006,27(6):2056-2059.ZHANG Jin-ping,ZHANG Ding-hui.Data communication between ARM and DSP based on Linux[J].Chinese Journal of Scientific Instrument, 2006,27(6):2056-2059.

        [6]席康,李波.嵌入式Linux下ARM通過主機接口加載DSP[J].微計算機信息,2008,24(7-2):190-192.XI Kang,LI Bo.Design of DSP HPI bootloader by ARM in embedded Linux Environment[J].Microcomputer Information, 2008,24(7-2):190-192.

        [7]孫文康,段義隆,張媛媛.嵌入式Linux下ARM處理器與DSP的數(shù)據(jù)[J].通信國外電子元器件,2005(9):14-17.SUN Wen-kang, DUAN Yi-long, ZHANG Yuan-yuan.Data communication between ARM and DSP in embedded Linux environment[J].International Electronic Elements, 2005(9):14-17.

        猜你喜歡
        嵌入式信號設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        信號
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        基于FPGA的多功能信號發(fā)生器的設(shè)計
        電子制作(2018年11期)2018-08-04 03:25:42
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        500kV輸變電設(shè)備運行維護探討
        基于LabVIEW的力加載信號采集與PID控制
        原來他們都是可穿戴設(shè)備
        消費者報道(2014年7期)2014-07-31 11:23:57
        亚洲av片无码久久五月| 日韩偷拍视频一区二区三区| 精品久久一区二区av| 国产自拍偷拍精品视频在线观看| 国产成人精品a视频| 一本色综合亚洲精品蜜桃冫| 在线偷窥制服另类| 国产精品久久久黄色片| 久久午夜羞羞影院免费观看| 全免费a级毛片| 国产亚洲精品hd网站| 日本女优五十路中文字幕| 天天躁日日躁狠狠躁欧美老妇小说 | 麻豆视频av在线观看| 国产裸体美女永久免费无遮挡| 成人黄色网址| 亚洲成a人片在线播放观看国产 | 亚洲AV肉丝网站一区二区无码| 一级黄片草逼免费视频| 日本中文字幕一区二区有码在线| 亚洲色欲久久久综合网| 91短视频在线观看免费| 一区二区三区一片黄理论片| 欧洲乱码伦视频免费| 亚洲粉嫩高潮的18p| 国产在线高清无码不卡| 日本在线观看一二三区| 国产精品永久免费| 亚洲色婷婷免费视频高清在线观看| 色视频日本一区二区三区 | 免费在线观看亚洲视频| 亚洲av综合av一区| 久久久国产精品黄毛片| 四虎影视久久久免费| 亚洲一区久久蜜臀av| 亚洲国产日韩欧美综合a| 天美麻花果冻视频大全英文版| 国产麻豆精品久久一二三| 丝袜美腿在线观看一区| 少妇人妻偷人精品免费视频| 91青草久久久久久清纯|