硬體連線設計
arm外部
i/o與
hpi硬體連線
s
3c
2410
與tms
320c
6416
硬體介面如圖1
所示,s
3c
2410
的兩根位址線
addr[3:2]
接hpi
口的hcntl[1:0]
,以實現
arm對
hpi口
3個暫存器的訪問。
s
3c
2410
用addr4
代替讀寫選通訊號連線
hpi口的
hr/w。s
3c
2410
片選訊號
ngcs1
接到hpi
片選hcs
上,將dsp
的hpi
介面作為外部物理位址對映到
s
3c
2410
相應的核心空間,位於外部
i/o介面
bank1
位址0x08000000~0x0fffffff上。
圖 1
hpi
介面裝置驅動程式軟體設計
1 linux
裝置驅動程式
linux
裝置型別分為三種:字元裝置,塊裝置和網路裝置。本設計將
hpi外設歸類於字元裝置。在系統內部,字元裝置驅動程式都提供類似檔案操作的
open,close,read,write,ioctl
等函式入口,詳見
中的file_operations
資料結構。初始化字元裝置時,裝置驅動程式向
linux
登記,並在字元裝置向量表中增加乙個
device_struct
資料結構條目,這個裝置的主裝置表示符用做這個向量表的索引
。hpi
裝置驅動程式在核心與使用者空間註冊登出及系統呼叫過程如圖2
所示:
2 hpi
裝置驅動程式設計
2.1hpi
介面裝置資料結構及其檔案系統介面定義
hpi介面裝置資料結構是自定義的,它完成各個不同系統呼叫之間的協調工作,因此在裝置驅動中是全域性資料結構變數。具體定義如下:
struct hpi_device
檔案系統介面定義是使用者使用
hpi裝置的介面,合理定義裝置驅動程式在核心中的原始碼就能簡化應用程式的設計。
static struct file_operations hpi_fops=;
2.2
讀取hpi
介面資料
hpi裝置驅動程式的開發大多數工作都集中在
struct file_operations
中介面函式的編寫上,這些函式是應用程式通過核心操作硬體裝置的入口函式,下面將給出對
hpi介面讀資料的關鍵**。
#definehpi_baseaddr0x08000000// bank 1
#definebhpi(nb)
__reg1(hpi_baseaddr +(nb))
#definehpic_writebhpi(0x0)
#definehpic_readbhpi(0x40)
#definehpia_writebhpi(0x10)
#definehpia_readbhpi(0x50)
#definehpid_writebhpi(0x20)
#definehpid_readbhpi(0x60)
static ssize_t hpi_read(struct file *file,char *buf,size_t count,loff_t *oppos)
ibuf_size = hpi_size ;
ret=copy_to_user(buf,(__u8*)(&phpidevice->hpibasebufread),ibuf_size)?-efault : ret ;
up(&(phpidevice->sem));
return ibuf_size ; }
雙核處理器ARM DSP
針對當前應用的複雜性,soc晶元更好能能滿足應用和 的需求,整合眾多介面,用arm做為應用處理器進行多樣化的應用開發和使用者介面和介面,利用dsp進行演算法加速,特別是 的編譯碼演算法加速,既能夠保持演算法的靈活性,又能提供強大的處理能力。傳統的晶元,基本是乙個處理器核心,或者是通用處理器如arm,...
雙核處理器ARM DSP如何實現協同工作
傳統的晶元,基本是乙個處理器核心,或者是通用處理器如arm,或者是dsp。對於控制和使用者介面,一般用通用處理器實現,演算法處理或者 處理則依賴於dsp或者硬體晶元,很多系統都是雙晶元的架構。開發模式也比較單純,比如arm晶元,有arm的的 工具,基於os之上進行應用開發 dsp有dsp的開發工具,...
TI雙核處理器ARM DSP如何實現協同工作
基於arm dsp的雙核架構,很多任務程師不知道如何入手進行開發,提出了很多的疑問,比如對arm工程師,很困惑的是如何使用dsp的資源?如何進行資料的互動?如何保持雙核之間的同步?對dsp工程師,則問到如何進行arm除錯?如何啟動dsp?如果進行 加速,如何操作外設獲取或傳送資料等。基於不同的開發經...