五 RK3568开发笔记:在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

前言??buildroot虽然灵活,但是基于实际情况,本身是侧重驱动和应用定制开发的只定制一次文件系统投入有点多,还不如直接ubunt自己交叉编译依赖库,做一些库的移植裁剪 。??于是本篇就使用ubuntu系统了,至于其他库自己下源码在宿主机交叉编译号后,再拷贝过去或者直接在板子上编译也行(只是会比较慢),但是意义不大,因为开发过程肯定是用宿主机,不然核心板编译太慢,在编译上会花费不少可以省去的时间 。
 为什么选择ubuntu??核心板方案上已经提供适配好的基础uboot和kernel , 这个时候不同文件系统 uboot和内核时一样的,做驱动差别也不大 , 而且笔者做移植交叉编译应用和库都较多,且不同平台都做,直接裁剪移植 , 所以对于笔者来说,选择ubuntu是更好的方式,缺什么下源码三部曲交叉编译 , 而使用buildroot构建势必有点绕远路,所以选择了ubuntu,后续对ubuntu进行裁剪 , 如去掉桌面,然后开发移植库和应用 。
 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目录,如下图:??
    五 RK3568开发笔记:在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    文章插图
Ubuntu??Ubuntu 是一个流行的 Linux 发行版, 是基于 Debian 的 unstable 版本加强而来, 以“最好的 Linux 桌面系统” 而闻名 ,  近些年 Ubuntu 也推出了 Ubuntu Enterprise Linux, 在企业 Linux 应用市场占有率也有较大提高 。
  • 优点: 技术支持较好,用户界面友好,硬件的兼容性好, 采用基于 Deb 的 ATP 包管理系统 。
  • 缺点: 技术支持和更新服务是需要付费的, 服务器软件生态系统的规模和活力方面稍弱。??(参考厂家手册)
 源码准备??从开发版提供的资料中拿到uboot,kernel , rootfs:
  • uboot:uboot是引导程序,芯片运行跑起来,然后引入kernel
  • kernel:linux的内核是加载后将会移植运行在内存中的核心
  • rootfs:这是文件系统,文件系统是kernel运行时需要加载一些驱动 , 库,存储等相关的其他一切相关的东西;??编译uboot,kernel,然后制作文件系统:??
    五 RK3568开发笔记:在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

    文章插图
    ??(注意:buildroot也是要下载编译的 , 因为打包ubuntu镜像的时候需要使用到buildroot里面的脚本环境,所以此处也要先做buildroot系统再做ubuntu系统,具体查看“入坑一”)??(注意:一定要从购买开发板或者核心板的厂家获?。丫龊昧薲dr等外设的适配,包括开发板的外设,这是我们后续学习移植的基?。虿灰胱糯恿憧甲觯飧鍪遣幌质档模壳耙裁挥腥撕凸菊饷醋觯??(注意:Ubuntu文件系统,是真的文件系统,而buildroot文件系统时buildroot工具构建的文件系统,Yocto也是;Debian和Ubuntu则是真文件系统)
 编译ubuntu步骤一:安装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 binutilsbuild-essentialgccg++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

推荐阅读