在进行 SPI 开发之前,需要确保 Linux 内核已经正确配置了 SPI 子系统支持以及相关的控制器驱动。对于 RK3566 平台,通常 SDK 默认配置已经包含了大部分通用功能。
1. 核心层配置
进入内核配置菜单 (make menuconfig),确保 SPI 支持已开启。
config
Device Drivers --->
[*] SPI support --->1
2
2
在该菜单下,有几个关键选项:
*** SPI Master Controller Drivers ***:SPI 控制器驱动列表。*** SPI Protocol Masters ***:一些通用的 SPI 协议驱动。
2. Rockchip SPI 控制器驱动
确保选中了 Rockchip 的 SPI 控制器驱动。RK3566 使用的是 DesignWare SPI 接口变体或 Rockchip 自定义的 SPI 控制器。
config
Device Drivers --->
[*] SPI support --->
<*> Rockchip SPI controller1
2
3
2
3
或者在某些内核版本中可能是:
config
<*> DesignWare SPI controller core support
<*> Rockchip SPI controller for DesignWare1
2
2
(具体选项名称视内核版本而定,通常搜索 "ROCKCHIP" 和 "SPI" 即可找到)
3. spidev 用户空间驱动
如果需要在应用层直接通过 /dev/spidevX.Y 节点操作 SPI 设备(常用于测试或简单的外设控制),需要开启 User mode SPI device driver support。
config
Device Drivers --->
[*] SPI support --->
<*> User mode SPI device driver support1
2
3
2
3
开启后,内核会编译 spidev.ko 模块(如果选为 <M>)或直接编入内核(如果选为 <*>)。
4. 调试支持
在调试阶段,可以开启 SPI 的调试选项,以便在 dmesg 中查看更多日志信息。
config
Device Drivers --->
[*] SPI support --->
[*] Debug support for SPI drivers1
2
3
2
3
注意:开启调试会产生大量日志,可能会影响系统性能和 SPI 通信时序,生产环境建议关闭。
5. 检查当前配置
如果想检查当前运行的内核是否支持 SPI,可以查看 /sys/bus/spi 目录,或者查看内核启动日志:
bash
# 查看 SPI 总线
ls /sys/bus/spi/devices/
# 查看启动日志中关于 SPI 的信息
dmesg | grep -i spi1
2
3
4
5
2
3
4
5
如果看到类似 rockchip-spi 或 spi_master 的初始化信息,说明驱动已加载。