测试指南
测试环境
- 硬件
-
开发板,或者 FPGA 板子
-
板子上必须要接有 SPINOR
-
- 软件
-
PC 端的串口终端软件,用于 PC 和开发板进行串口通信
-
RT-Thread DFS 组件自带了一些命令的文件操作工具,如 cp、mkdir 等
-
编译烧录
配置完成后,保存退出,编译、烧录。
验证
- SPINOR 识别烧录完成后,断开电源,上电,检查设备,看到 norflash0 设备,表明系统已识别 SPINOR:
aic /> list_device device type ref count -------- -------------------- ---------- ... norflash0 Block Device 0 ...
若使用手动挂载,则在此时执行
mount blk_rodata /rodata elm
和mount data /data lfs
。 - 查看文件进入 rodata 目录,查看文件:
aic /> cd sd aic /> cd rodata aic/rodata> ls Directory /rodata: lvgl_data <DIR>
至此, SPINOR 挂载完成。
- 查看设备
aic/> list device device type ref count ---------------- -------------------- ---------- wdt WDT Device 0 blk_data Block Device 0 data MTD Device 1 blk_rodata_r Block Device 0 rodata_r MTD Device 0 blk_rodata Block Device 1 rodata MTD Device 0 blk_os_r Block Device 0 os_r MTD Device 0 blk_os Block Device 0 os MTD Device 0 blk_env_r Block Device 0 env_r MTD Device 0 blk_env Block Device 0 env MTD Device 0 blk_spl Block Device 0 spl MTD Device 0
上面 SPINOR 设备存在两种,一种是 MTD 设备,用来挂载 Littlefs 文件系统,另外一种是 Block 设备,用来挂载 FatFS 文件系统
Baremetal 相关命令用法
Baremetal 和 Bootloader 中实现了 spinor, mtd 命令测试工具,具体用法相同。
-
首先在板子上运行 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 reboot Reboot device. reset Reboot device. spinor SPI NOR flash R/W command.
从中可看到,
spinor
为mtd
命令工具。SFUD 层之上的一层为 mtd 层, spinor 命令可以查看 SFUD 层信息, mtd 命令可以查看 mtd 层信息。 - 获取命令帮助信息。
- 执行命令 spinor help
可得到如下帮助信息:
aic # spinor help spinor read write command: spinor init <spi bus id> spinor dump <offset> <size> spinor read <addr> <offset> <size> spinor erase <offset> <size> spinor write <addr> <offset> <size> e.g.: spinor read 0x40000000 0 256
- 执行命令 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> e.g.: mtd read spl 0x40000000 0 0x1000
开发推荐使用 mtd 命令进行测试
- 执行命令 spinor help
可得到如下帮助信息:
- 测试 spinor 相关命令:
-
初始化 SPI NOR 设备
aic # spinor init 0 probe spinor flash success.
-
打印 SPI NOR 数据
aic # spinor dump 0 0x800 0x300530c0 : 41 49 43 20 26 e5 67 b1 01 00 01 00 10 64 01 00 0x300530d0 : 00 00 00 00 78 62 01 00 00 00 10 30 00 01 10 30 0x300530e0 : 00 00 00 00 00 00 00 00 00 64 01 00 10 00 00 00 .........
-
读取 SPI NOR 数据到内存上
aic # spinor read 0x30060000 0x800 0x800 aic # md 0x30060000 0x800 0x30060000 : 33 05 f7 40 82 80 03 46 05 00 83 c6 05 00 05 05 0x30060010 : 85 05 63 14 d6 00 e3 18 06 fe 33 05 d6 40 82 80 0x30060020 : 11 05 91 05 e3 11 d6 fe 01 45 82 80 21 05 a1 05 .........
-
- 测试 mtd 相关命令
-
初始化 mtd 设备
aic # mtd list MTD devices:nor0 0x00000000 ~ 0x01000000 spl_1 0x00000000 ~ 0x00020000 spl_2 0x00020000 ~ 0x00040000 os 0x00040000 ~ 0x00140000 rodata 0x00140000 ~ 0x00740000 data 0x00740000 ~ 0x00d40000
-
打印 mtd 数据
aic # mtd dump spl_1 0 0x80 0x30052b5c : 41 49 43 20 26 e5 67 b1 01 00 01 00 10 64 01 00 0x30052b6c : 00 00 00 00 78 62 01 00 00 00 10 30 00 01 10 30 0x30052b7c : 00 00 00 00 00 00 00 00 00 64 01 00 10 00 00 00 ......... aic # mtd dump os 0 0x80 0x30052b74 : 41 49 43 20 1c a7 0c d2 01 00 01 00 10 d8 00 00 0x30052b84 : 00 00 00 00 9c d6 00 00 00 00 04 30 00 01 04 30 0x30052b94 : 00 00 00 00 00 00 00 00 00 d8 00 00 10 00 00 00 .........
-
读取 mtd 数据到内存上
aic # mtd read spl_1 0x30060000 0x800 0x800 sfud_read speed: 2048 byte, 1511 us -> 1323 KB/s aic # md 0x30060000 0x800 0x30060000 : 33 05 f7 40 82 80 03 46 05 00 83 c6 05 00 05 05 0x30060010 : 85 05 63 14 d6 00 e3 18 06 fe 33 05 d6 40 82 80 0x30060020 : 11 05 91 05 e3 11 d6 fe 01 45 82 80 21 05 a1 05 .........
- 测试擦除命令
aic # mtd dump rodata 0 0x800 //打印擦除前的数据 0x30052e34 : eb 3c 90 4d 54 4f 4f 34 30 34 33 00 10 08 01 00 0x30052e44 : 02 80 03 13 01 f8 01 00 0d 00 02 00 00 00 00 00 0x30052e54 : 00 00 00 00 80 00 29 67 3e cf 0f 4e 4f 20 4e 41 ......... aic # mtd erase rodata 0 0x2000 //执行擦除命令 aic # mtd dump rodata 0 0x800 //打印擦除后的数据 0x30052e34 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0x30052e44 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0x30052e54 : ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff .........
- 测试写入新数据
aic # mtd write rodata 0x30060000 0 0x800 aic # mtd dump rodata 0 0x800 //读取新数据,判断是否写入正确 0x30052e34 : 33 05 f7 40 82 80 03 46 05 00 83 c6 05 00 05 05 0x30052e44 : 85 05 63 14 d6 00 e3 18 06 fe 33 05 d6 40 82 80 0x30052e54 : 11 05 91 05 e3 11 d6 fe 01 45 82 80 21 05 a1 05 .........
-