lichee V3S 开发板使用SPI Nor-Flash引导系统笔记

主要参考内容来源于以下两个

1.第三方总结的使用SPI Nor-Flash作为根文件系统笔记,都是步骤,讨论得比较少,主要内容参考自官方说明和网上其他博文,作为主要的操作步骤参考

http://www.yz0228.com/index.php/2019/11/08/lichee_zero_spi_start/

2.官方文档,疑点参考,里面还有部分启动失败时候的FAQ,可以参考

https://licheezero.readthedocs.io/zh/latest/%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/SPI_index.html

 

补充一下关于nor-flash焊接时候的方向,网上没有图片参考,都是只有说明,总觉得不是很清晰

 

 

根据上面两个文档,可以直接做到 flashimg.bin 这一步,发现烧录到flash后,bootloader可以引导,也可以启动kernel

但是无法挂载rootfs //经典问题

由于当时没有截图,就文字描述一下,我遇到的问题是,无法挂载rootfs,并且无法打印出分区信息

首先要明白,使用哪个设备作为根文件系统设备以及分表如何定义,是通过uboot启动参数在启动kernel时传入的.

所以首先确认kernel配置了可以接受uboot传入的启动参数.

然后检查kernel刚启动时候打印出的启动参数是否正确.

然后检查启动参数与自己配置的dts是否一致.

我出问题的地方就在第三步,写dts的时候,spi设备名字是 "spi0.0" 但是启动参数指明的设备名称为  "spi32766.0"

(所以完全按照教程做,如果不知道自己在干什么,想得到正确的解决,也是靠运气)

 

解决了这个问题后,kernel就可以正确识别到分区,但是挂载jiffs2文件系统时候又出现了一大片magic 错误

检查了烧录工具,img生成工具,kernel中jiffs2驱动的配置,也没什么好想法,还是靠google,国外友人指出是kernel

的MTD / SPI Nor-Flash设备驱动中启用了4096 b sector size选项,导致读取错误,magic校验失败.

 

测试之,果然是这里问题.

 

随后测试,启动,LED驱动,USB Gadget Network驱动等一切正常.

又多了块高级开发板,可以使用gdb远程调试外设驱动,得意!

 

SPI Nor-Flash 是32MByte size的,一个gdbserver放上面都占了5MB了,考虑后面有时间更换Nand Flash,做个

更大的rootfs

 

posted @ 2021-01-19 17:00  duckPowerWu  阅读(745)  评论(0编辑  收藏  举报