嵌入式機(jī)器視覺(jué)系統(tǒng)中ARM與DSP的數(shù)據(jù)通信設(shè)計(jì)方案
3.3 驅(qū)動(dòng)程序的內(nèi)核加載方式
將編寫好的驅(qū)動(dòng)程序加載到系統(tǒng)內(nèi)核,完成驅(qū)動(dòng)硬件的工作。
1)驅(qū)動(dòng)程序直接編譯入內(nèi)核采用這種方式編譯的驅(qū)動(dòng)程序在內(nèi)核啟動(dòng)時(shí)就已經(jīng)在內(nèi)存中,運(yùn)行時(shí)不需要再自行加載驅(qū)動(dòng),可以保留專用的存儲(chǔ)器空間。
2)驅(qū)動(dòng)程序的模塊加載采用模塊加載方式的驅(qū)動(dòng)程序?qū)?huì)以模塊形式存儲(chǔ)在文件系統(tǒng)里。這里就采用此種方式。
因采用的是模塊加載方式,所以還需要借助兩個(gè)重要的函數(shù)init_module()和cleanup_module(),完成模塊的注冊(cè)和卸載。具體源碼可以參見(jiàn)/usr/src/linux/kemel/module.c。在2.3版本以后采用了新的方法命名這兩個(gè)函數(shù),定義exampie_init()代替init_module(),example_cleanup()代替cleanup_module()。在程序的最后用下面兩行代碼進(jìn)行聲明:
module_init(S3C2440_HPI_init);
module_exit(S3C2440_HPI_exit);
3.4 接口具體應(yīng)用的設(shè)計(jì)方法
利用編寫好的驅(qū)動(dòng)程序,用戶可以編寫出不同的應(yīng)用接口程序。下面給出自增寫的方法:
根據(jù)圖2的接口電路,A2,A3,A4,A5對(duì)應(yīng)的接口分別是HCNTI0,HCNTL1,HHWIL,當(dāng)自增模式寫低半字時(shí),它們的值分別是:HCNTL0=0,HCNTL1=1,HHWIL=O。所以自增寫第一半字時(shí),加00000100即:0x04,當(dāng)自增模式寫高字節(jié)時(shí),它們的值應(yīng)該是HCNTL0=0,HCNTL1=1,HHWIL=1,即A[5:2]=1010。所以自增寫第二半字時(shí),加00101000即:0x28。對(duì)HPI控制寄存器寫地址用如下宏定義:
對(duì)于作為接收端的DSP處理器,需要明確:
1)是否準(zhǔn)備就緒,可以進(jìn)行寫入數(shù)據(jù),HPI-16中可以通過(guò)HPIC寄存器查詢HRDY的狀態(tài),當(dāng)HRDY為1時(shí),表明HPI已經(jīng)準(zhǔn)備就緒;
2)指明要寫數(shù)據(jù)的區(qū)域址,即dsp_add_w=(hpi.hpi_dsp_add),這是從應(yīng)用程序傳過(guò)來(lái)的參數(shù),以確定寫數(shù)據(jù)區(qū)域的起始地址。自增寫的代碼和注釋如下:
4 結(jié)束語(yǔ)
ARM+DSP的雙核系統(tǒng)是新型的嵌入式機(jī)器視覺(jué)系統(tǒng)構(gòu)建方法,這里設(shè)計(jì)的通過(guò)HPI接口交換數(shù)據(jù)的雙機(jī)通信方法,在機(jī)器視覺(jué)系統(tǒng)項(xiàng)目中被成功地應(yīng)用證明,傳輸數(shù)據(jù)速度達(dá)到10 Mb/s,能夠滿足嵌入式系統(tǒng)對(duì)實(shí)時(shí)性的要求,具有廣闊的應(yīng)用前景。
通信相關(guān)文章:通信原理
評(píng)論