手上有一块firefly的RK3588Q玩玩,记录下上手的踩坑过程。
资料在这里
Firefly | 让科技更简单,让生活更智能 (t-firefly.com)
教程在这里
Welcome to iCore-3588Q Manual — Firefly Wiki (t-firefly.com)
拿到板子,首先上个电,默认烧写的貌似是ubuntu,我想用Linux,直接重新烧写。
先下个buildroot的固件。怼上USB,使用RKDevTool烧写统一固件即可。
注意,这里使用的是LOADER模式烧写。
我使用的这个镜像AIO-3588Q_Buildroot_v1.0.6f_230819.img
请忽略图片中的文件名。
几十秒就轻松烧写完。
烧写完自动重启,结果,纳尼
直接启动给我duang了。
马上查看软件问题文档,解决方法是
这个蛋碎的操作,为什么没有pcie你还不给我顺利启动了,期望官方优化。
吭哧吭哧搭建编译环境,按照教程即可。
我一看,这个版本咋对不上。
这个坑爹货原来没有给完整的SDK,还需要更新仓库。尼玛,你就不能直接提供一个完整的网盘下载吗。
好不容易把SDK给整好了。开始操作了。
具体使用哪个dts文件看device/rockhip/rk3588/下的板级配置文件。
我用这个aio-3588q-BE45-A1-buildroot.mk。
CMD=`realpath $BASH_SOURCE`
CUR_DIR=`dirname $CMD`
source $CUR_DIR/aio-3588q-buildroot.mk
# Kernel dts
export RK_KERNEL_DTS=rk3588-firefly-aio-3588q-mipi101-M101014-BE45-A1
也就是说主dts是rk3588-firefly-aio-3588q-mipi101-M101014-BE45-A1.dts了。
针对性修改就行。
懒人操作,直接在vscode中搜索pcie30phy。
我是不用pcie的,直接把dts里面的pcie都给disabled了。
然后内核重新编译:./build.sh extboot
生成boot.img。
重新烧写boot分区。
查看分区文件parameter-ubuntu-fit.txt,buildroot的和ubuntu的分区文件是一个。
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3588
MACHINE_ID: 007
MANUFACTURER: RK3588
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00004000@0x00004000(uboot),0x00002000@0x00008000(misc),0x00080000@0x0000a000(boot:bootable),0x00040000@0x0008a000(recovery),0x00010000@0x000ca000(backup),0x00c00000@0x000da000(rootfs),-@0x00cda000(userdata:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
0x00080000@0x0000a000(boot:bootable)
可以知道写地址就是0x0000a000,分区大小是0x00080000
还是用工具烧写,只用烧写boot分区即可。
重启,嗯,啥反应都没有,现象还是卡死在pcie,破防了。
仔细看打印消息,发现内核编译时间还是旧的,这时候怀疑没有烧写成功,重复一次,依然不行。
仔细翻看教程,毫无头绪。
仔细看build.sh文件
我真是想说MMP了,这里原来img是extboot.img了。
那为什么还整个这。。。
真是服了。
原来编译内核,既生成了boot.img ,又生成了extboot.img,但是需要用到的是extboot.imx。既生瑜,何生亮!
将extboot.img烧写后,成功进入系统。
好了,板子成功跑起来了。
想着二次开发,最好全编译一次。
然后开始了漫长的编译之路。
跑了半天,给我Duang在了
好,下载不了是吧,我在buildroot里面给你屏蔽先,继续运行,又是各种Duang,白白折腾二天,库没下全,编译不成功,闹心。暂时不想整你了。
等我换个强大的电脑再来折腾你。
我只能说这个通过在线来buildroot就是个坑中之坑,期望官方给个下载好的版本。
我记得以前开发imx8,网盘都给下好了,一次下载就可编译。