@alb702 在 V853 SDK:Linux内核下载。 中说:
uboot
从 SD 卡启动的“快速而肮脏”的方式。 也许这对某人有用。
V853 SDK不完全支持从SD卡启动。 我没有足够的信息来修复 SDK 的所有缺点,因此我使用了下面描述的方法。
我的设备使用 sdc0 控制器 (PF00...PF05) 和相应的 mmc0 接口进行启动。 下面的描述中将用到该接口。
Linux内核将通过脚本加载到uboot中。 我们准备一个文本格式的脚本,内容如下:
setenv bootargs console=ttyS0,115200 debug panic=5 rootwait root=/dev/mmcblk0p4 earlyprintk rw loglevel=7
fatload mmc 0:3 0x42000000 uImage
fatload mmc 0:3 0x43000000 board.dtb
bootm 0x42000000 - 0x43000000
并将其以 boot.cmd 的名称保存在临时目录中。
2、对于SDK中对应的【chip】和【board】:
在文件 //device/config/chips/[chip]/configs/[board]/sys_config.fex 中
需要更换:
;storage_type = 2
storage_type = 1
3.在SDK menuconfig(make menuconfig)中安装:
menuconfig1.png
在linux内核配置(make kernel_menuconfig)中设置:
menuconfig4.png
4.进入目录//lichee/brandy-2.0/u-boot-2018。 你需要做:
make menuconfig
对于 Boot Images 我们设置:
menuconfig2.png
对于 Boot Media 我们安装:
menuconfig3.png
如果你以这种形式组装系统并使用phoenixcard将其写入SD卡,那么u-boot很可能会启动。 但将无法访问mmc接口。 要使其出现,您需要运行命令:
mmcinfo
出现对界面的访问,但无法访问 mmc 部分。 你需要做:
part list mmc 0
现在您可以上传文件了 (fatload...)。
很明显,在u-boot控制台中输入这些命令是没有意义的,因此您需要在文件中写下引导的整个命令序列
//device/config/chips/[chip]/configs/[board]/linux/env-4.9.cfg :
....
#bootcmd=run setargs_nand boot_normal <-- 这需要禁用并替换为
bootcmd=mmcinfo; part list mmc 0; fatload mmc 0:3 0x42000000 boot.scr; source
....
6.如果使用mmc0,那么在文件中
//lichee/brandy-2.0/u-boot-2018/drivers/mmc/mmc.c
在 mmc_exit(void) 函数中,您需要更改:
...
//int sdc_no = 2;
int sdc_no = 0;
...
您可以组装系统(make)
镜像必须在“StartUp”模式下使用phoenixcard安装到SD卡上(不是“Product”!!!) 在这种情况下,应该出现对引导部分中的目录的访问,uImage 文件应位于其中。
您需要将boot.scr文件和board.dtb文件复制到该目录。 board.dtb 位于
//lichee/brandy-2.0/linux-4.9/arch/arm/boot/dts/
SDK 本身应该在构建时复制此文件,但由于某种原因它没有复制。
卸载SD 卡。 过程结束了!