Edit online

测试指南

  1. 调试开关。

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

    在 SDK 根目录下执行:

    scons--menuconfig

    配置界面:

    Drivers options  --->
        Drivers examples  --->
            [*] Enable QSPI driver test command
    
  2. 在板子上运行 Luban-Lite。
  3. 找到 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

  4. 执行命令获取帮助信息:
    qspidev help
  5. 执行命令初始化 QSPI 设备:
    qspidev init name mode freq
    例如:
    qspidev init spinand0 3 50000000
  6. 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 数据读取。