ARM DSP雙核HPI介面驅動設計 原創

2021-04-02 18:36:34 字數 2145 閱讀 2147

硬體連線設計

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?如果進行 加速,如何操作外設獲取或傳送資料等。基於不同的開發經...