news 2026/5/4 6:49: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/5/3 16:30:06

UE4SS终极指南:如何彻底解决DLL劫持问题

UE4SS终极指南&#xff1a;如何彻底解决DLL劫持问题 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS 你是否遇到…

作者头像 李华
网站建设 2026/5/1 19:53:17

BilibiliDown技术架构深度解析:跨平台视频下载实现原理

BilibiliDown技术架构深度解析&#xff1a;跨平台视频下载实现原理 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/5/2 12:32:27

NTC热敏电阻作为模拟温度传感器通俗解释

从零搞懂NTC热敏电阻&#xff1a;不只是“电阻随温度变”那么简单你有没有想过&#xff0c;一个看起来平平无奇的小电阻&#xff0c;是怎么知道周围是冷还是热的&#xff1f;在电饭煲、充电器、智能手环甚至汽车电池包里&#xff0c;藏着一种叫NTC热敏电阻的小元件&#xff0c;…

作者头像 李华
网站建设 2026/5/2 18:07:41

USB3.1传输速度与USB3.0对比:零基础也能懂

USB3.1传输速度为何能甩开USB3.0一整条街&#xff1f;一次讲透&#xff0c;小白也能懂&#xff01;你有没有过这样的经历&#xff1a;插上一个号称“高速”的移动固态硬盘&#xff0c;结果拷贝一部4K电影要等快一分钟&#xff1f;明明标着“USB3.0”&#xff0c;怎么比想象中慢…

作者头像 李华
网站建设 2026/4/25 20:08:23

5分钟从零掌握DdddOcr:让验证码识别不再是技术难题

5分钟从零掌握DdddOcr&#xff1a;让验证码识别不再是技术难题 【免费下载链接】ddddocr 带带弟弟 通用验证码识别OCR pypi版 项目地址: https://gitcode.com/gh_mirrors/dd/ddddocr 还在为复杂的验证码识别而头疼吗&#xff1f;DdddOcr作为一款完全离线的通用验证码识别…

作者头像 李华
网站建设 2026/4/25 11:33:35

当你的OMEN游戏本开始“耍脾气“,这款神器让它重获新生

你的OMEN游戏本是不是经常在关键时刻"掉链子"&#xff1f;游戏激战正酣时突然卡顿&#xff0c;视频渲染到一半就风扇狂转&#xff0c;在图书馆里用个Word都能让隔壁桌侧目……这些困扰过我的问题&#xff0c;终于在一款名为OmenSuperHub的工具面前迎刃而解。 【免费下…

作者头像 李华