上一篇搭建好了ubuntu宿主机开发环境,本篇的目标系统主要是开发linux+qt,所以需要刷上billdroot+Qt创建的系统,为了更好的熟悉原理和整个开发过程,选择从零开始搭建rk3568的sdk开发环境。
RK系列SDK简要介绍
一个通用 Linux SDK (RV系类的sdk没有对工程目录包含有 buildroot、 debian、 app、 kernel、 u-boot、 device、 docs、 external等目录。
以下是RK系类的目录分类:
app
:存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序。
buildroot
:
基于 buildroot (2018.02-rc3) 开发的根文件系统。
debian
:基于 debian 10 开发的根文件系统,支持部分芯片。
device/rockchip
:存放各芯片板级配置和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。
docs
:
存放芯片模块开发指导文档、 平台支持列表、 芯片平台相关文档、 Linux 开发指南等。
IMAGE
:存放每次生成编译时间、 XML、 补丁和固件目录。
external
:存放第三方相关仓库,包括音频、 视频、 网络、 recovery 等。
kernel
:
存放 kernel 4.4 或 4.19 开发的代码。
prebuilts
:存放交叉编译工具链。
rkbin
:存放 Rockchip 相关的 Binary 和工具。
rockdev
:存放编译输出固件。
tools
:存放 Linux 和 Windows 操作系统环境下常用工具。
u-boot
:
存放基于 v2017.09 版本进行开发的 uboot 代码。
yocto
:基于 yocto gatesgarth 3.2 开发的根文件系统,支持部分芯片
相对于以上的,对比下RV1109&RV1126的SDK目录,如下图:
kernel
:linux的内核是加载后将会移植运行在内存中的核心
rootfs
:这是文件系统,文件系统是kernel运行时需要加载一些驱动,库,存储等相关的其他一切相关的东西;
&emsp编译uboot,kernel,然后制作文件系统:
(注意:一定要从购买开发板或者核心板的厂家获取,已经做好了ddr等外设的适配,包括开发板的外设,这是我们后续学习移植的基础,千万不要想着从零开始做,这个是不现实的,目前也没有人和公司这么做)
注意:buildroot文件系统,并不是真的文件系统,是buildroot工具构建的文件系统,Yocto也是,Debian和Ubuntu则是真文件系统
)
编译buildroot
步骤一:安装buildroot依赖环境
虚拟机安装编译buildroot环境,以下跟来回验证了:
sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop \git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk device-tree-compiler \gdisk m4 libz-dev git gnupg flex bison gperf libsdl1.2-dev libesd-java libwxgtk3.0-dev \squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool \libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev \lib32ncurses5-dev lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip \zip liblz4-tool repo git ssh make gcc libssl-dev liblz4-tool vim expect \g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \unzip device-tree-compiler python-pip libncurses5-dev rsync subversion \sed make binutils build-essential gcc g++ wget python libncurses5 bzr cvs git mercurial \patch gzip bzip2 perl tar cpio unzip rsync file bc wget qemu-user-static live-build -y \python3.8 python3.8-dev
注意:rk3568支撑多个系统,按照SDK文档指定系统是相似的操作。
我们使用buildroot文件系统,将buildroot_20220510.tar.gz拷贝到rk356x文件夹:
cd ~/workmv buildroot_20220510.tar.gz rk356x_linux
然后解压:
tar xvf buildroot_20220510.tar.gz
差不多也是五分钟。
步骤五:查看编译命令
最终依赖环境是:
sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop \git-core curl u-boot-tools mtd-utils android-tools-fsutils openjdk-8-jdk device-tree-compiler \gdisk m4 libz-dev git gnupg flex bison gperf libsdl1.2-dev libesd-java libwxgtk3.0-dev \squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool \libxml2 libxml2-utils xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev \lib32ncurses5-dev lib32readline-dev gcc-multilib libswitch-perl libssl-dev unzip \zip liblz4-tool repo git ssh make gcc libssl-dev liblz4-tool vim expect \g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \unzip device-tree-compiler python-pip libncurses5-dev rsync subversion \sed make binutils build-essential gcc g++ wget python libncurses5 bzr cvs git mercurial \patch gzip bzip2 perl tar cpio unzip rsync file bc wget qemu-user-static live-build -y \python3.8 python3.8-dev
入坑二:编译buildroot失败
编译buildroot出现编译库错误。
新版本的buildroot添加了很多库,这些库跟/home/toppet/Linux的路径相关,配置的时候写成了绝对路径,所以编译buildroot无法通过。
方案商技术支持说一定要使用文档说的路径才可以通过,重新全部来一遍后,确实可以过,如下图:
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员