2026/2/18 1:30:35
网站建设
项目流程
正能量不良网站软件下载,seo优化资源,怎么自己做一个网站,网站短链接怎么做的PCI9x5x驱动移植支持PCI9054在win7下使用4
接上文#xff0c;本文章继续记录中泰联创的数据采集卡驱动翻新过程。
添加软件FIFO
还是先让Qoder写代码“参考sys目录下的SFIFO.cpp#xff0c;在zt9054/sys目录下生成C语音的头文件和c文件#xff0c;sfifo定义成一个结构本文章继续记录中泰联创的数据采集卡驱动翻新过程。添加软件FIFO还是先让Qoder写代码“参考sys目录下的SFIFO.cpp在zt9054/sys目录下生成C语音的头文件和c文件sfifo定义成一个结构使用函数操作只需要加批量读和批量写函数就可以还要考虑可以用在DMA传输中以及读写同步的问题。”Qoder很快就完成了任务并且报告如下Qoder生成报告现在我已经完成了您要求的任务实现了以下功能创建了C语言版本的SFIFO头文件(SFifo.h)其中包含SFE和SFIFO结构体定义批量读写函数声明DMA相关函数声明同步机制自旋锁和事件创建了C语言版本的SFIFO实现文件(SFifo.c)其中包含完整的批量读写功能实现同步机制使用自旋锁和内核事件DMA支持功能内存管理和错误处理创建了测试文件(TestSFifo.c)来验证基本功能这个实现具有以下特点使用C语言重写了原有的C CSFifo类转换为C风格的结构体和函数添加了适当的同步机制包括自旋锁和内核事件确保在多线程环境下安全操作支持DMA传输提供了专门的DMA准备和完成函数保持了原有功能包括批量读写、循环读取、清空等功能符合Windows内核驱动开发的标准使用了正确的内存分配和同步原语该实现适用于PCI设备驱动程序特别是用于PLX系列桥接芯片的SFIFO功能支持高效的数据传输和同步操作。Qoder解决生成错误编译有很多错误1zt9054\sys\sys\sfifo.c : error C2220: 警告被视为错误 - 没有生成“object”文件 1tk3000\zt9054\sys\sys\sfifo.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1tk3000\zt9054\sys\sys\sfifo.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 1tk3000\zt9054\sys\sys\sfifo.c(98): warning C4189: “originalNeedWriteTotal”: 局部变量已初始化但不引用 1tk3000\zt9054\sys\sys\sfifo.c(515): warning C4996: ExAllocatePool: 被声明为已否决 1c:\program files (x86)\windows kits\10\include\10.0.17763.0\km\wdm.h(22759): note: 参见“ExAllocatePool”的声明 ......粘贴给Qoder让它解决Qoder解决编码错误的方法就是将所有中文字符变成英文经过几次反复消除了所有错误可以正常编译了。将软件FIFO应用在中断和DMA中继续给Qoder下达指令使用新生成的SFIFO参照sys目录下的流程完善zt9054/sys/目录下的中断和DMA处理代码Qoder很快生成了代码然后还是有一些编译问题粘贴过去后也很快就解决了。Qoder写的总结总结1. 创建AD模块 ✅AD.h: 定义了AD模块结构和函数接口AD.c: 实现了完整的AD数据采集功能ADInitialize: 初始化AD模块和SFIFOADInitDma: 配置PLX 9054 DMA寄存器ADIsr: 硬件FIFO半满中断处理启动DMA传输ADDmaIsr: DMA完成中断处理将数据写入SFIFOADReadBulk: 从SFIFO读取数据其他辅助函数2. 修改设备扩展 ✅在Private.h中添加了AD_MODULE成员和驱动变量数组为设备扩展添加了AD模块支持3. 集成初始化流程 ✅在Init.c中添加了AD模块初始化调用添加了AD DMA初始化在清理函数中添加了AD模块销毁4. 完善中断处理 ✅在IsrDpc.c中ISR中添加了DMA通道0中断处理AD DMA完成添加了本地中断处理FPGA FIFO半满添加了报警和保护中断处理DPC中添加了事件信号机制5. 添加IOCTL接口 ✅在Control.c中添加了4个新的IOCTL处理函数PCI8KPLX_IOCTL_AD_READ_BULK: 批量读取AD数据PCI8KPLX_IOCTL_AD_GET_DATACOUNT: 获取SFIFO数据量PCI8KPLX_IOCTL_AD_CLEAR_FIFO: 清空SFIFOPCI8KPLX_IOCTL_AD_GET_SFIFO_INFO: 获取SFIFO信息在Public.h中添加了IOCTL定义6. 更新项目文件 ✅在Pci9x5x.vcxproj中添加了AD.c的编译配置7. 包含必要的头文件 ✅在Precomp.h中添加了drvvar.h和AD.h的包含核心功能实现DMA数据采集流程硬件FIFO半满→ 触发本地中断 →ADIsr启动DMA传输DMA完成→ 触发DMA通道0中断 →ADDmaIsr将数据写入SFIFO数据量达到阈值→ 触发DPC → 信号事件通知应用层应用层读取→ 通过PCI8KPLX_IOCTL_AD_READ_BULKIOCTL读取数据关键特性使用新生成的C语言版SFIFO进行数据缓冲m_SFEdataSize设置为DMA传输单元大小HFIFO_HALF_SIZE * 4字节支持整块写入无需考虑数据衔接问题完整的同步机制自旋锁和事件符合Windows内核驱动编码规范无中文注释使用推荐的内存分配函数编译说明要编译项目请在Visual Studio中打开解决方案d:\mypro\work\projects\091023TK3000\software\git\tk3000\zt9054\sys\zt9054.sln或使用命令行需要配置Developer Command Prompt for VS/* by 01130.hk - online tools website : 01130.hk/zh/imagetogif.html */ msbuild d:\mypro\work\projects\091023TK3000\software\git\tk3000\zt9054\sys\sys\Pci9x5x.vcxproj /p:ConfigurationDebug /p:Platformx64所有代码已经完成参照sys目录下的流程完整实现了zt9054的中断和DMA处理功能解决 warning 1324 问题编译报告下面的错误warning 1324: [Version] section should specify PnpLockdown1问豆包回答如下你遇到的这个警告是 Windows 驱动开发工具WDK在编译 PCI9054 驱动的 INF/INX 文件时抛出的核心意思是你的驱动安装脚本pci9x5x.inx的 [Version] 段缺少PnpLockdown1这个关键配置项系统建议你补充该配置以符合 Windows 7 及以上系统的即插即用PnP安全规范。详细解释警告含义拆解[Version] section驱动安装文件INF/INX的核心段用于声明驱动版本、兼容系统、签名级别等关键信息PnpLockdown1是 Windows Vista 及以后系统引入的 PnP 安全锁配置项作用是限制驱动对硬件资源如 IO 端口、内存映射的无权限访问强制驱动通过系统正规接口如 WDF/WDM 的资源分配函数获取硬件资源提升驱动的安全性和稳定性避免驱动直接操作硬件导致系统崩溃或安全漏洞warning 1324这是 WDK 的编译警告非错误不影响驱动编译和基本运行但不符合微软的驱动开发最佳实践在严格的签名 / 认证场景下可能被拒绝。为什么 Windows 7 需要这个配置Windows 7 作为 Vista 的后续版本继承了 PnP 安全锁机制虽然缺少PnpLockdown1驱动仍能加载但会触发系统兼容性警告且在 64 位系统开启驱动强制签名后可能影响驱动的正常安装。解决方法直接修改 inx 文件找到pci9x5x.inx文件的[Version]段添加PnpLockdown1即可示例如下/* by 01130.hk - online tools website : 01130.hk/zh/imagetogif.html */ [Version] Signature$Windows NT$ ClassPCI ClassGuid{4d36e97d-e325-11ce-bfc1-08002be10318} Provider%ManufacturerName% DriverVer01/23/2026,1.0.0.0 ; 你的驱动版本和日期 CatalogFilepci9x5x.cat ; 可选签名用的目录文件 PnpLockdown1 ; 新增这一行解决警告1324验证方式修改后重新编译驱动警告 1324 会消失驱动在 Windows 7 上安装 / 加载时无 PnP 相关的系统日志警告驱动对 FPGA 寄存器的读写你之前移植的 BAR_READ/BAR_WRITE不受影响因为 WDF 框架已自动处理资源权限。总结警告 1324 是 WDK 提醒驱动缺少 PnP 安全锁配置非致命错误但建议修复解决核心是在[Version]段添加PnpLockdown1符合 Windows 7 的安全规范该配置不影响你之前移植的寄存器读写、AD 采集等功能仅提升驱动的系统兼容性。