摘要 | 第2-4页 |
Abstract | 第4-5页 |
1 绪论 | 第9-14页 |
1.1 论文研究背景与意义 | 第9-11页 |
1.1.1 论文研究背景 | 第9页 |
1.1.2 论文研究目的及意义 | 第9-11页 |
1.2 国内外研究现状与分析 | 第11-12页 |
1.2.1 操作系统和CPU国内外研究现状 | 第11页 |
1.2.2 Linux驱动国内外研究现状 | 第11-12页 |
1.3 论文研究内容与结构安排 | 第12-14页 |
1.3.1 论文研究内容 | 第12-13页 |
1.3.2 论文结构安排 | 第13-14页 |
2 系统功能和关键技术分析 | 第14-23页 |
2.1 系统功能概述 | 第14页 |
2.2 系统结构及工作原理 | 第14-15页 |
2.3 系统主要组成部件 | 第15-17页 |
2.3.1 国产平台 | 第15-16页 |
2.3.2 PCIe(switch)扩展槽 | 第16-17页 |
2.4 系统关键技术研究 | 第17-22页 |
2.4.1 PCIe协议 | 第17-19页 |
2.4.2 Linux字符驱动 | 第19-20页 |
2.4.3 Linux PCIe驱动 | 第20-21页 |
2.4.4 Linux驱动多卡调度技术 | 第21-22页 |
2.5 本章小结 | 第22-23页 |
3 系统硬件和开发环境的搭建 | 第23-33页 |
3.1 系统硬件 | 第23-26页 |
3.1.1 PCIe采集卡总体结构 | 第23-24页 |
3.1.2 采集卡上电流程 | 第24-25页 |
3.1.3 FPGA算法处理模块 | 第25页 |
3.1.4 FPGA通信模块 | 第25-26页 |
3.2 搭建开发环境 | 第26-32页 |
3.2.1 搭建编译环境 | 第26-29页 |
3.2.2 远程环境建立 | 第29-32页 |
3.3 本章小结 | 第32-33页 |
4 PCIe多设备驱动软件的设计 | 第33-49页 |
4.1 字符驱动架构 | 第33-38页 |
4.1.1 主设备号和次设备号 | 第33-34页 |
4.1.2 分配和释放设备号 | 第34页 |
4.1.3 字符设备常用结构体 | 第34-36页 |
4.1.4 字符设备驱动的file_operations结构体重要成员函数 | 第36-38页 |
4.2 PCIe驱动结构体解析 | 第38-40页 |
4.3 PCIe配置空间 | 第40-41页 |
4.4 PCIe驱动支持多设备的设计 | 第41-48页 |
4.4.1 PCIe驱动架构的搭建 | 第41-42页 |
4.4.2 PCIe驱动的初始化和多设备的标识 | 第42-43页 |
4.4.3 IO通道的设计 | 第43-44页 |
4.4.4 DMA通道的设计 | 第44-48页 |
4.5 本章小结 | 第48-49页 |
5 应用层测试程序和内核层算法软件接口的设计 | 第49-56页 |
5.1 应用层测试程序的设计 | 第49-52页 |
5.1.1 测试界面的设计 | 第49-52页 |
5.1.2 动态库接口函数的设计 | 第52页 |
5.2 内核层算法接口的设计 | 第52-55页 |
5.2.1 信号量的解析 | 第53-54页 |
5.2.2 内核层算法接口的设计 | 第54-55页 |
5.3 本章小结 | 第55-56页 |
6 系统调试 | 第56-71页 |
6.1 驱动的软件调试 | 第56-60页 |
6.1.1 Makefile的编写 | 第56-57页 |
6.1.2 驱动的编译 | 第57-58页 |
6.1.3 驱动模块的加载和卸载 | 第58-60页 |
6.2 测试程序的调试 | 第60-61页 |
6.2.1 动态库的编译 | 第60-61页 |
6.2.2 测试主程序的编译 | 第61页 |
6.3 功能测试 | 第61-69页 |
6.3.1 多卡测试 | 第61-62页 |
6.3.2 IO测试 | 第62-63页 |
6.3.3 DMA测试 | 第63-67页 |
6.3.4 测试界面的优化 | 第67-69页 |
6.4 结果分析 | 第69-70页 |
6.5 本章小结 | 第70-71页 |
7 结论 | 第71-73页 |
7.1 研究工作总结 | 第71页 |
7.2 研究工作展望 | 第71-73页 |
参考文献 | 第73-75页 |
致谢 | 第75-77页 |