怎么使用 Yocto 构建文件系统?

在线课堂:https://www.100ask.net/index(课程观看)
论  坛:http://bbs.100ask.net/(学术答疑)
开 发 板:https://100ask.taobao.com/ (淘宝)
     https://weidongshan.tmall.com/(天猫)
交流群一:QQ群:869222007(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
交流群二:QQ群:536785813(单片机-嵌入式)
公 众 号:百问科技


版本 日期 作者 说明
V1 2020 韦东山 摘自《嵌入式Linux应用开发完全手册》

1. 简介

Yocto项目使用更强大和定制化的方法,来构建出适合嵌入式产品的Linux系统。Yocto不仅仅是一个制做文件系统工具,同时提供整套的基于Linux的开发和维护工作流程,使底层嵌入式开发者和上层应用开发者在统一的框架下开发,解决了传统开发方式下零散和无管理的开发形态。

yocto是一个开源的“umbrella”项目,意指它下面有很多个子项目,Yocto只是把所有的项目整合在一起,同时提供一个参考构建项目Poky,来指导开发人员如何应用这些项目,构建出嵌入式Linux系统。它包含Bitbake、 OpenEmbedded-Core, 板级支持包,各种软件包的配置文件。可以构建出不同类需求的系统,如带Qt5.14图形库的100ask-image-qt系统,全功能命令行系统100ask-image-core,基于ST官方weston系统及100ask-image-weston的系统。

100ASK_STM32MP157提供了符合Yocto的配置文件,帮助开发者构建出可烧写在100ASK_STM32MP157_PRO板上的Linux系统像。Yocto还提供了丰富的开发文档资源,让开发者学习并定制自己的系统。由于篇幅有限,不能完整介绍Yocto的使用,请用户自行上网搜索。

本节适合需要对文件系统进行深度定制的开发者,希望从Yocto构建出符合100ASK_STM32MP157系列开发板的文件系统,同时基于它的定制需求。初次体验使用或无特殊需要的开发者可以直接使用MYD-YA157C已经提供的文件系统。由于Yocto构建前需要下载文件系统中所有软件包到本地,为了快速构建,100ASK_STM32MP157已经把相关的软件打包好,可以直接解压使用,减少重复下载的时间。 注意:构建Yocto不需要加载工具链环境变量,请创建新shell或打开新的终端窗口。

注意:编译yocto系统以主频为2.5Ghz 4核处理器 DDR4 8GB内存 200GB磁盘空间大小的主机配置为例,编译100ask-image-core 可能最少需要5个小时,编译带QT或者weston界面的系统镜像可能需要10个小时以上,yocto最小支持配置建议在2GB内存2核2.5Ghz 100G空间磁盘上。

注意:执行一键配置环境脚本安装部分依赖包,否则会在编译时报错。

2. 配置编译

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell$ DISTRO=openstlinux-eglfs MACHINE=100ask source layers/meta-100ask-st/scripts/envsetup.sh

在这里插入图片描述
由于yocto所需软件包大部分都在国外网站上保存,国内下载很慢,所以需要单独拷贝资料光盘“07_Bsp_sdk (BSP包)/YoctoDunfell_Downloads.tar.gz” 到“/home/book/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/buildopenstlinuxeglfs-100ask ”目录下,之后执行 “tar -xvf YoctoDunfell_Downloads.tar.gz “等待解压缩完成,会出现一个dowloads文件夹,里面包含了所有yocto下载必需软件包。

继续执行编译命令:

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake  100ask-image-core

在这里插入图片描述
编译完成后生成的目录镜像在”book@100ask:~/100ask_stm32mp157_prosdk/Yocto_Dunfell/build openstlinuxeglfs-100ask/tmp-glibc/deploy/images/100ask “目录内。

3. 扩展命令

3.1 单独编译某个包

比如单独编译内核,需要先清除之前的编译缓存再进行编译。

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel -c cleansstate
book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake virtual/kernel

编译某个包需要执行如下命令,启动pkg为包名,一般以.bb为后缀,加上-v参数输出编译详细信息。

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake <pkg> -v

3.2 编译 sdk

编译完系统后可以执行如下命令生成 sdk 包,用以后续针对系统的应用开发。

book@100ask:~/100ask_stm32mp157_pro-sdk/Yocto_Dunfell/build-openstlinuxeglfs-100ask$ bitbake meta-toolchain

编译完成生成的压缩包一般在” DISTRO/tmp-glibc/deploy/sdk “目录内。

3.3 其它命令

使用多线程编译,需要修改DISTRO 里面的conf/local.conf配置项,新增如下两个参数

BB_NUMBER_THREADS ?= "8"
PARALLEL_MAKE ?= "-j 8"

4. 深入学习 yocto

由于目前国内针对于yocto的教程比较稀缺,可以参考yocto官方提供的英文教程进行学习,其中资料网
址是https://www.yoctoproject.org/docs/ 可以优先阅读学习,如下图红框所示的两份在线资料。
在这里插入图片描述
其中有几本基于yocto 项目开发的书籍,推荐阅读:
在这里插入图片描述
国内有个作者针对于上面左边的 Embedded Linux Projects Using Yocto Project Cookbook 翻译为中文版本,国内可以在各大图书网站直接购买阅读。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/thisway_diy/article/details/110135485