前言??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目录,如下图:??
文章插图
- 优点: 技术支持较好,用户界面友好,硬件的兼容性好, 采用基于 Deb 的 ATP 包管理系统 。
- 缺点: 技术支持和更新服务是需要付费的, 服务器软件生态系统的规模和活力方面稍弱。??(参考厂家手册)
- uboot:uboot是引导程序,芯片运行跑起来,然后引入kernel
- kernel:linux的内核是加载后将会移植运行在内存中的核心
- rootfs:这是文件系统,文件系统是kernel运行时需要加载一些驱动 , 库,存储等相关的其他一切相关的东西;??编译uboot,kernel,然后制作文件系统:??
文章插图
??(注意:buildroot也是要下载编译的 , 因为打包ubuntu镜像的时候需要使用到buildroot里面的脚本环境,所以此处也要先做buildroot系统再做ubuntu系统,具体查看“入坑一”)??(注意:一定要从购买开发板或者核心板的厂家获?。丫龊昧薲dr等外设的适配,包括开发板的外设,这是我们后续学习移植的基?。虿灰胱糯恿憧甲觯飧鍪遣幌质档模壳耙裁挥腥撕凸菊饷醋觯??(注意:Ubuntu文件系统,是真的文件系统,而buildroot文件系统时buildroot工具构建的文件系统,Yocto也是;Debian和Ubuntu则是真文件系统)
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
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 七 SpringCloud - 微信支付
- 五方礁现在是哪国控制 五方礁
- 统一的开发平台.NET 7正式发布
- 非空的 git的介绍、git的功能特性、git工作流程、git 过滤文件、git多分支管理、远程仓库、把路飞项目传到远程仓库、ssh链接远程仓库,协同开发
- 纸嫁衣4第五章游戏攻略
- 牛牛游戏怎么玩(斗牛五张牌做牌手法)
- 斗牛怎么玩的(斗牛五张牌做牌手法)
- 京东云开发者|mysql基于binlake同步ES积压解决方案
- 纸嫁衣4红丝缠第五章木板上小人怎么摆放
- 原神复原械画部件之五怎么复原