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