若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966
红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…
上一篇:《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》
下一篇:《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏镜像+支持hdmi屏镜像)》
buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪。
于是本篇就使用ubuntu系统了,至于其他库自己下源码在宿主机交叉编译号后,再拷贝过去或者直接在板子上编译也行(只是会比较慢),但是意义不大,因为开发过程肯定是用宿主机,不然核心板编译太慢,在编译上会花费不少可以省去的时间。
核心板方案上已经提供适配好的基础uboot和kernel,这个时候不同文件系统 uboot和内核时一样的,做驱动差别也不大,而且笔者做移植交叉编译应用和库都较多,且不同平台都做,直接裁剪移植,所以对于笔者来说,选择ubuntu是更好的方式,缺什么下源码三部曲交叉编译,而使用buildroot构建势必有点绕远路,所以选择了ubuntu,后续对ubuntu进行裁剪,如去掉桌面,然后开发移植库和应用。
一个通用 Linux SDK (RV系类的sdk没有对工程目录包含有 buildroot、 debian、 app、 kernel、 u-boot、 device、 docs、 external等目录。
以下是RK系类的目录分类:
Ubuntu 是一个流行的 Linux 发行版, 是基于 Debian 的 unstable 版本加强而来, 以“最好的 Linux 桌面系统” 而闻名, 近些年 Ubuntu 也推出了 Ubuntu Enterprise Linux, 在企业 Linux 应用市场占有率也有较大提高。
从开发版提供的资料中拿到uboot,kernel,rootfs:
虚拟机安装编译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
下载解压,做这个开发确实很需要磁盘大小,而且传输也费时间,加上用虚拟机,专门加装了1024GBSSD作为专门开发的。
然后传送到ubuntu上,使用samba服务,参考博文《linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享》
tar xvf uboot_kernel_20220512.tar.gz
(疑问:只用了3分钟,因为之前是系统ssd,这次是专门配的1024ssd单独盘么?)
注意:rk3568支撑多个系统,按照SDK文档指定系统是相似的操作。
我们使用ubuntu文件系统,将ubuntu_20220511.tar.gz直接解压到rk356x_linux的文件夹:
cd ~/work/sdk
tar xvf buildroot_20220510.tar.gz -Ca rk356x_linux/
很快,如下图:
编译uboot:
编译kernel:
编译文件系统ubuntu,这里要先选择厂商的配置:
./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
./build.sh ubuntu
然后错误:
具体查看“入坑一”,这里可以看出方案上先基于buildroot做的,然后再buildroot下去做其他的打包。
编译好buildroot后,继续使用ubuntu
./build.sh ubuntu
至此,ubuntu的固件编译完成,但是我们没有适配屏幕的。
屏幕,笔者使用的是厂家提供的lvds10.1寸屏幕,已经做好了驱动在sdk中,但是需要配置设备树:
cd /home/topeet/Linux/rk356x_linux/
gedit kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi
知识点:适配屏幕是修改了内核的设备树,而没有修改文件系统。
由于uboot,kernel是没有争议的,但是文件系统是由好几个参数,所以要根据开发文档来,有个环境变量RK_ROOTFS_SYSTEM,他是什么则是什么系统,由此可见,他实际上是build编译文件系统的参数:
编译:
export RK_ROOTFS_SYSTEM=ubuntu
./build.sh all
5分钟编完。
./mkfirmware.sh
找不到buildroot下的一个脚本。
要先编译buildroot
先走buildroot编译流程,再走编译ubuntu流程
具体的编译buildroot问题,需要看《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》。
上一篇:《RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像》
下一篇:《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏镜像+支持hdmi屏镜像)》
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966