5.3.4. 测试指南
5.3.4.1. 测试环境
5.3.4.1.1. 硬件
开发板,或者 FPGA 板子
板子上必须要接有 SPINAND
5.3.4.1.2. 软件
PC端的串口终端软件,用于PC和开发板进行串口通信
RT-Thread DFS 组件自带了一些命令的文件操作工具,如 cp、mkdir 等
5.3.4.2. 编译烧录
配置完成后,保存退出,编译、烧录
5.3.4.3. 验证
5.3.4.3.1. SPINAND 识别
烧录完成后,断开电源,上电,检查设备,看到 spinand0 设备,表明系统已识别 SPINAND:
aic /> list_device
device type ref count
-------- -------------------- ----------
...
spinand0 SPI Device 0
...
备注
若使用手动挂载,则在此时执行 mount blk_rodata /rodata elm
和 mount data /data uffs
。
5.3.4.3.2. 查看文件
进入 rodata 目录,查看文件:
aic /> cd sd
aic /> cd rodata
aic/rodata> ls
Directory /rodata:
lvgl_data <DIR>
至此, SPINAND 挂载完成。
5.3.4.3.3. Baremetal 相关命令使用方法
Baremetal 和 Bootloader 中实现了 spinand, mtd 命令测试工具,具体用法相同。
首先在板子上运行 ZX-RTT Baremetal 程序。
5.3.4.3.3.1. 查看相关命令
在串口控制台执行命令 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.
从中可看到, spinand
为 mtd
命令工具。spinand 层之上的一层为 mtd 层, spinand 命令可以查看 spinand 层信息, mtd 命令可以查看 mtd 层信息。
5.3.4.3.3.2. 获取命令帮助信息
执行命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 命令进行测试
5.3.4.3.3.3. 测试 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
.........
5.3.4.3.3.4. 测试 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
.........
5.3.4.3.4. RTOS 相关命令使用方法
参考调试指南配置,并编译,烧录程序,在板子上运行 ZX-RTT 程序。
5.3.4.3.4.1. 查看相关设备
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
5.3.4.3.4.2. 查看相关命令
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 用法