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