news 2026/3/22 20:58:04

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/3/15 18:49:51

城市级智能交通中的自动驾驶测试:从零实现流程

城市级智能交通中的自动驾驶测试&#xff1a;从零构建可落地的全链路验证体系你有没有想过&#xff0c;一辆自动驾驶汽车在真正上路前&#xff0c;其实已经“跑”了百万公里&#xff1f;这并不是科幻。在真实城市街头看到的每一次平稳变道、礼让行人或绿灯畅行的背后&#xff0…

作者头像 李华
网站建设 2026/3/18 20:51:31

群晖NAS终极USB网卡驱动安装指南:快速扩展网络性能

群晖NAS终极USB网卡驱动安装指南&#xff1a;快速扩展网络性能 【免费下载链接】r8152 Synology DSM driver for Realtek RTL8152/RTL8153/RTL8156 based adapters 项目地址: https://gitcode.com/gh_mirrors/r8/r8152 想要为群晖NAS添加高速网络接口却不知从何入手&…

作者头像 李华
网站建设 2026/3/15 13:14:28

终极指南:Splatoon FFXIV导航插件完整使用教程

终极指南&#xff1a;Splatoon FFXIV导航插件完整使用教程 【免费下载链接】Splatoon Redefining FFXIV navigation with unlimited, precise waymarks. 项目地址: https://gitcode.com/gh_mirrors/spl/Splatoon Splatoon是《最终幻想14》中革命性的导航辅助工具&#x…

作者头像 李华
网站建设 2026/3/17 6:55:16

手把手教你理解RS485和RS232通信协议基础

从调试口到工业总线&#xff1a;真正搞懂RS485与RS232的实战差异你有没有遇到过这种情况&#xff1f;在实验室里&#xff0c;开发板串口打印一切正常&#xff1b;可一旦把设备拉到工厂现场&#xff0c;接上几十米长的线缆&#xff0c;数据就开始乱码、丢包&#xff0c;甚至通信…

作者头像 李华
网站建设 2026/3/22 15:04:39

Background-Removal-JS终极指南:如何在浏览器端实现专业级智能抠图

Background-Removal-JS终极指南&#xff1a;如何在浏览器端实现专业级智能抠图 【免费下载链接】background-removal-js background-removal-js - 一个 npm 包&#xff0c;允许开发者直接在浏览器或 Node.js 环境中轻松移除图像背景&#xff0c;无需额外成本或隐私担忧。 项目…

作者头像 李华
网站建设 2026/3/15 12:59:53

终极算子学习指南:如何用DeepONet FNO轻松求解偏微分方程

终极算子学习指南&#xff1a;如何用DeepONet & FNO轻松求解偏微分方程 【免费下载链接】deeponet-fno DeepONet & FNO (with practical extensions) 项目地址: https://gitcode.com/gh_mirrors/de/deeponet-fno DeepONet & FNO是一个基于神经网络的算子学习…

作者头像 李华