rockchip的yocto编译环境搭建

作者:良知犹存

转载授权以及围观:欢迎添加微信公众号: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

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

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

  • ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 204,684评论 6 478
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 87,143评论 2 381
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 151,214评论 0 337
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 54,788评论 1 277
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 63,796评论 5 368
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 48,665评论 1 281
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 38,027评论 3 399
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 36,679评论 0 258
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 41,346评论 1 299
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 35,664评论 2 321
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 37,766评论 1 331
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 33,412评论 4 321
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 39,015评论 3 307
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 29,974评论 0 19
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 31,203评论 1 260
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 45,073评论 2 350
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 42,501评论 2 343