基于rk3568的yocto环境快速搭建指南
1. 环境准备从零开始搭建开发环境第一次在rk3568上折腾yocto环境时我花了整整两天时间才把所有依赖装齐。后来发现其实只要掌握几个关键步骤半小时就能搞定基础环境。咱们先从最基础的Ubuntu系统说起建议直接用22.04 LTS版本稳定性有保障。装系统时有个小技巧最好给虚拟机分配至少100GB磁盘空间。我之前用默认的20GB编译到一半就爆盘了。内存建议8GB起步CPU核心数越多越好毕竟后续编译过程特别吃资源。装好系统后第一件事就是更新软件源sudo apt update sudo apt upgrade -y接下来安装编译工具链这里我把常用依赖打包成一条命令比原始文章的列表更全面sudo apt install -y gawk wget git-core diffstat unzip texinfo gcc \ multilib build-essential chrpath socat cpio python3 python3-pip \ python3-pexpect xz-utils debianutils iputils-ping python3-git \ python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm g \ libstdc6 lib32stdc6 libpulse-dev libevent-dev ninja-build \ rpm2cpio libswitch-perl gcc-multilib zstd liblz4-tool注意如果遇到包冲突可以尝试加上--fix-missing参数。我在Ubuntu 22.04上实测时发现有些包需要额外处理依赖关系。2. 工具链配置避坑指南2.1 版本检查的隐藏细节原始文章提到的版本检查很关键但实际场景中容易忽略一些细节。比如git版本虽然1.8.3.1就能用但我建议至少升级到2.34否则后续repo同步时可能遇到奇怪问题。检查版本时可以这样操作git --version tar --version | head -n1 python3 --version gcc --version | head -n1如果版本不够可以用以下命令升级gitsudo add-apt-repository ppa:git-core/ppa -y sudo apt update sudo apt install git -y2.2 repo工具配置的优化方案配置repo工具时原始文章的方法虽然能用但在国内网络环境下可能会很慢。我推荐改用清华源mkdir -p ~/.bin echo export PATH${HOME}/.bin:${PATH} ~/.bashrc curl -s https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/.bin/repo chmod arx ~/.bin/repo然后创建~/.repoconfig文件写入以下内容加速同步[repo] url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo3. Yocto工程初始化实战3.1 源码下载的加速技巧第一次同步yocto源码时原始文章没提到网络优化的问题。我建议先用国内镜像站初始化mkdir rk3568-yocto cd rk3568-yocto repo init -u https://gitlab.com/yocto-project/yocto.git \ -b kirkstone \ --repo-urlhttps://mirrors.tuna.tsinghua.edu.cn/git/git-repo这里有个小技巧先只同步最小数据集repo sync -c -j$(nproc) --no-tags --no-clone-bundle --optimized-fetch3.2 针对rk3568的特别配置原始文章没提到板级适配问题。rk3568需要额外加载meta-rockchip层git clone https://github.com/rockchip-linux/meta-rockchip.git然后在conf/bblayers.conf中添加BBLAYERS ${BSPDIR}/meta-rockchip4. 编译与调试进阶技巧4.1 高效编译参数配置原始文章直接用了bitbake命令其实可以优化本地配置。编辑conf/local.conf# 启用并行编译 BB_NUMBER_THREADS $(nproc) PARALLEL_MAKE -j $(nproc) # 针对rk3568的优化 MACHINE rockchip-rk3568 DL_DIR ${TOPDIR}/downloads SSTATE_DIR ${TOPDIR}/sstate-cache4.2 常见编译问题解决遇到过最头疼的问题是QTwebengine编译失败解决方法是在local.conf中添加# 跳过有问题的组件 SKIP_RECIPE[qtwebengine] fails to build with gcc12另一个常见问题是证书验证失败可以临时关闭验证# 在do_fetch前跳过证书检查 export GIT_SSL_NO_VERIFY15. 镜像定制与烧录5.1 添加自定义软件包在meta-rockchip层创建自定义recipemkdir -p meta-rockchip/recipes-custom/myapp然后创建myapp_1.0.bb文件内容示例DESCRIPTION My custom application LICENSE MIT SRC_URI git://github.com/example/myapp.git inherit cmake5.2 烧录镜像的实用技巧编译完成后镜像位于tmp/deploy/images/rockchip-rk3568/core-image-minimal-rockchip-rk3568.wic.gz解压后用RKDevTool烧录时建议先擦除flashsudo rkdeveloptool db rk356x_spl_loader_v1.xx.bin sudo rkdeveloptool erase-flash sudo rkdeveloptool write-flash 0 core-image-minimal-rockchip-rk3568.wic我在实际项目中发现rk3568对电源稳定性要求较高烧录时最好使用原厂电源适配器。另外第一次启动时建议连接串口调试观察内核启动日志。遇到启动失败的情况可以尝试在u-boot阶段重置环境变量env default -a saveenv reset