新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式機器視覺系統中ARM與DSP的數據通信方法

        嵌入式機器視覺系統中ARM與DSP的數據通信方法

        作者: 時間:2010-12-15 來源:網絡 收藏


        3.3 驅動程序的內核加載方式
        在完成了嵌入式Linux驅動程序的編寫測試工作后,下一步就是將編寫好的驅動程序加載到系統內核,完成驅動硬件的工作。通常有以下兩種做法:
        1)驅動程序直接編譯入內核 采用這種方式編譯的驅動程序在內核啟動時就已經在內存中,運行時不需要再自行加載驅動,可以保留專用的存儲器空間。
        2)驅動程序的模塊加載 采用模塊加載方式的驅動程序將會以模塊形式存儲在文件系統里,需要時動態載入內核即可,使得驅動程序按需加載,不用時節省內存,并且驅動程序相對獨立于內核,升級靈活,授權方式靈活。本文就采用此種方式。
        因為采用的是模塊加載方式,所以還需要借助兩個重要的函數init_module()和cleanup_module(),完成模塊的注冊和卸載。具體源碼可以參見/usr/src/linux/kemel/module.c。在2.3版本以后采用了新的方法命名這兩個函數,定義exampie_init()代替init_module()函數,example_cleanup()代替cleanup_module()函數。在程序的最后用下面兩行代碼進行聲明:
        module_init(S3C2440_HPI_init);
        module_exit(S3C2440_HPI_exit);
        3.4 接口具體應用的設計方法
        利用編寫好的驅動程序,用戶可以編寫出不同的應用接口程序。下面給出自增寫的方法:
        根據圖2的接口電路,A2,A3,A4,A5對應的接口分別是HCNTI0,HCNTL1,,HHWIL,當自增模式寫低半字時,它們的值應該分別是:HCNTL0=0,HCNTL1=1,,HHWIL=O,即A[5:2]=0010,在HPI_VA_BASE上增加偏移就可以對控制口線控制。所以自增寫第一半字時,加00000100即:0x04,當自增模式寫高字節時,它們的值應該是HCNTL0=0,HCNTL1=1,,HHWIL=1,即A[5:2]=1010。所以自增寫第二半字時,加00101000即:0x28。對HPI控制寄存器寫地址用如下宏定義:

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



        4 結束語
        通過一個嵌入式機器視覺系統工程實例,闡述了嵌入式系統中,用ARM+DSP的雙核結構加載Linux操作系統,通過HPI接口進行通信和交換數據的設計方法,設計了HPI接口連接的硬件電路和Linux環境下的驅動程序,描述了該接口的具體應用設計方法。
        ARM+DSP的雙核系統是新型的嵌入式機器視覺系統構建方法,而這里設計的通過HPI接口交換數據的雙機通信方法,在機器視覺系統項目中被成功地應用證明,傳輸數據速度達到10 Mb/s,能夠滿足嵌入式系統對實時性的要求,具有廣闊的應用前景。但在應用中需要注意的是:HPI接口的讀寫過程都涉及到公共的寄存器(HPI的控制寄存器、地址寄存器和數據寄存器)及HPI接口提供給主機(host)端讀寫的內存的相關操作,所以在特定的應用程序、驅動程序的設計中,一定要用信號量等互斥機制加以保護,否則,會出現讀寫錯亂的現象。


        上一頁 1 2 3 下一頁

        關鍵詞: 收發器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 海丰县| 通化县| 东丰县| 亚东县| 葵青区| 库车县| 平陆县| 霍州市| 东丰县| 黄陵县| 合川市| 康平县| 二手房| 璧山县| 大名县| 平舆县| 昌江| 安溪县| 古浪县| 顺昌县| 旺苍县| 科尔| 高阳县| 永康市| 竹溪县| 余庆县| 榆中县| 乌什县| 星座| 噶尔县| 庄浪县| 腾冲县| 凤冈县| 梅州市| 镇平县| 沂水县| 东光县| 新竹市| 大方县| 芦溪县| 察哈|