基于Linux平台的天气雷达高速数据采集系统设计
1.2.2 数据访问方式
FIFO缓冲为可编程FIFO,由FPGA根据片内存储的雷达参数进行控制。当FIFO中数据达到设置的大小时,触发PCIPLX9054引发PCI中断,通过该中断向驱动程序申请发起DMA 传输。驱动程序响应该中断后设置PCIPLX9054的DMA寄存器, 发起方向从局部总线到PCI总线的DMA传输,完成FIFO数据向PC机的传输。
FPGA片内RAM通过PCI地址映射,使用IO操作方式进行数据读写访问。
2 Linux程序实现
天气雷达高速数据采集系统基于Linux2.6内核平台程序,由基于PCI总线的设备驱动程序、数据采集及处理程序组成。
2.1 设备驱动程序实现
设备驱动程序的功能是在Linux2.6系统平台下,通过对PCI总线控制芯片PLX9054的控制,实现PC机与采集板的数据交互,实现雷达采集数据的实时接收及雷达工作状态的控制。从功能结构上,设备驱动主要由设备装载及初始化、提供给用户层的接口函数、中断及DMA数据传输三部分组成。
2.1.1 设备装载及卸载
设备装载和卸载即是Windows系统中设备驱动安装和卸载。在Linux2.6中,装载和卸载主要通过调用系统提供的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,
};
当系统引导时,高速数据采集系统板上电后,板上PCI总线固件对PLX9054设备进行缺省配置,为设备的每个地址区域分配好资源。装载函数在驱动中用module_init声明,进行设备的初始化工作,调用PCI总线驱动注册函数,根据id_table定义的信息对PCI设备PLX9054进行探测识别,完成PLX9054设备驱动的PCI总线注册,然后调用驱动注册的probe函数,完成PLX9054设备使能、PCI地址空间映射、PLX9054设备数据结构初始化、设备注册(注册为字符设备)等操作。卸载函数用module_exit声明,是装载的逆过程,通过调用PCI总线驱动卸载函数,继而调用注册的remove函数、注销设备及PCI地址空间映射、释放分配给设备的数据结构空间等操作,完成系统资源释放。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论