基于Linux平臺的天氣雷達高速數據采集系統設計
1.2.2 數據訪(fǎng)問(wèn)方式
FIFO緩沖為可編程FIFO,由FPGA根據片內存儲的雷達參數進(jìn)行控制。當FIFO中數據達到設置的大小時(shí),觸發(fā)PCIPLX9054引發(fā)PCI中斷,通過(guò)該中斷向驅動(dòng)程序申請發(fā)起DMA 傳輸。驅動(dòng)程序響應該中斷后設置PCIPLX9054的DMA寄存器, 發(fā)起方向從局部總線(xiàn)到PCI總線(xiàn)的DMA傳輸,完成FIFO數據向PC機的傳輸。
FPGA片內RAM通過(guò)PCI地址映射,使用IO操作方式進(jìn)行數據讀寫(xiě)訪(fǎng)問(wèn)。
2 Linux程序實(shí)現
天氣雷達高速數據采集系統基于Linux2.6內核平臺程序,由基于PCI總線(xiàn)的設備驅動(dòng)程序、數據采集及處理程序組成。
2.1 設備驅動(dòng)程序實(shí)現
設備驅動(dòng)程序的功能是在Linux2.6系統平臺下,通過(guò)對PCI總線(xiàn)控制芯片PLX9054的控制,實(shí)現PC機與采集板的數據交互,實(shí)現雷達采集數據的實(shí)時(shí)接收及雷達工作狀態(tài)的控制。從功能結構上,設備驅動(dòng)主要由設備裝載及初始化、提供給用戶(hù)層的接口函數、中斷及DMA數據傳輸三部分組成。
2.1.1 設備裝載及卸載
設備裝載和卸載即是Windows系統中設備驅動(dòng)安裝和卸載。在Linux2.6中,裝載和卸載主要通過(guò)調用系統提供的PCI總線(xiàn)驅動(dòng)注冊函數pci_register_drive和注銷(xiāo)函數pci_unregister_driver來(lái)實(shí)現,其注冊的driver數據結構如下:
static struct pci_driver plx9054_pci_driver = {
.name = 'pci9054',
.id_table = plx9054_pci_tbl,
.probe = plx9054_probe,
.remove = plx9054_remove,
};
當系統引導時(shí),高速數據采集系統板上電后,板上PCI總線(xiàn)固件對PLX9054設備進(jìn)行缺省配置,為設備的每個(gè)地址區域分配好資源。裝載函數在驅動(dòng)中用module_init聲明,進(jìn)行設備的初始化工作,調用PCI總線(xiàn)驅動(dòng)注冊函數,根據id_table定義的信息對PCI設備PLX9054進(jìn)行探測識別,完成PLX9054設備驅動(dòng)的PCI總線(xiàn)注冊,然后調用驅動(dòng)注冊的probe函數,完成PLX9054設備使能、PCI地址空間映射、PLX9054設備數據結構初始化、設備注冊(注冊為字符設備)等操作。卸載函數用module_exit聲明,是裝載的逆過(guò)程,通過(guò)調用PCI總線(xiàn)驅動(dòng)卸載函數,繼而調用注冊的remove函數、注銷(xiāo)設備及PCI地址空間映射、釋放分配給設備的數據結構空間等操作,完成系統資源釋放。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論