Edit online

测试指南

4 Dec 2024
Read time: 10 minute(s)

测试环境

  • 硬件
    • 开发板,或者 FPGA 板子

    • 板子上必须要接有 SPINAND

  • 软件
    • PC 端的串口终端软件,用于 PC 和开发板进行串口通信

    • RT-Thread DFS 组件自带了一些命令的文件操作工具,如 cp、mkdir 等

编译烧录

配置完成后,保存退出,编译、烧录

验证

  • SPINAND 识别
    烧录完成后,断开电源并上电,使用下列命令检查设备:
    list_device
    在输出结果中,看到 spinand0 设备,表明系统已识别 SPINAND:
    device           type         ref count
    -------- -------------------- ----------
    ...
    spinand0         SPI Device           0
    ...
    注:

    若使用手动挂载,则在此时执行 mount blk_rodata /rodata elmmount data /data uffs

  • 查看文件
    1. 进入 rodata 目录:
      cd sd
      cd rodata
    2. 使用下列命令查看文件:
      ls
      
      Directory /rodata:
      lvgl_data           <DIR>

    至此, SPINAND 挂载完成。

  • Baremetal 相关命令使用方法

    Baremetal 和 Bootloader 中实现了 spinandmtd 命令测试工具,具体用法相同。使用前,需要在板子上运行 Luban-Lite Baremetal 程序。

    • 查看相关命令
      在串口控制台执行命令 help 查看当前系统命令
      aic # help
      Command list:  help                 Show all commands.
      history              Show history.
      md                   Memory display
      mtd                  MTD R/W command.
      mw                   Memory write
      nid                  Display NAND manu ID. need init first
      reboot               Reboot device.
      reset                Reboot device.
      spinand              SPI NAND flash R/W command.

      从中可看到, spinandmtd 命令工具。spinand 层之上的一层为 mtd 层, spinand 命令可以查看 spinand 层信息, mtd 命令可以查看 mtd 层信息。

    • 获取命令帮助信息
      执行命 spinand help 可得到如下帮助信息
      spinand read write command:
      spinand init  <spi bus id>
      spinand read <addr offset size>
      spinand dump <offset size>
      spinand oobdump <offset>
      spinand write <addr offset size>
      spinand erase <offset size>
      spinand contread <offset size>
      spinand read 0x40000000 0 0x20000

      执行命令 mtd help 可得到如下帮助信息

      aic # mtd help
      mtd read write command:
      mtd list
      mtd dump  <part> <offset> <size>
      mtd read  <part> <addr> <offset> <size>
      mtd erase <part> <offset> <size>
      mtd write <part> <addr> <offset> <size>
      mtd oobdump  <part> <offset>
      mtd oobread  <part> <addr> <offset>
      mtd oobwrite <part> <addr> <offset>
      mtd contread <part> <addr> <offset> <size>
      e.g.:
      mtd read spl 0x40000000 0 0x1000
      注:

      开发推荐使用 mtd 命令进行测试

    • 测试 spinand 相关命令
      初始化 SPI NAND 设备
      aic# spinand init 0

      打印 SPI NAND 数据

      aic # spinand dump 0 0X800
      0x300540e0 : 41 49 43 50 2f 00 00 00 02 ff ff ff ff ff ff ff
      0x300540f0 : ff ff ff ff 00 00 00 00 40 00 00 00 80 00 00 00
      0x30054100 : c0 00 00 00 68 61 bc af 01 00 00 00 41 00 00 00
      .........

      读取 SPI NAND 数据到内存上

      aic # spinand read 0x30060000 0x800 0x800
      aic # md 0x30060000 0x800
      0x30060000 : 41 49 43 20 e3 21 79 3b 01 00 01 00 10 6c 01 00
      0x30060010 : 00 00 00 00 b0 6a 01 00 00 00 10 30 00 01 10 30
      0x30060020 : 00 00 00 00 00 00 00 00 00 6c 01 00 10 00 00 00
      .........
    • 测试 mtd 相关命令

      初始化 mtd 设备

      aic # mtd list
      MTD devices:nand0                    0x00000000 ~ 0x08000000
          bootloader           0x00000000 ~ 0x00100000
          os                   0x00100000 ~ 0x00200000
          data                 0x00200000 ~ 0x00700000

      打印 mtd 分区数据

      aic # mtd dump bootloader 0 0x80
      0x300540d0 : 41 49 43 50 32 00 00 00 02 ff ff ff ff ff ff ff
      0x300540e0 : ff ff ff ff 00 00 00 00 40 00 00 00 80 00 00 00
      0x300540f0 : c0 00 00 00 99 5a bc af 01 00 00 00 41 00 00 00
      .........
      
      aic # mtd dump os 0 0x80
      0x300540d0 : 41 49 43 20 56 f4 1b 53 01 00 01 00 10 e4 00 00
      0x300540e0 : 00 00 00 00 c0 e2 00 00 00 00 04 30 00 01 04 30
      0x300540f0 : 00 00 00 00 00 00 00 00 00 e4 00 00 10 00 00 00
      .........
      测试 mtd 读速度,并打印读取的数据
      aic # mtd read os 0x30060000 0x800 0x800
      sfud_read speed: 2048 byte, 241 us -> 8297 KB/s
      
      aic # md 0x30060000 0x800
      0x30060000 : 06 00 82 80 81 47 01 00 0b c7 f5 80 0b 57 f5 00
      0x30060010 : 85 07 7d fb 82 80 2a 86 d9 b7 aa 85 17 d5 00 00
      0x30060020 : 03 25 c5 20 09 a0 41 11 26 c2 aa 84 2e 85 06 c6
      .........
      测试擦除命令
      aic # mtd dump data 0 0x800     //打印擦除前的数据
      0x30054158 : 41 49 43 20 6a 55 c3 39 01 00 01 00 10 69 01 00
      0x30054168 : 00 00 00 00 88 67 01 00 00 00 10 30 00 01 10 30
      0x30054178 : 00 00 00 00 00 00 00 00 00 69 01 00 10 00 00 00
      .........
      
      aic # mtd erase data 0 0x20000        //执行擦除命令, 大小与块大小对齐
      
      aic # mtd dump data 0x0 0x800    //打印擦除后的数据
      0x30054318 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      0x30054328 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      0x30054338 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
      .........
      测试写入新数据
      aic # mtd write data 0x30060000 0 0x800
      
      aic # mtd dump data 0 0x800     //读取新数据,判断是否写入正确
      0x3005435c : 06 00 82 80 81 47 01 00 0b c7 f5 80 0b 57 f5 00
      0x3005436c : 85 07 7d fb 82 80 2a 86 d9 b7 aa 85 17 d5 00 00
      0x3005437c : 03 25 c5 20 09 a0 41 11 26 c2 aa 84 2e 85 06 c6
      .........
  • RTOS 相关命令使用方法
    参考调试指南配置,并编译,烧录程序,在板子上运行 Luban-Lite 程序。
    • 查看相关设备
      aic /> list device
      device           type         ref count
      -------- -------------------- ----------
      wdt      WDT Device           0
      data     MTD Device           1
      rodata   Block Device         1
      os       MTD Device           0
      spl_2    MTD Device           0
      spl_1    MTD Device           0
      aicfb    Graphic Device       0
      gt911    Touch Device         0
      norflash Block Device         0
      qspi01   SPI Device           0
    • 查看相关命令
      aic /> mtd_nand
      
      mtd_nand [OPTION] [PARAM ...]
              id       <name>            Get nandid by given name
              read     <name> <bn> <pn>  Read data on page <pn> of block <bn> of device <name>
              readcont     <name> <bn> <pn> <size>  Read size data on page <pn> of block <bn> of device <name>
              readoob  <name> <bn> <pn>  Read oob  on page <pn> of block <bn> of device <name>
              write    <name> <bn> <pn>  Run write test on page <pn> of block <bn> of device <name>
              erase    <name> <bn>       Erase on block <bn> of device <name>
              eraseall <name>            Erase all block on device <name>

      具体用法可以参考上面 mtd 用法