基于ZYNQ的PCIE高速数据采集卡的设计(五)上位机软件设计

4.4 上位机软件设计
上位机主要完成数据的接收和保存文件等功能。由于采集卡是一种 PCIE 设备,
需要一种 PCIE 设备的驱动程序为基础进行开发。本设计选择 WinDriver 开发工具来
生成 PCIE 设备驱动和函数库,并基于该驱动在 Visual Studio(VS) 环境下进行上位机
整体功能的开发。在本节中,首先对 WinDriver 进行介绍,然后对驱动生成步骤进行
说明,接下来利用生成的驱动在 VS 环境下进行各种功能的开发,最后是上位机界面
的介绍和说明。
4.4.1
WinDriver 介绍及相关驱动生成
WinDriver 开发设备驱动使用的是底层驱动,与硬件通信的是 windrvr.sys 核心驱
动程序,只需在应用程序中调用 WinDriver 提供的函数库来实现底层各种功能。这些
函数库可与 WinDriver 内核进行交互,通过调用头文件 windrvr.h 中声明的函数来调
用核心模块相应功能,进而通过应用程序实现对外围硬件控制的目的。
WinDriver 的工作模式分为内核模式和用户模式,通过调用用户模式的库函数,
用户模式的库函数再调用内核模式完成对硬件的控制操作。整体的连接关系如图 4.34
所示。
WinDriver 内核驱动程序和用户驱动程序可由 WinDriver 根据设备的种类自动生
成封装。以某 PCI 设备为例,首先打开 WinDriver 软件,然后弹出如图
所示的界
面,该界面显示了当前与 PC 机连接的设备。
选择某一个 PCI 设备,点击 Generate .INF
,生成 INF 文件。弹出如图
所示的界面,框里显示了厂商 ID 和设备 ID 号,勾选上 Automatically install the INF
file 选项,点击 next PC 机会自动生成和安装该 PCI 设备的 INF 文件,并生成 windriver
内核驱动文件。
4.37 显示了该 PCI 设备的配置空间。
接下来生成库函数和用户驱动程序,在该界面点击 Generate Code 按钮,弹出图
4.38 所示的界面,由于上位机是由 VS 开发,因此选择基于 VS 平台下生成驱动程序。
生成的库函数和用户驱动函数如图 4.39 所示,其中
文件是用户驱动文件,
里面定义了配置函数,读写寄存器函数等; _lib.c _lib.h 是库函数文件,里面定义了
设备的打开与关闭,中断处理等函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型LangChain + ChatGLM3-6B的组合集成:工具调用+提示词解读

文章目录 大语言模型LangChain ChatGLM3-6B的组合集成:工具调用提示词解读官方给出的提示词模板解读注解:1. 模板描述2. 工具调用规范3. 问题处理流程4. 最终响应5. 历史记录6. 实际应用举例 大语言模型LangChain ChatGLM3-6B的组合集成:工…

【自译】MIT麻省理工学院技术双月刊(The Bimonthly MIT Technology Review)125周年纪念词

上期 MIT Review 链接:创新版块概览(二) MIT Technology Review 125 原文 Happy Anniversary For 125 years, Technology Review has aimed to explain the “always new and ever more complex problems” we face. “To a community gr…

【Vuforia+Unity】AR04-地面、桌面平面识别功能(Ground Plane Target)

不论你是否曾有过相关经验,只要跟随本文的步骤,你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒,但是要求也很不友好,只能支持部分移动设备,具体清单如下: 01.Vuforia的地面识别功能仅支持的设备清单: Recommended…

【变压器故障诊断分类及预测】基于GRNN神经网络

课题名称:基于GRNN神经网络的变压器故障诊断分类及预测 版本日期:2024-02-10 运行方式:直接运行GRNN0507.m文件 代码获取方式:私信博主或QQ:491052175 模型描述: 对变压器油中溶解气体进行分析是变压器…

应急响应实战笔记03权限维持篇(4)

第4篇:Linux权限维持--后门篇 本文将对Linux下常见的权限维持技术进行解析,知己知彼百战不殆。 1、一句话添加用户和密码 添加普通用户: # 创建一个用户名guest,密码123456的普通用户 useradd -p openssl passwd -1 -salt sal…

26.java-单元测试xml注解

单元测试&xml&注解 单元测试 单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对 Java 方法的测试,进而检查方法的正确性。 简单理解 : 就是一个测试代码的工具 目前测试…

Intersection Observe API

这个API可以用于图片懒加载或者加载更多&#xff0c;主要是观察一个元素是否和目标元素交叉 <template><div class"box"><img ref"img" :src"getAssetsFile(test.png)" alt"" v-for"(item) in 56" :key&quo…

Transformer 学习路线说明

目录 一、6篇建议阅读的Transformer文献 二、5篇建议阅读的博客或视频 三、上述 Transformer 文献的基本介绍 四、学习顺序 一、6篇建议阅读的Transformer文献 [1] Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J…

2024年2月20日v1.0.5更新·优雅草便民工具youyacao-tools

2024年2月20日v1.0.5更新优雅草便民工具youyacao-tools apk下载 https://fenfacun.youyacao.com/tools105.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具&#xff0c;2024年1月17日正式发布v1.0.0版本&#xff0c;本工具为了方便大众免…

mysql优化指南之优化篇

二、优化 现在的理解数据库优化有四个维度&#xff0c;分别是&#xff1a; 硬件升级、系统配置、表结构设计、SQL语句及索引。 那优化的成本和效果分别如下&#xff1a; 优化成本&#xff1a;硬件升级>系统配置>表结构设计>SQL语句及索引。 优化效果&#xff1a;…

golang的map是不是并发安全的?怎么保证安全?

参考链接 https://www.iamshuaidi.com/23354.html map 并不是并发安全的 map是引用类型&#xff0c;如果两个map同时指向一个底层&#xff0c;那么一个map的变动会影响到另一个map。 map 的并发不安全主要是因为缺乏内置的锁机制和原子操作&#xff0c;并且在扩容过程中可能会…

Linux环境安装ffmpeg6.x

1.官网ffmpeg下载源码 https://ffmpeg.org/download.html#build-windows 2.未安装x264库则先安装配置 可以先查询x264库: whereis libx264 安装编译工具和依赖库&#xff1a; sudo yum install gcc make cmake mercurial git yasm pkgconfig autoconf automake libtool sudo…

RabbitMQ 面试八股题整理

前言&#xff1a;本文是博主网络自行收集的一些RabbitMQ相关八股文&#xff0c;还在准备暑期实习&#xff0c;后续应该会持续更新...... 参考&#xff1a;三天吃透RabbitMQ面试八股文_牛客网 目录 RabbitMQ概述 什么是 RabbitMQ&#xff1f; 说一说RabbitMQ中的AMQP 为什么…

zabbix监控业务数据

前言 监控系统除了监控os和数据库性能相关的指标外&#xff0c;业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会&#xff0c;每天需要向甲方或者公司反馈现场的数据情况&#xff0c;正常情况下一天巡检两次&#xff0c;早上上班后和下午下班前各一次。监控项目…

【C语言】指针初阶

正文开始之前&#xff0c;我们要记住一个东西就是&#xff1a;地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

数据结构:链表的冒泡排序

法一&#xff1a;修改指针指向 //法二 void maopao_link(link_p H){if(HNULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tailNULL;while(H->next->next!tail){link_p pH;link_p qH->next;while(q…

mysql的隔离级别,和实现

参考链接 https://xiaolincoding.com/mysql/transaction/mvcc.html#%E4%BA%8B%E5%8A%A1%E7%9A%84%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB%E6%9C%89%E5%93%AA%E4%BA%9B 事务特性&#xff08;ACID&#xff09; 原子性&#xff08;Atomicity&#xff09;&#xff1a; 事务是原子的&…

CUDA C:核函数、主机函数、设备函数

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 核函数(Kernel Function)指的是在主机(CPU)调用&#xff08;某些情况下也可以在设备调用&#xff09;&#xff0c;在设备(GPU)上执行的函数&#xff0c;使用__global__…

YOLOv8改进 | Conv篇 | 全新的SOATA轻量化下采样操作ADown(参数量下降百分之二十,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的YOLOv8的项目,经过实验我发现该卷积模块(作为下采样模块)…

CentOS 6.5安装配置SVN服务器

​项目要用SVN来管理&#xff0c;所以需要给服务器安装SVN服务器端。 这里仅使用svn://协议来访问SVN服务器&#xff0c;不启用sasl。 客户端系统都是Windows&#xff0c;使用起来很简单&#xff0c;这里就不用说了。 本文仅针对1.6.11版本。在1.7.14版本上测试时&#xff0c;…