Edit online

测试指南

3 Dec 2024
Read time: 3 minute(s)

调试开关

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

在 SDK 根目录下执行 scons --menuconfig 命令,进入配置界面,按如下选择:

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

使用方法

在板子上运行 Luban-Lite

  1. 在串口控制台执行下列命令找到 QSPI 设备
    list_device
    系统设备列表示例如下,其中 spinand0SPI 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
  2. 执行下列命令获取帮助信息
    qspidev help
  3. 执行下列命令初始化 QSPI 设备
    qspidev init <name> <mode> <freq>

    例如:

    qspidev init spinand0 3 50000000
  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 进制的数据,比如 4142434445a1a2a3a4

    • 发送 Reset 命令:
      qspidev sendhex 111 ff
    • 发送命令并读取数据:
      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: 要接收的数据长度。数据接收后,直接打印到控制台。

      例如,进行一个 SPINAND 的 PAGE 数据读取:
      qspidev sendhex 111 13 000000
      qspidev recvhex 111 03 000000 0 0x800