目前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命令,成功開機了。
