熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Linux平臺下的FPGA的ARM驅(qū)動開發(fā)方法

基于Linux平臺下的FPGA的ARM驅(qū)動開發(fā)方法

作者: 時間:2012-04-18 來源:網(wǎng)絡 收藏

1.5 讀/寫操作

讀和寫都是進行類似的任務,就是從設備到應用程序代碼的數(shù)據(jù)拷貝。因此,它們的原代碼比較相似:

ssize_t read(struct file*flip,char__user*buff,size_t count,loff_t*offp);
ssize_t write(struct file*filp,const char__user*buff,size_t count,loff_t*offp);

read的任務是從設備拷貝數(shù)據(jù)到用戶空間(使用copy_to_user),而write則是從用戶空間拷貝數(shù)據(jù)到設備(使用copy_from_user)。

圖1所示是用read參數(shù)表示一個典型讀的實現(xiàn)過程。



2 硬件電路

通常在大容量存儲項目中,S3C2410處理器一般作為主CPU,可對EP2S30F67214進行擴展,以使系統(tǒng)具有拍攝、存儲、下載、I/O口擴展的功能。由于的高速處理能力和易擴展性,的結(jié)合使用,將在嵌入式系統(tǒng)領域占據(jù)主導地位。

本項目中的主要讀取的數(shù)據(jù),然后進行數(shù)據(jù)處理并送給上位機。其處理器與FPGA的連接關系如圖2所示,其主要連接有32位寬數(shù)據(jù)線、27位寬地址線以及讀、寫、中斷和片選控制線等。



在S3C2410中,nGPCS4的物理地址為0x2000000—0x28000000,共計128MB的靜態(tài)物理空間。中斷方式為下降沿有效。

3 編程實現(xiàn)

3.1 設備初始化

初始化模塊在內(nèi)核啟動時主要負責初始化FPGA工作。其實現(xiàn)由module_init () 和module_exit ()兩部分組成。其代碼如下:



3.2 異步中斷通知

在應用程序中,可用如下代碼獲得中斷響應:

signal (SIGIO,test_handler);/*test_handler為函數(shù)名字*/
fcntl(fa,F(xiàn)_SETOWN,getpid ());
oflags=fcntl(fa,F(xiàn)_GETFL);/*fd為打開設備返回值*/
fcntl (fd,F(xiàn)_SETFL,oflagsOFASYNC);/*fd為打開設備返回值*/

應當注意的是,不是所有的設備都支持異步通知。應用程序常常假定異步能力只對socket和tty可用。

3.3 地址映射

設備程序過程中,由于程序操作的都是設備的虛擬地址,因此,要使驅(qū)動程序?qū)μ摂M地址的操作反映到正確的設備上,還需要通過內(nèi)存管理單元MMU來將設備的虛擬地址映射到正確的物理地址上去,從而保證驅(qū)動程序?qū)υO備的虛擬地址的操作,也就是要對其相應的物理地址進行操作。使用內(nèi)存映射的好處是處理大文件時,其速度明顯快于標準文件I/O,這樣無論讀和寫,都少了一次用戶空間與內(nèi)核空間之間的復制。在用戶空間對FPGA設備的訪問可通過內(nèi)存映射來實現(xiàn)。FPGA可以看作是硬件連接在S3C2410微處理器的片選信號nGPCS4上的一段物理地址的尋址。因此,必須先把物理地址映射到虛擬地址空間,然后才能對該段地址進行讀/寫。通常用戶可用如下代碼關聯(lián)FPGA的地址:

fpga_base=ioremap(FPGA_PHY_START,F(xiàn)PGA_PHY_SIZE);

4 結(jié)束語

本文系統(tǒng)的介紹了ARM下的FPGA的驅(qū)動,并通過用戶程序,實現(xiàn)了數(shù)據(jù)的處理和傳輸,從而實現(xiàn)了FPGA在嵌入式領域的廣泛應用。

本文引用地址:http://www.bjwjmy.cn/article/149210.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉