接下来是烧写入硬件验证,我的板子焊接的是W25N01GV,这里使用xfel,因为支持写入spi-nand。
GitHub - xboot/xfel: Tiny FEL tools for allwinner SOC, support RISC-V D1 chipTiny FEL tools for allwinner SOC, support RISC-V D1 chip - GitHub - xboot/xfel: Tiny FEL tools for allwinner SOC, support RISC-V D1 chiphttps://github.com/xboot/xfel
为什么不使用sd卡验证,因为烧写sd卡需要:
拔卡->插到电脑->dd命令写入->拔卡->插到板子上。
而写入spi-nand只需要:
按着boot键同时按复位键->xfel命令写入(可以飞线两个按键,复位键接到reset脚到地,boot键接到spi-cs脚到地)。
步骤大幅减少,同时没有拔插sd卡造成的触点磨损。同时因为使用的wsl系统,并不能很方便的使用dd命令写入sd卡。虽然wsl下也不能直接访问全志的usb设备,但是xfel有win的版本,wsl下可直接执行exe文件,所以只需要下载xfel-windows解压到wsl中,在.bashrc中添加命令别名
alias xfel='/home/wsl/xfel-windows-v1.2.9/xfel.exe'
即可在wsl中使用win版的xfel,就像linux中的xfel一模一样。
make spi-boot.img
xfel version
xfel spinand
xfel spinand erase 0 0x8000000
xfel spinand write 0 spi-boot.img
复位重启,可以在串口看到awboot打印的信息
[I] AWBoot r6143 starting...
[I] SPI-NAND: W25N01GV detected
[E] SPI-NAND: DTB verification failed
[F] SPI-NAND: loading failed
restarting...
awboot默认使用uart5打印,其他串口可以修改board.c中的配置,非常通俗易懂
内核加载地址如下表,可在board.h中修改
spi-nand内存划分 | 起始地址 | 空间容量 |
awboot | 0 | 0x40000(256k) |
dtb | 0x40000 | 0x40000(256k) |
kernel | 0x80000 | 0x780000(7.5M) |
rootfs | 0x800000 | 0x7800000(120M) |