spidev_test 是 Linux 内核源码中提供的一个用于测试 SPI 接口的用户空间工具。它可以用来验证 spidev 驱动是否工作正常,以及测试 SPI 总线的读写功能、回环测试等。
1. 获取源码
该工具的源码位于 Linux 内核源码树的 tools/spi/ 目录下。
bash
# 假设你在内核源码根目录
cd tools/spi/
ls spidev_test.c1
2
3
2
3
如果你的开发板文件系统中没有这个工具,可以从内核源码交叉编译得到。
2. 交叉编译
使用与编译内核相同的交叉编译器。
bash
# 设置交叉编译器环境变量 (根据实际情况修改)
export CROSS_COMPILE=aarch64-linux-gnu-
# 编译
$CROSS_COMPILEgcc -o spidev_test spidev_test.c1
2
3
4
5
2
3
4
5
编译完成后,将生成的 spidev_test 可执行文件拷贝到开发板上(例如通过 ADB、SCP 或挂载 SD 卡)。
3. 使用方法
在开发板终端运行 spidev_test --help 可以查看支持的参数:
bash
./spidev_test --help
usage: spidev_test [options]...
-D --device device to use (default /dev/spidev1.1)
-s --speed max speed (Hz)
-d --delay delay (usec)
-b --bpw bits per word
-i --input input data from a file (e.g. "test.bin")
-o --output output data to a file (e.g. "results.bin")
-l --loop loopback mode
-H --cpha clock phase
-O --cpol clock polarity
-L --lsb least significant bit first
-C --cs-high chip select active high
-3 --3wire SI/SO signals shared
-v --verbose Verbose (show tx buffer)
-p Send data (e.g. "1234\xde\xad")
-N --no-cs no chip select
-R --ready slave pulls low to pause
-2 --dual dual transfer
-4 --quad quad transfer1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4. 常用测试场景
4.1 回环测试 (Loopback Test)
这是最常用的测试方法。将 SPI 的 MOSI (发送) 和 MISO (接收) 引脚短接。
运行测试命令:
bash
# -D 指定设备节点,-v 显示详细数据
./spidev_test -D /dev/spidev0.0 -v1
2
2
预期输出: 发送的数据(TX)和接收的数据(RX)应该完全一致。
plaintext
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF | ......@.........
RX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF | ......@.........1
2
3
4
5
2
3
4
5
如果 RX 全是 00 或 FF(且与 TX 不符),说明通信失败,请检查:
- 引脚是否短接正确。
- 设备树配置是否正确(引脚复用)。
- SPI 控制器是否启用。
4.2 设置速率和模式
测试以 10MHz 频率,SPI Mode 0 传输:
bash
./spidev_test -D /dev/spidev0.0 -s 10000000 -H 0 -O 0 -v1
4.3 发送特定数据
bash
# 发送十六进制数据
./spidev_test -D /dev/spidev0.0 -p "\x01\x02\x03\x04" -v1
2
2
5. 常见问题
无法打开设备:
- 检查
/dev/spidevX.Y是否存在。 - 检查是否有权限(需要 root 或加入相关组)。
- 检查内核配置是否开启了
User mode SPI device driver support。
- 检查
数据不正确:
- 检查接线。
- 检查 SPI 模式(CPOL/CPHA)是否与从设备匹配。
- 检查速率是否过高,超过了线路或从设备的支持范围。
找不到设备节点:
- 检查设备树中是否添加了
spidev节点,并且状态为okay。 - 检查
compatible属性是否匹配驱动。
- 检查设备树中是否添加了