作者:良知犹存

转载授权以及围观:欢迎添加微信公众号:Conscience_Remains

总述

  嵌入式的朋友们,应该知道Linux驱动开发过程中,需要进行搭建交叉编译工具链环境、移植u-boot、kernel、根文件系统的几个部分工作。最开始我们的学习是把几个模块分开使用学习使用,各个部分生成代码,然后进行烧录,有时候我们会用脚本去把各个部分的代码打包到一起进行烧录。

后来随着工具的发,我们只需要一个SDK就可以完成所有的工作,从编译交叉工具链到生成的打包文件。而这种软件的变化最开始是为了方便根文件系统的编译,最开始的busybox需要自己移植lib、还要很多第三方的软件也要我们自行添加。到现在比较常见的buildroot就是一体化生成,包括今天要介绍yocto环境都是如此,虽然buildroot小巧,但是有些功能没有办法完全满足开发,例如ROS和QT一些的支持。

韦东山老师在最新的pdf中介绍yocto是这样的。

Yocto 超级难用

单是下载程序容量就达到 10G,使用一般的个人电脑需要编译 20 小时以上。以后稍微修改一下程序,

重新制作时至少需要半小时。

我们迫不得已才使用 Yocto:QT GUI 程序需要用到 GPU 的一些库,在 Buildroot 上我们还没搞定。

韦东山

确实yocto其他环境无法比拟的优势,自己使用建议用buildroot,除非必要,不建议使用yocto。下面就听我介绍我是如何搭建适配rockchip的yocto环境的。

一、基本介绍

rockchip的bsp构建方式有三种:

1.rockchip维护的linux sdk包,涵盖uboot、kernel、buildroot(便于构建rootfs)、toolchain。

其中buildroot也是官方主推的bsp维护方式,采用make、pkg-config工作模式,使用简单。

2.独立获取rockchip的uboot、kernel,其相对于原版拥有rockchip的patch。

3.rockchip维护的yocto,类似buildroot但比之略微复杂,使用bitbake工作模式,相对应的,其工作方式更加灵活而强大。

本文就是介绍rk的yocto环境的配置:

  Yocto计划(英语:Yocto Project™),一个自由软件项目计划,由Linux基金会于2010年宣布,这个计划的目标在于创造出可以提供嵌入式linux发行版的软件工具,以改善软件发展流程。2011年3月,这个计划与OpenEmbedded计划结合,以OpenEmbedded-Core计划作为计划的另一个名称。

它提供跨平台工具、元数据以及流程以利于快速和可复制的开发Linux嵌入式系统。

Yocto项目主要由三个组件组成:

BitBake:读取配置档与处方档(recipes)并运行,配置与建置所指定的应用程序或者系统文件映像档。

OpenEmbedded-Core:由基础layers所组成,并为处方档(recipes),layers与classes的集合:这些要素都是在OpenEmbedded系统中共享使用的。

Poky:是一个参考系统。是许多案子与工具的集合,用来让用户延伸出新的发行版(Distribution)

from:维基百科

首先我们需要准备一个足够大的目录放yocto,因为在编译过程中,yocto会下载很多包,至少我编译我之后空间大小友32G。

甚至正点原子的imx6u的yocto制作中有这么几句话的描述

yocto 构建根文件系统需要预留足够的硬盘空间, I.MX yocto 手册上标明至少要留120G 的空间。
yocto 构建根文件系统需要非常长的时间, 不建议用低配置的电脑进行构建。否则可能需要一两天的构建时间。
yocto 构建的根文件系统包括了官方评估板所用的一切东西,文件系统十分巨大,需要读者自行裁剪

二、准备工作

1.首先我们要git rockchip在github的yocto源码,这个时候需要电脑端有git环境,至于这块的操作请大家阅读我之前的文章就好了,

git从安装到多账户操作一套搞定(一)入门使用

git从安装到多账户操作一套搞定(二)多账户使用

这里就不多做描述。

2.安装编译所需要的一些包

sudo apt-get install gawk wget git-core diffstat unzip texinfo \build-essential chrpath sudo apt-get install libsdl1.2-dev xterm sudo apt-get install make xsltproc docbook-utils fop sudo apt-get install autoconf automake libtool libglib2.0-dev

3.使用repo去git源码

repo 是一个构建在 Git 之上的工具,它可以更容易地管理包含多个存储库的项目,而这些存储库不需要位于同一台服务器上。repo 很好地补充了 yocto 项目的分层特性,使用户可以更容易地将自己的层添加到 BSP 中。简单来说,repo 用来管理多个 git 工程, git 是无法将厂商的在存储库里面的某个项目给 clone 下来,如果我们只需要厂商的 yocto 项目, (要想知道 芯片厂商可不只有 yocto 项目呢),使用 Git 下载却把个存储库项目都下下来了。

这就是为什么要用 repo 来管理更庞大的项目的原因了。

下面是repo命令里面git的源码

repo init --repo-url=https://github.com/rockchip-linux/repo-u https://github.com/rockchip-linux/manifests-b yocto -m rocko.xml

下载结束之后用更新一下文件

repo sync

我第一步下载比较少,第二部同步更新的时候下载了好多文件,(有梯子请用梯子)目录如下

这是我编译之后用tree 2级目录的情况(3级以上文件显示就太多了 )

├── build

│   ├── bitbake-cookerdaemon.log

│   ├── bitbake.lock

│   ├── bitbake.sock

│   ├── build

│   └── conf

├── flash_tool.sh

├── README

├── rkbin

│   ├── bin

│   ├── img

│   ├── README

│   ├── RKBOOT

│   ├── RKBOOT.ini

│   ├── RKTRUST

│   ├── scripts

│   └── tools

├── setup-environment

└── sources

├── base

├── bitbake

├── meta-browser

├── meta-openembedded

├── meta-qt5

├── meta-rockchip

├── meta-rockchip-extra

└── poky

三、选择recipe进行编译

源码下载之后,我们就要开始进行软件的编译工作了,正常第一件事情,先配置环境以及编译yocto的编译工具。

MACHINE=firefly-rk3399 DISTRO=rk-x11 . ./setup-environment -b build

(注意两个点之间有空格,这一步通过执行setup-environment脚本建立yocto构建系统环境变量,其中MACHINE指定机型,DISTRO指定图形后端,rk-x11表示使用x11后端,rk-wayland使用wayland后端,rk-none使用eglfs后端,-b指定构建目录,命令执行成功将直接跳进构建目录)

接下来就要开始用bitbake工具进行编译了,注意:

这里我就遇到了一个问题,困扰了我半天,我随便用了个编译选项,就是提示我

ERROR: Unable to start bitbake server

我在stackoverflow上收到相关的文章

https://stackoverflow.com/questions/48132054/unable-to-start-bitbake-server

都是提示我构建的系统上缺少一些包

我思前想后我想最前面的时候都已经安装了包,并且我有环境可以正常使用yocto编译了。stackoverflow也不香了,最后一点点的摸,找到了问题。

在sources/poky下面藏着一个文件 oe-init-build-env 它是专门用了使能bitbake工具的,所以我们除了要设置setup-environment还要在编译目录进行

source ../sources/poky/oe-init-build-env

这样我们就可以进行相应的交叉工具链、根文件系统以及内核、u-boot的编译了。

其实这个时候要进行详细设置编译的环境,以及对应编译镜像里面需要的包,但是由于我是属于环境的初步的搭建,我就直接选择默认配置,然后进行了一些简单的编译了。

bitbake core-image-minimal

从上面图片可以看到,当我把bitbake配置好后,下面就有了一些编译的参考选项,有根文件系统,有toolchain(编译工具链)等,

bitbake core-image-minimal

因为第一次编译的原因,bitbake边编译边下载的机制,我这次编译花费了十几个小时,而且还是全程梯子。

查看编译好的文件

ls tmp/deploy/images/qemux86/

同样的操作继续编译u-boot

bitbake u-boot-mkimage

继续编译 编译工具链

bitbake meta-toolchain

继续编译 内核

bitbake linux-yocto

搭建yocto环境过程中,也是收集了一些官方和文章,大家如果想要的话,关注我公众号,回复yocto环境搭建,就可以收到资料了。

这就是我分享的rockchip的yocto环境搭建,篇幅的问题也不能继续展开介绍了,后续有时间再把yocto怎么增、改、删相应的源码包、yocto交叉工具链的编译设置等的操作介绍给大家,如果大家有什么更好的思路,欢迎分享交流哈

rockchip的yocto编译环境的搭建相关推荐

  1. 详解 masm + textpad 编译环境的搭建

    首先下载Masm615以及textpad,建议使用textpad英文版,下面以TextPad 5.4为例,说明编译环境的搭建方法. 安装好textpad之后,启动后的界面是这样的: 一.类型过滤:支持 ...

  2. μC-/OS II(一) PC编译环境的搭建

    这个系列博文是关于对<嵌入式实时操作系统 μC-/OS II>(第二版)的学习笔记 μC-/OS II (一)  PC编译器环境的搭建 1.关于编译器 采用Borland C++ 4.5作 ...

  3. windows 搭建python 虚拟环境 写程序_Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同)...

    1.编译环境配置import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee18cced0e ...

  4. 凌阳DVD sunplus sphe8202系列编译环境的搭建

    在windows XP系统上搭建sunplus sphe8202编译环境: 1.解压 GCCL2.7z 到C盘根目录,得到GCCL2的文件夹 2.在桌面建立一个命令提示符的快捷方式 3.修改此命令提示 ...

  5. java编译环境_搭建java编译环境

    搭建java编译环境 一.java编译环境 1.准备工作: 下载 jdk-7u79-linux-x64.tar.gz 压缩包 解压 tar zxf jdk-7u79-linux-x64.tar.gz ...

  6. MT4Server编译环境的搭建

    一周的时间查过的资料,走过的坑,给自己留个参考. 环境一:[win10]+[vs2017]+[c++]+[boost]+[thrift]+[glog] 一.准备工作 1.1 下载地址 下载boost库 ...

  7. qt5.3.1+opencv2.4.9编译环境的搭建

    到官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe文件,执行该文件,选择默认安装即可实现QT的安装(安装在C盘的根目录下),该文件封装好了 ...

  8. FC12下OKL4编译环境的搭建

    由于本人用不习惯Ubuntu,因此还是决定把OKL4的开发环境转移到RedHat里来,网上一搜,FC家族已经发展到12了,还真的是快,跟不上时代发展呀,想想以前还在FC4.FC6上玩呢!这次也赶个时髦 ...

  9. python编译环境 eclipse_eclipse搭建python编译环境

    python的编译器有很多,网上的教程中有些是在linux下,直接使用终端命令行输入:还有一些使用pycharm,这也是很多python用户推荐使用的,不过不求上进的我还是偏爱eclipse,有可能是 ...

最新文章

  1. Android输入法开发
  2. python列表添加元组_【Python爬虫】列表、元组、集合练习
  3. javap的用途不断发展:您的Java类文件中隐藏了什么?
  4. MDL锁导致mysql夯住_MySQL MetaData Lock 案例分享
  5. vue小demo易错点总结
  6. oracle10g 如何打开,oracle10g  oem无法打开解决方法
  7. GBDT、Xgboost、LightGBM对比,异同点,并行策略
  8. 火山引擎张鑫解读云原生2021:K8s 开先河、技能全栈、业务“无感”
  9. 使用yo -v查看yeoman版本号
  10. wps vba宏插件_wps下载_wps下载免费完整版客户端[办公软件]
  11. CAN与CAN FD通信之间存在的问题
  12. 实分析royden第四版答案_实分析(原书第4版)_[美]H.L.罗伊登(H.L.Royden) P.M.菲茨帕特里克(P.M.Fitzpatrick)_9787111630845_...
  13. python更新包列表出错_python – 完整更新pip包时出错
  14. matplotlib pyqt4
  15. C++函数参数省略号
  16. SeaweedFS 分布式 上传、下载、删除附件公共接口
  17. Bulldog2 渗透测试
  18. 解决phpstorm运行很卡问题!
  19. 人眼有多少像素 人类VS相机之间的差异有多大
  20. 照着别人的敲代码来学习编程好吗

热门文章

  1. 虾皮shopee跨境电商靠谱吗
  2. JavaFx界面设计【SceneBuilder版】适合初学者
  3. 微信小程序iconfont不显示解决
  4. 微信打开网址添加在浏览器中打开提示遮罩
  5. 【互动媒体】”十二个一“的文艺创作的文本分析与可视化
  6. 淘宝宝贝详情栏固定位置的效果实现
  7. python 股票自动交易助手_哪些 Python 库让你相见恨晚?
  8. 可以装虚拟机的云服务器,云服务器可以装虚拟机吗
  9. windows 2003 下IIS没有ASP.NET 1.1.4322选项卡
  10. 2023 刷步数网站VUE源码