7.8.4. 测试指南
7.8.4.1. 调试开关
ZX-RTT 中实现了一个 qspidev 的测试工具,可以用于测试 QSPI Device 的读写访问。 编译使能配置如下。
在 SDK 根目录下执行:
scons --menuconfig
配置界面:
Drivers options --->
Drivers examples --->
[*] Enable QSPI driver test command
7.8.4.2. 使用方法
首先在板子上运行 ZX-RTT。
7.8.4.2.1. 步骤1:找到 QSPI 设备
在串口控制台执行命令:
list_device
查看当前的系统she设备,可得到类似如下列表:
aic /> list_device
device type ref count
-------- -------------------- ----------
gt911 Touch Device 1
wdt WDT Device 0
temp_aic Sensor Device 0
rootfs MTD Device 0
os MTD Device 0
spl MTD Device 0
spinand0 SPI Device 0
mtop Character Device 0
aicfb Graphic Device 0
hwcryto Security Device 0
record Pipe 0
dmic0 Sound Device 0
sound0 Sound Device 0
uart1 Character Device 0
uart0 Character Device 2
rtc RTC 0
qspi0 SPI Bus 0
i2c3 I2C Bus 1
pin Pin Device 0
gpai ADC Device 0
从中可看到, spinand0
为 SPI Device
。
7.8.4.2.2. 步骤2:获取帮助信息
执行命令:
qspidev help
7.8.4.2.3. 步骤3:初始化 QSPI 设备
执行命令:
qspidev init <name> <mode> <freq>
例如:
qspidev init spinand0 3 50000000
7.8.4.2.4. 步骤4:QSPI 收发测试
仅发送命令和数据,例如使用:
qspidev sendhex <lines> <cmd> <addr> <dummy_cnt> <data hex string>
参数:
lines: 用于表示
命令
地址
和数据
分别使用多少线宽进行收发, 例如:111
表示都使用1线进行收发,144
表示命令使用1线,地址和数据使用4线(QIO模式)cmd: 16进制的命令数据,比如 6b
addr: 16进制的地址数据,比如 000000,表示24位的地址0。如果没有地址,使用
-
表示dummy_cnt: Dummy cycle count,表示使用的 dummy clock cycle 个数。如果没有 dummy,使用
-
表示data: 16进制的数据,比如
41 42 43 44 45 a1 a2 a3 a4
示例:
qspidev sendhex 111 ff
上面是发送 Reset 命令。
发送命令并读取数据,例如使用:
qspidev recvhex <lines> <cmd> <addr> <dummy_cnt> <data length>
参数:
lines: 用于表示
命令
地址
和数据
分别使用多少线宽进行收发, 例如:111
表示都使用1线进行收发,144
表示命令使用1线,地址和数据使用4线(QIO模式)cmd: 16进制的命令数据,比如 6b
addr: 16进制的地址数据,比如 000000,表示24位的地址0。如果没有地址,使用
-
表示dummy_cnt: Dummy cycle count,表示使用的 dummy clock cycle 个数。如果没有 dummy,使用
-
表示data_length: 要接收的数据长度。数据接收后,直接打印到控制台。
示例:
qspidev sendhex 111 13 000000
qspidev recvhex 111 03 000000 0 0x800
上述命令进行了一个 SPINAND 的 PAGE 数据读取。