Linux 应用第 10-12 节 GPIO 编程/寄存器读写/以太网RJ45,选自ALINX 黑金云课堂 FPGA 免费直播课。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。
🔍 ALINX:关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。
GPIO —— General Purpose Input/Output 通用输入输出
区别于串口、SPI、IIC这些专用引脚,没有内置传输协议
数字信号只有高电平(1)、低电平(0)两种状态


/sys/class/gpio/ 的 export/direction/value 节点操作,已标记为 deprecatedgpiodetect、gpioset、gpioget、gpioinfo 等命令,是推荐的新一代接口gpiod_chip、gpiod_line 等结构体编程(gpio_libgpiod_demo.c,编译需链接 -lgpiod)/dev/mem 设备文件和 mmap() 将物理地址映射到用户空间虚拟地址O_SYNC
💡原理具体讲解可前往 ALINX 视频号进行直播回看。
—— 更加方便
仅在调试阶段使用 操作时务必确认地址和值的正确性!!!
快速读写物理寄存器,适合硬件调试
devmem ADDRESS [WIDTH [VALUE]]
ADDRESS—物理地址;
WIDTH—访问宽度:8/16/32/64/128 位,默认32位;
VALUE—要写入的值,省略则执行读取
devmem 0xFF0A0248 # 读取寄存器32位devmem 0xFF0A0248 8 # 读取8位寄存器devmem 0xFF0A0248 32 0x00004820 # 向寄存器写入32位值open(/dev/mem) → 计算页对齐地址 → mmap 映射 → volatile 指针读写 → munmap 释放volatile 防止编译器优化、O_SYNC 保证直写硬件、完善的错误处理
ifconfig/ip addr 配置 IP、route/ip route 配置网关、ethtool 查看链路状态、ping 测试连通性iperf3 -siperf3 -c <IP> -t 30socket → bind → listen → accept → recv/send → closesocket → connect → send/recv → closesendto/recvfrom,无需连接sockaddr_in、htons、inet_pton、inet_ntop更多细节欢迎关注我们黑金云课堂全年免费直播课,黑金云课堂五月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

