基于MPC8313E和FPGA的雙口RAM驅動開發(fā)
摘要 以MPC8313E芯片為平臺,介紹了一個基于嵌入式Linux探作系統(tǒng)的雙口RAM設備驅動。通過該設備驅動搭建Linux服務器,利用緩存技術實時讀取FPGA雙口RAM數(shù)據,最終實現(xiàn)將海量圖像數(shù)據高速上傳至PC端。
關鍵詞 嵌入式系統(tǒng);Linux設備驅動;雙口RAM
在眾多操作系統(tǒng)中,Linux操作系統(tǒng)以其獨有開放性和靈活性成為重要的系統(tǒng)之一,因而開發(fā)Linux設備驅動具有重要意義。Linux設備驅動是在Linux內核下硬件設備和上層應用程序的紐帶,使得應用程序只需調用系統(tǒng)軟件的應用程序編程接口(API)就可以完成對硬件設備的操作。作為一個橋梁,其在實現(xiàn)具體功能的過程中發(fā)揮著重要的作用,接口豐富的驅動,設備程序對工程的開發(fā)有著重要的意義。Linux對所有連接在系統(tǒng)上的設備都會使用一個設備驅動程序,這個基本設備驅動指令成為了內核的一部分。通過使用設備驅動程序文件,設備對系統(tǒng)來說變成了一個可以尋址、重定向并通過管道符導向的普通文件。
1 雙口RAM讀寫設備驅動的開發(fā)背景
在基于MPC8313E的大容量視頻存儲系統(tǒng)中,系統(tǒng)需要實現(xiàn)通過千兆以太網接口與上位機進行通信,按上位機發(fā)送的命令解析后送給FPGA,進而通過FPGA發(fā)出的曝光脈沖控制高速相機MC1362工作。當存儲任務完成后,F(xiàn)PGA將存儲陣列中的數(shù)據讀入雙口RAM并傳至MPC8313E中,Linux端服務器利用千兆以太網接口將數(shù)據上傳到上位機中,由上位機完成圖像還原。
在構造大容量高速上傳通道的過程中,系統(tǒng)采用飛思卡爾MPC8313E芯片,該芯片有兩個增強型三速(10/100/1 000 Mbit·s-1)以太網控制器,支持IEEES02.3協(xié)議,同時該芯片還支持16/32位的DDR SDRAM數(shù)據接口,最高支持333 MHz的數(shù)據頻率,512 MB可尋址空間以及4個直接存儲器訪問(DMA)通道,可以滿足系統(tǒng)設計要求。該驅動設備主要實現(xiàn)從FPGA雙口RAM中乒乓讀取圖像數(shù)據信息,利用掛載在MPC8313E總線上的FPGA完成數(shù)據上傳,同時也需要解析上位機命令后傳遞給FPGA。
2 Linux驅動模塊的程序設計基礎
在Linux/μClinux的框架結構中,和設備相關的處理可以分為兩個層次:文件系統(tǒng)層和設備驅動層。設備驅動層屏蔽具體設備細節(jié),文件系統(tǒng)層則向用戶提供一組統(tǒng)一、規(guī)范的用戶接口。這種設備管理方法可以很好地做到“設備無關性”,使Linux可以根據硬件外設的發(fā)展進行擴展。
Linux系統(tǒng)允許內核以模塊的方式加載設備,這大幅提高了Linux設備結構的多樣性,同時可以通過裁剪內核減少系統(tǒng)不必要的開支,提高工作效率。一般情況下,Linux內核的驅動模塊通常只實現(xiàn)一個驅動程序,因此它可以分類,在Linux操作系統(tǒng)中有3類主要的設備文件系統(tǒng):塊設備、字符設備和網絡設備。
字符設備:可以像文件一樣訪問字符設備,這樣的驅動程序通常會實現(xiàn)如open、close、read和write系統(tǒng)調用。
塊設備:是文件系統(tǒng)的宿主。Linux允許像字符設備一樣讀取塊設備,允許一次傳輸任意數(shù)量的字節(jié)。結果塊設備與字符設備只在蔭核內部的管理上有所區(qū)別,即在內核/驅動的軟件接口上有所區(qū)別。
網絡設備:任何網絡設備都是通過接口實現(xiàn)的,既可以和其他宿主交換數(shù)據設備。通常情況下,接口是一個硬件設備,但也可以像look back(回路)接口一樣是軟件工具。網絡設備面向網絡協(xié)議而不是文件系統(tǒng)層。
fpga相關文章:fpga是什么
linux相關文章:linux教程
評論