目前linux内核和根文件系统都是用的幸狐Luckfox_Nova_SDK_250430编译出来的镜像。
但uboot和设备树dts源文件还是用的rk3308-rock-pi-s开发板的。
设备树dtb二进制文件是把设备树dts源文件放到幸狐的内核目录里面(Z:\Documents\Code\C\Luckfox_Nova_SDK_250430\kernel\arch\arm64\boot\dts\rockchip)编译出来的。
这个uboot没有saveenv命令,无法永久保存bootcmd环境变量,这样的话每次开机都得手动输入命令才行。
但可以在sd卡的efi分区里面建立boot.scr文件,把bootcmd写进去,开机时就能自动读取。
板子开机后,会自动把sd卡的efi分区挂载到/mnt/sdcard目录下。
root@rk3308b-buildroot:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 58G 95M 55G 1% /
devtmpfs 118M 0 118M 0% /dev
tmpfs 119M 12K 119M 1% /tmp
tmpfs 119M 120K 119M 1% /run
tmpfs 119M 68K 119M 1% /var/log
tmpfs 119M 0 119M 0% /dev/shm
/dev/mmcblk1p1 112M 13M 99M 12% /mnt/sdcard
root@rk3308b-buildroot:/# ls /mnt/sdcard
Image luckfox-rk3308b-evb-v10.dtb
root@rk3308b-buildroot:/#
在电脑的ubuntu22.04虚拟机上创建一个文本文件“bootcmd.txt”,内容如下:
setenv bootargs root=/dev/mmcblk1p2 rootwait rw rootfstype=ext4 console=ttyS0,1500000n8
load mmc 0:1 0x00280000 Image
load mmc 0:1 0x01f00000 luckfox-rk3308b-evb-v10.dtb
booti 0x00280000 - 0x01f00000
注意必须要使用Unix (LF)换行格式。建议在vim编译器里面创建这个文件。
然后把这个文件打包成镜像格式:
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "luckfox_bootcmd" -d bootcmd.txt bootcmd.img
然后用adb push到板子上:
adb push "Z:\Documents\Code\C\test\bootcmd\bootcmd.img" /mnt/sdcard/boot.scr
板子reboot后,就能自动执行我们设定的bootcmd命令,成功开机了。
