You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux内核SPI Bitbang驱动使用求助:无/dev设备节点问题

内核级GPIO模拟SPI驱动设备树配置分步指南

1. 定位设备树源文件

  • 依据路由器CPU架构,找到对应内核源码目录下的设备树文件:
    • ARM架构通常在arch/arm/boot/dts/
    • OpenWRT环境则在target/linux/[你的芯片架构]/dts/
  • 找到与你的路由器型号匹配的.dts或.dtsi文件,比如xxx-router.dts

2. 添加GPIO模拟SPI控制器节点

打开目标设备树文件,在根节点(/)或GPIO相关父节点下插入以下节点,注意替换引脚参数为你的实际硬件连接:

spi_gpio: spi@0 {
    compatible = "spi-gpio";
    #address-cells = <1>;
    #size-cells = <0>;
    gpio-sck = <&gpio 18 0>;  /* 替换为你的SCK引脚编号,末尾0表示默认低电平 */
    gpio-mosi = <&gpio 23 0>; /* 替换为你的MOSI引脚编号 */
    /* ST7735无需MISO,可直接删除下面这行 */
    // gpio-miso = <&gpio 25 0>;
    cs-gpios = <&gpio 24 1>;  /* 片选引脚,末尾1表示默认高电平(无效状态) */
    spi-max-frequency = <16000000>; /* 初始设为16MHz,可根据硬件调整至ST7735支持的上限 */
    status = "okay";
};

注意:compatible字段必须与你自定义驱动spidriv.c中of_match_table里的字符串完全一致,若你修改过驱动的兼容字符串,需同步调整此处。

3. 添加ST7735显示屏子节点

在上述spi_gpio节点内部,添加显示屏的设备描述节点:

display@0 {
    compatible = "sitronix,st7735r";
    reg = <0>; /* 对应片选引脚的编号,此处为第0个片选 */
    spi-max-frequency = <16000000>;
    dc-gpios = <&gpio 22 0>; /* 替换为你的数据/命令(D/C)引脚编号 */
    reset-gpios = <&gpio 21 0>; /* 复位引脚,若无则可删除此行 */
    rotate = <0>; /* 屏幕旋转角度:0/90/180/270,按需调整 */
    status = "okay";
};

4. 编译设备树

  • 原生内核环境编译(替换交叉编译工具链前缀):
make ARCH=arm dtbs CROSS_COMPILE=arm-linux-gnueabihf-
  • OpenWRT环境编译(替换架构和设备型号):
make target/linux/[你的芯片架构]/compile CONFIG_TARGET_DEVICE=[你的路由器型号]

编译完成后,新生成的.dtb文件会存放在对应架构的dts输出目录下。

5. 更新设备树并重启

  • 将编译好的.dtb文件替换路由器/boot/目录下的原有设备树文件(比如/boot/xxx.dtb)
  • 重启路由器,确保新设备树生效

6. 加载驱动并验证

  • 加载依赖模块:modprobe spi-bitbang
  • 加载自定义驱动:insmod spidriv.ko
  • 验证设备节点:
    • 查看SPI控制器节点:ls /sys/class/spi_master/,应出现spi0或对应编号的节点
    • 查看用户态设备:ls /dev/spidev*,应出现spidev0.0
  • 查看驱动匹配日志:dmesg | grep spi,若出现spi-gpio spi@0: probed类信息,说明匹配成功

关键注意事项

  • 引脚编号必须与路由器SOC的GPIO定义一致,部分SOC采用“组+偏移”的编号方式,需参考硬件手册或现有设备树的引脚定义
  • 若无需MISO引脚,必须删除gpio-miso属性,否则驱动会因引脚缺失初始化失败
  • 时钟频率不要超过ST7735的硬件上限(最大60MHz),避免出现显示异常或稳定性问题

内容的提问来源于stack exchange,提问作者Jeremiah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:43:13