news 2026/8/13 8:19:36

pcie收发数据.使用用户空间io. uIO

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pcie收发数据.使用用户空间io. uIO
// pcie_send_recv.c pcie收发数据.//使用用户空间io. uIO #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> #define BAR_SIZE (1024 * 1024) // 1MB,根据设备调整,每次存1mb数据. int main() { int fd = open("/dev/uio0", O_RDWR); // 假设设备是 uio0 if (fd < 0) { perror("open /dev/uio0"); exit(EXIT_FAILURE); } //设备映射到一个内存地址. fd是这个设备. 返回的bar是指向映射区域的指针,后续通过它访问硬件寄存器 void *bar = mmap(NULL, BAR_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (bar == MAP_FAILED ) { perror("mmap"); close(fd); exit(EXIT_FAILURE); } //用于声明变量可能被程序外部因素意外修改,强制编译器每次直接从内存地址读取最新值,而非使用寄存器中的缓存值。其核心机制是防止编译器优化误判,确保对硬件映射寄存器、多线程共享变量等易变数据的访问准确性。在嵌入式开发中,volatile还被用于处理中断服务程序或外部硬件触发的变量修改,确保程序响应实时状态变化。 volatile uint32_t *reg = (volatile uint32_t *)bar; // 模拟:向设备寄存器写入数据("发送") printf("Sending data to PCIe device...\n"); reg[0] = 0x12345678; // 写入控制寄存器或数据缓冲区 reg[1] = 0xABCDEF00; // 写入更多数据 // 模拟:从设备寄存器读取数据("接收") printf("Receiving data from PCIe device...\n"); uint32_t recv0 = reg[2]; uint32_t recv1 = reg[3]; printf("Received: 0x%08x, 0x%08x\n", recv0, recv1); munmap(bar, BAR_SIZE); close(fd); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 4:07:34

wvp-GB28181-pro视频监控平台:5大核心功能解析与实战部署指南

wvp-GB28181-pro视频监控平台&#xff1a;5大核心功能解析与实战部署指南 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro wvp-GB28181-pro是一款基于GB/T 28181-2016标准的开源视频监控平台&#xff0c;支持海康…

作者头像 李华
网站建设 2026/8/4 13:34:01

Dify平台如何实现生成内容指纹标记?防伪溯源机制

Dify平台如何实现生成内容指纹标记&#xff1f;防伪溯源机制 在AI生成内容&#xff08;AIGC&#xff09;爆发式增长的今天&#xff0c;一条由大模型写就的新闻稿、一份自动生成的合同草案、一段客服对话回复&#xff0c;可能已经悄然改变了企业的运营方式。然而&#xff0c;随之…

作者头像 李华
网站建设 2026/7/31 4:07:35

漫画阅读器Venera:解决您漫画阅读中的五大痛点

漫画阅读器Venera&#xff1a;解决您漫画阅读中的五大痛点 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 还在为漫画阅读的各种不便而烦恼吗&#xff1f;Venera漫画阅读器正是为您量身打造的解决方案。这款全平台开源漫画阅…

作者头像 李华
网站建设 2026/8/7 11:07:21

Windows 11系统清理指南:25个必须保留的核心组件与安全优化策略

Windows 11系统清理指南&#xff1a;25个必须保留的核心组件与安全优化策略 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改…

作者头像 李华
网站建设 2026/8/11 1:42:37

OBS-NDI插件终极修复指南:快速解决NDI Runtime缺失问题

OBS-NDI插件终极修复指南&#xff1a;快速解决NDI Runtime缺失问题 【免费下载链接】obs-ndi NewTek NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 当您在OBS Studio中准备使用NDI功能进行专业直播时&#xff0c;遇到"NDI…

作者头像 李华
网站建设 2026/8/11 18:11:33

AlistHelper:简单高效的Alist桌面管理终极解决方案

AlistHelper是一款基于Flutter框架开发的跨平台桌面应用程序&#xff0c;专门为alist用户提供直观便捷的管理体验。无论您是技术新手还是资深用户&#xff0c;这款工具都能让您轻松掌握alist的启动、配置和日常维护&#xff0c;彻底告别复杂的命令行操作。 【免费下载链接】ali…

作者头像 李华