![XScale PXA270在Linux下的FPGA設備驅(qū)動_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/2/ea2c1780-fb23-4798-a1ce-370f86ac920e/ea2c1780-fb23-4798-a1ce-370f86ac920e1.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、xscale pxa270在linux下的fpga設備驅(qū)動intel公司推出的xscale采納 v5te結(jié)構(gòu),是strong arm的升級換代產(chǎn)品。xscale pxa270處理器最高主頻可達到624m赫茲,加入了wireless mmx、intel speedstep等新技術(shù),以其高性能、低功耗、多功能等特點在信息家電、工業(yè)控制等領(lǐng)域得到了廣泛的應用。在控制中,“微處理器”是一種常用的解決計劃,fpga(現(xiàn)場可編程門陣列)有編程便利、集成度高、速度快等特點,設計人員可以通過硬件編程的辦法來實現(xiàn)fpga芯片各種功能的開發(fā),在我們的一個數(shù)控平臺的討論項目中,采納xscale pxa270作為主c
2、pu,并對其舉行fpga擴展,使其具有插補、電機驅(qū)動、信號處理、i/o口擴展的功能。以其內(nèi)核精煉、高效、源代碼開放且免費等優(yōu)勢,嵌入式領(lǐng)域得到了廣泛的應用。下面以intel xscale pxa270上的 flex/acex的應用為例,具體介紹linux下的fpga設備驅(qū)動的實現(xiàn)。1 altera flex/acex芯片結(jié)構(gòu)altera flex/acex芯片是基于查找表lut(lookuptable)原理而實現(xiàn)的,lut本質(zhì)上就是一個ram。目前fpga中多用法4輸入的lut,所以每個lut可以看成一個有4位地址線的16×1的ram。當用戶通過原理圖或hdl語言描述一個規(guī)律以后,f
3、pga開發(fā)軟件會自動計算規(guī)律電路的全部可能的結(jié)果,并把結(jié)果事先寫入ram,這樣,每輸入一個信號舉行規(guī)律運算都等于輸入一個地址舉行查表,找出地址對應的內(nèi)容,然后輸出即可。因為lut主要適合sram工藝生產(chǎn),所以目前大部分fpga都是基于sram工藝的,而sram工藝的芯片在掉電后信息就會走失,一定要外加1片專用配置芯片(本試驗電路用法altera epc2lc20),在上電時,由這個專用配置芯片把數(shù)據(jù)加載到fpga中然后fpga即可正常工作。因為配置時光很短,因此不會影響系統(tǒng)正常工作,在用法acex1k50之前,應對其舉行設計編程,實現(xiàn)相應寄存器及i/o口的功能。有關(guān)fpga的具體內(nèi)容請參閱相關(guān)
4、資料。2 intel xscale pxa270處理器的系統(tǒng)存儲器接口pxa270處理器的可編程靜態(tài)存儲體系結(jié)構(gòu)1所示。在系統(tǒng)上,acex1k50位于ncs2上,物理地址0x80000000x8001000共4k的靜態(tài)地址空間,圖2表示了intel xscale pxa270與acex1k50的硬件銜接關(guān)系。3 linux下acex1k50設備驅(qū)動的實現(xiàn)3.1 linux下設備驅(qū)動基本原理設備驅(qū)動程序是應用程序與硬件之間的一個中間軟件層,設備驅(qū)動程序為應用程序屏蔽了硬件的詳情。這樣在應用程序看來,硬件設備只是一個設備文件,應用程序可以像操作一般文件一樣對應用設備舉行操作,設備驅(qū)動程序是內(nèi)核的一
5、部分,它主要實現(xiàn)的功能有:對設備舉行初始化和釋放;把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);讀取應用程序傳送給設備文件的數(shù)據(jù),回送應用程序哀求的數(shù)據(jù)以及檢測和處理設備浮現(xiàn)的錯誤。linux將設備分為最基本的兩大類:一類是字符設備;另一類是塊設備,字符設備和塊設備的主要區(qū)分在于是否用法了緩沖技術(shù),字符設備以單個字節(jié)為單位舉行挨次讀/寫操作,通常不用法緩沖技術(shù),塊設備為了提高效率,利用一塊系統(tǒng)內(nèi)存作為讀/寫操作的緩沖區(qū),因為涉及緩沖區(qū)管理、調(diào)度和同步等問題,實現(xiàn)起來比字符設備復雜得多。linux通過設備文件系統(tǒng)對設備舉行管理,各種設備都以文件的形式存放在/dev名目下,稱為“設備文件”。應用程序可以
6、像一般文件一樣打開、關(guān)閉和讀/寫這些設備文件,為了管理這些設備,系統(tǒng)為設備編了號,每個設備號又分為主設備號和次設備號,主設備號用來區(qū)別不同種類的設備,而次設備號用來區(qū)別同一類型的多個設備,linux為全部的設備文件都提供了統(tǒng)一的操作函數(shù)接口,辦法是用法數(shù)據(jù)結(jié)構(gòu)struct file_operations,這個數(shù)據(jù)結(jié)構(gòu)中包括許多操作函數(shù)的指針,如open()、close()、read()和write()等,但因為外設的種類較多,操作方式各不相同,struct file_operations結(jié)構(gòu)體中的成員為一系列的接口函數(shù),如用于讀/寫的read/write函數(shù)和用于控制的ioct1等。打開一個文
7、件就是調(diào)用這個文件file_operations中的open操作,不同類型的文件(如一般的磁盤數(shù)據(jù)文件)有不同的file_operations成員函數(shù),接口函數(shù)完成磁盤數(shù)據(jù)塊讀/寫操作,而對于各種設備文件,則終于調(diào)用各自驅(qū)動程序中的i/o函數(shù)舉行詳細設備的操作,這樣,應用程序根本不必考慮操作的是設備還是一般文件,可一律當做文件處理,具有十分清楚 、統(tǒng)一的i/o接口,所以file_operations是文件層次的i/o接口。3.2 acex1k50在linux下設備驅(qū)動的實現(xiàn)驅(qū)動程序中用法內(nèi)存映射可以提供應用戶程序挺直拜訪設備內(nèi)存的能力。用法內(nèi)存映射得益處是處理大文件時速度顯然快于標準文件i/o
8、,無論讀/寫,都少了一次用戶空間與內(nèi)核空間之間的復制,在用戶空間對acex1k50 fpga設備的拜訪是通過內(nèi)存映射來實現(xiàn)的。acex1k50可以看作是硬件銜接在pxa270微處理器的ncs2上的一段物理地址來尋址。由于有虛擬內(nèi)存管理單元,所以假如linux下,必需先把物理地址映射到虛擬地址空間,然后才干對該段地址舉行讀/寫。在內(nèi)核驅(qū)動程序的初始化階段,通過ioremap()將acex1k50的這段物理地址映射到內(nèi)核虛擬空間;在驅(qū)動程序的mmap系統(tǒng)調(diào)用中,用法remap_page_range()將該塊com映射到用戶虛擬空間,這樣內(nèi)核空間和用戶空間都能拜訪acex1k50的這段被映射后的虛擬
9、地址。因為acex1k50位于ncs2上,參照pxa270靜態(tài)存儲體系結(jié)構(gòu)映射表,其物理起始地址為0x08000000。另外,其設備名稱及主次設備號定義如下:其中fpga主設備號定義為零,使得操作系統(tǒng)可以隨機為該設備分配主設備號。ioremap()的作為是把一個物理內(nèi)存地址點映射為一個內(nèi)核指針,被映射數(shù)據(jù)的長度由size參數(shù)設定,該函數(shù)的實質(zhì)上把一塊物理區(qū)域二次映射到一個可以從驅(qū)動程序里拜訪的虛擬地址上去,以下是該函數(shù)的定義:voidioremap(unsigned long phys_addr,unsigned long size);設備驅(qū)動通過fpga_init()函數(shù)初始化fpga設備,
10、終于通過init_module(fpga_init)在內(nèi)核啟動時初始化fpga設備。fpga_init()函數(shù)的流程3所示。ioremap()調(diào)用的語句如下:pxa270_fpga_base(unsigned long)ioremap(fpga_phy_start,sz_4k);可以通過ioremap()調(diào)用的返回值pxa270_fpga_base來推斷fpga物理地址到內(nèi)核虛擬空間是否映射勝利。if(!pxa270_fpga_base)printk(“ioremap pxa270 fpga failedn”);returneinval;向設備文件系統(tǒng)注銷fpga設備通過調(diào)用cheanup_m
11、odule()函數(shù)來實現(xiàn)。其代碼如下:在向內(nèi)核設備文件系統(tǒng)注冊該fpga驅(qū)動后,還須實現(xiàn)設備驅(qū)動的file_operations結(jié)構(gòu),acex1k50的設備驅(qū)動定義了如下file_operations成員函數(shù):其中fpga_open和fpga_release系統(tǒng)調(diào)用的功能只容易地實現(xiàn)了fpga設備用法計數(shù)器的遞增與遞減,fpga_ioctl系統(tǒng)調(diào)用也只是容易的打印一條沒有ioctl控制的信息提醒。這里不再分析實現(xiàn)的詳細代碼。下面詳細分析fpga_mmap的實現(xiàn)過程:fpga_mmap(struct filefilp,struct vm_area_structvma)系統(tǒng)調(diào)用允許挺直將fpga設備內(nèi)存線性地映射到用戶進程的地址空間中,fpga_mmap系統(tǒng)調(diào)用是通過調(diào)用remap_page_range()函數(shù)來實現(xiàn)一段線性物理地址的映射,調(diào)用remap_page_range()函數(shù)需要填寫vm_area_struct結(jié)構(gòu)的幾個關(guān)鍵字段。4 acex1k50設備驅(qū)動在用戶程序中的用法當設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 套改士官申請書
- 拍賣師崗位勞動合同與職業(yè)發(fā)展(2025版)
- 2025年度外墻施工質(zhì)量保修合同
- 2025年二零二五年度木材加工原材料采購合同
- 2025年度護士個人勞動合同(醫(yī)療責任險)
- 2025年度智慧能源管理系統(tǒng)建設合同
- 大學學委申請書
- 2025年度人工智能技術(shù)研發(fā)與應用合同意向
- 2025年度文化場館運營管理服務合同
- 管理的申請書
- 醫(yī)療安全(不良)事件報告制度培訓課件
- 主干光纜、支線光纜線路中斷應急預案
- 跨學科主題學習的思考與策略
- 文藝演出排練指導服務合同
- 醫(yī)院消防安全培訓課件(完美版)
- 2024年青田中小學教師招聘真題
- 行政法-9行政確認
- 人教版(2024新版)一年級上冊數(shù)學第一單元《數(shù)學游戲》單元整體教學設計
- 防洪防汛安全知識教育課件
- 一年級科學石頭
- 部編人教版八年級語文下冊全冊課件
評論
0/150
提交評論