Khadas VIM3/VIM3L和VIM4分别板载了一块存储空间为16MB和32MB的SPI-flash芯片,可用于从SPI启动系统,这篇文档将以VIM4为例说明如何从SPI启动。
VIM3/VIM3L可用于烧录到SPI的U-Boot固件名称为`u-boot.bin`。
编译可用于SPI启动的U-Boot
从SPI启动的U-Boot和从eMMC启动的U-Boot,编译方法是一样的,通过fenix就可以轻松的编译出用于SPI启动的脚本。
这意味着你要有一个可以用于编译的Fenix的环境.如果没有,请参照 fenix使用说明 搭建编译的环境
- 选择编译的环境
1 | cd fenix |
选择VIM4
。
- 编译U-Boot
1 | make uboot |
如果编译成功了,你将会在fenix/build/u-boot/./fip/_tmp
下找到一个可以烧录进SPI的Ub-Boot固件u-boot.bin.spi.bin.signed
。
烧录U-Boot进SPI Flash
将上一步编译得到的U-Boot放进SD卡,u盘,或者通过TFTP直接加载进内存中。
设置串口工具 并且进入U-Boot命令行
加载固件到DDR中
- 从SD卡加载的方式:
1 | kvim4# load mmc 0 1080000 u-boot.bin.spi.bin.signed |
- 从U盘加载的方式:
1 | usb start |
- 通过TFTP的方式:
设置TFTP的方法在如何设TFTP服务器的文档里有详细的说明。
1 | kvim4# tftp 1080000 u-boot.bin.spi.bin.signed |
烧录
1 | kvim4# sf probe |
修改启动方式为SPI
如果你想要从SPI启动系统,首先需要将启动方式设置为SPI,默认的启动方式是从eMMC启动的。
- 确认当前的启动方式:
1 | kvim4# kbi bootmode r |
当前启动方式为eMMC
- 设置为SPI启动:
1 | kvim4# kbi bootmode w spi |
关机已使新设置的启动方式的参数生效:
1 | kvim4# kbi poweroff |
此时,再次按下power
按键,就会从SPI启动了
不再需要从SPI启动时清除SPI
1 | kvim4# sf probe |
故障排查
如果启动方式已经设置为从SPI启动,同时SPI的U-Boot损坏了是无法进入uboot的命令行的
1. 如果uboot损坏了,你可以尝试使用TST模式从eMMC启动,然后进入命令行,清除你的SPI或者重新烧录U-Boot进SPI。
注意此时不能使用PC的USB口给板子供电,会直接进入升级模式,而不是从eMMC启动。
2. 如果eMMC的U-Boot损坏了,你可以尝试使用TST模式进入升级模式,烧录一个固件到eMMC上,再重复步骤1。
注意此时板子需要通过Type-C的线连接到PC。