7.9.4. 测试指南

7.9.4.1. 调试开关

ZX-RTT 中实现了一个 qspidev 的测试工具,可以用于测试 QSPI Device 的读写访问。 编译使能配置如下。

在 SDK 根目录下执行:

scons --menuconfig

配置界面:

Drivers options  --->
    Drivers examples  --->
        [*] Enable QSPI driver test command

7.9.4.2. 使用方法

首先在板子上运行 ZX-RTT。

7.9.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

从中可看到, spinand0SPI Device

7.9.4.2.2. 步骤2:获取帮助信息

执行命令:

qspidev help

7.9.4.2.3. 步骤3:初始化 QSPI 设备

执行命令:

qspidev init <name> <mode> <freq>

例如:

qspidev init spinand0 3 50000000

7.9.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 数据读取。