网络知识 娱乐 Yocto开发讲解系列 - 总目录

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲

  • Yocto开发专栏前言
  • Yocto开发专栏总目录
    • 快速上手
    • Yocto理论篇
    • Metadata Layer
    • BitBake工具
    • Toolchain或交叉编译器
    • Linux内核和驱动模块
    • 文件系统相关
    • devtool开发工具
    • Toaster使用
    • ARM相关的BSP
    • bb文件编写知识
    • conf配置
    • 实际平台举例
    • 技巧篇汇总
    • 实战篇汇总

Yocto开发专栏前言

欢迎读者盆友光临fulinux的《Yocto开发讲解系列》专栏!

本小编有10年软件开发经历和丰富的Yocto开发经验,我最早接触Yocto是在做Freescaleimx6平台的时候,那个时候也是瞎折腾,压根就搞不清楚Yocto里的软件代码怎么改,怎么添加自己的软件项目,没有深入去研究。也仅仅是“挪用”yocto编译出来的一些库和程序、文件系统或者Toolchain SDK来满足自己的项目需求,甚至那个时候觉得还是自己的项目构建系统比较简单好用。虽然有心想研究Yocto,但是太大、太难、太复杂了,想入门都找不到门在哪,也仅仅是浅尝辄止~。但是,四年前由于实际开发要求,我又一次开始接触Yocto,感受到了他的强大和价值,决心好好系统的研究它。这期间付出了大量的时间和精力,真是让人头秃过程呐!不过现在来看Yocto真的的是太棒了,也不是那么难,对于我们做软件开发的盆友们而言简直就是福音,省去了我们交叉编译每个软件项目的时间,又容易将我们的成果固化下来,使我们的项目更加的规范和标准化(国外有很多Yocto开发人员哦)。对于开发者而言,仅仅两条终端命令即可编译出我们需要的所有镜像文件。从此,不必再纠结交叉编译的问题,公司也不必担心某个程序员离职导致项目开发无法继承的问题,即使一个N年之后没有接触的项目,仍然可以快速上手、编译和刷机运行。

我写本系列的文章也是在实际需求的驱动下,在边开发的过程中边记录和讲解,尽可能使自己处于一张白纸的基础出发和大家一起从Yocto入门到深入研究,每一篇博文尽可能带着问题出发,落实到具体的实例,结合理论和注释讲解,并将自己折腾的过程记录下来。

我想很多朋友都在思考本专栏是否能解决我的问题是否适配我的硬件平台,我的回答是肯定的。而且为了不局限于某个特定的硬件平台和环境,本专栏从Yocto自带的官方x86-64 qemu虚拟机平台上开发和示例演示,qemu虚拟机的好处是不需要借助除了电脑之外的其他硬件环境,只要一台电脑就可以开始我们的Yocto学习和开发。

本专栏我会涉及到的一些技术和知识点,包括C/C++语言、shell、python、Qt5/QML和网络等知识,技能包括vim、git、makefile、cmake、autotools、Android、gcc/gdb和toolchain SDK等方面的技能。当然,我会在文中也会尽可能照顾到小白盆友,尽可能讲解我这么做的理由和对代码的注释。当然对于小白盆友能掌握掌握一门C语言和Linux基础操作也可以开始我们的yocto之旅。

技术和知识点都是在漫长的过程中积累起来的,重要的我觉得是一些精神品质方面的东西:较真、能折腾和不屈不挠的品质,归纳演绎、对比和逆向的思维方式。我在写本文的过程中遇到很多的坎和高山,我私下都是花了很久的时间折腾,有时候近乎绝望都要放弃了,但是还是坚持了下来了,就是希望给读者盆友呈现的是一个完整优美的演绎过程,而不是将就得过且过。有很多时候我们不怕问题本身,就是怕不知道问题是什么,无法描述,导致无法求助于网络或者他人。我希望大家在使用Yocto的过程中遇到问题时,需要善于找示例,有时候千言万语都不及一个好例子,并从中发现要点。解决问题的方向可以是多方面的,这个反向攻不破可以尝试从其他方向入手,进而对比找出问题出在哪里。读者盆友在阅读本专栏的博文的过程中遇到任何的问题和疑惑,都可以在讨论区提出来,我都会尽可能的回复和帮助解决,而不是当个高冷的博主。

我后续还会对本专栏进行系统的归类、校对和查错,尽可能丰富博文,让每一篇文档都做到理论和实践相结合,做到有的放矢、深入浅出。从问题和实际需求出发,分析问题,解决问题、并做相应的归纳和总结。

Yocto开发专栏总目录

本篇博文主要是为了方便新老读者朋友了解和查阅本专栏,将该系列进行科学分类和提取关键词,尽可能为每篇博文写个概述和要解决什么问题。

快速上手

下面几篇是用来带着大家快速上手的,熟悉下yocto。教大家如何搭建环境、安装必备的软件包,下载Yocto源码,download目录修改、开始编译,并演示运行qemu虚拟机,以及不带显示器如何登陆qemu虚拟机:

yocto-第1篇-开始qemux86-64虚拟机的构建
yocto-第2篇-qemux86-64虚拟机运行演示

  • 关键词:yocto qemu bitbake 入门

Yocto理论篇

让大家对Yocto有个简单的认识,介绍一些概念、目录、工具和变量等:

yocto系列讲解 (理论篇) 68 -Yocto版本信息查询稳定版本和EOL版本
yocto-第6篇-什么是yocto理论篇
yocto-第21篇-yocto项目的概念(1)
yocto-第22篇-yocto项目的概念(2)
yocto系列讲解 (理论篇) 69 - Yocto-3.4新版本honister语法修改方法

  • 关键词:bitbake recipe class 用户配置 Distro BSP Software Layer 版本 honister

Metadata Layer

介绍meta layer的一些知识和示例:

yocto系列讲解 (理论篇) 56 - poky下目录结构
yocto系列讲解 (技能篇) 57 - 如何快速搜索和查找
yocto-第3篇-添加已有硬件层实例
yocto-第4篇-创建自己的meta layer
yocto-第5篇-在meta-mylayer中添加helloworld recipe

  • 关键词:poky bitbake meta layer model create mylayer

BitBake工具

介绍bitbake、构建全过程、使用到的变量和任务,实战演示等:

yocto-第23篇-BitBake全过程(1)
yocto-第24篇-BitBake全过程(2)
yocto-第25篇-BitBake全过程(3)
yocto-第26篇-BitBake全过程(4)
yocto-第27篇-BitBake全过程(5)

  • 关键词:
    source、SRC_URI、DL_DIR、SRCREV、image和SDK、PACKAGE_、DEPLOY_、do_fetch、do_unpack、PN/PV/PR/S/WORKDIR、do_patch、FILESPATH、do_prepare_recipe_sysroot、do_configure、EXTRA_OECONF、EXTRA_OECMAKE、EXTRA_OEMAKE、CFLAGS/CXXFLAGS、do_compile、do_install、do_package、do_packagedata、PKGD、PKGD*、STAGE_DIR_HOST、STAGING_DIR_NATIVE、STAGING_DIR_TARGET、FILES等变量

Toolchain或交叉编译器

介绍如何生成Toolchain SDK,安装,和实战演示:

yocto-第28篇-应用开发的SDK或toolchain或gcc
yocto系列讲解 (技巧篇) 66 - 设备的文件系统中安装gcc

  • 关键词:toolchain SDK gcc arm-linux-gcc 交叉编译器

Linux内核和驱动模块

介绍Yocto中的Linux kernle和driver module驱动模块:

yocto-第29篇-源码树外添加Linux驱动模块(hello驱动实例)
yocto-第31篇-Linux kernel相关的任务
yocto-第32篇-qemu Linux kernle默认的配置
yocto-第33篇-如何修改linux内核源码和添加补丁文件
Yocto系列讲解 (实战篇) 74 - 用Kbuild构建外部Linux驱动模块组

  • 关键词:Linux kernel driver hello module bb mylayer recipe modprobe rmmod defconf menuconfig device tree dts dtb devtool layer

文件系统相关

介绍文件系统相关的内容:

yocto-第30篇-创建只读根文件系统
yocto-第35篇-添加一个新的10M大小的镜像文件
yocto系列讲解 (实战篇) 58 - 程序开机自启动
yocto系列讲解 (技巧篇) 67 - 在etc/passwd和etc/group文件中添加用户和组等信息

  • 关键词:rootfs only-read 只读 分区大小 image

devtool开发工具

介绍devtool工具,举了一个helloyocto和git项目的的例子,来演示如何添加和修改软件项目,以及如何集成。

yocto-第7篇-开发工具devtool实操(helloyocto)
yocto-第8篇-开发工具devtool实操(添加git项目learnyocto)
yocto-第9篇-将软件包打包到qemux86-64机器的文件系统中和devtool finish命令
yocto-第10篇-在线部署软件到机器上
yocto-第11篇-删除在线部署到机器上的软件
yocto-第12篇-如何修改开源项目的代码呢?
yocto-第13篇-修改workspace目录路径(create-workspace)
yocto-第14篇-devtool edit-recipe命令(编辑bb文件命令)
yocto-第15篇-devtool update-recipe命令
yocto-第16篇-devtool upgrade命令
yocto-第17篇-devtool latest-version命令

  • 关键词:devtool add modify helloyocto learnyocto workspace qemu finish bb edit-recipe update-recipe upgrade version vim 开源项目 删除 打包

Toaster使用

介绍Toaster,讲解Yocto如何借助Toaster网页在线直观使用。

yocto-第18篇-Toaster使用技巧(1)
yocto-第19篇-Toaster使用技巧(2)
yocto-第20篇-Toaster使用技巧(3)

  • 关键词:toaster 网页 在线 调试

ARM相关的BSP

结合一个ARM的beaglebone虚拟机,讲述相关的kernel u-boot等BSP知识和配置

yocto-第36篇-编译arm虚拟机qemuarm
yocto-第37篇-编译可以在beaglebone开发板上运行的镜像
yocto-第38篇-beaglebone-yocto.conf配置分析之PREFERRED_PROVIDER变量
yocto-第39篇-beaglebone-yocto.conf配置分析之MACHINE_EXTRA_RRECOMMENDS变量
yocto-第40篇-beaglebone-yocto.conf配置分析之u-boot
yocto-第41篇-beaglebone-yocto.conf配置分析之kernel

  • 关键词:arm machine qemu local.conf build 编译 work beaglebone PREFERRED PROVIDER virtual/kernel meta-yocto-bsp 目录 device tree dtb MACHINE_EXTRA_RRECOMMENDS u-boot UBOOT* SERIAL_CONSOLES ?= ??= := DEFAULTTUNE tune KERNEL_IMAGETYPE KERNEL_DEVICETREE KERNEL_EXTRA_ARGS MACHINE_FEATURES IMAGE_BOOT_FILES

bb文件编写知识

介绍bb、bbappend、bbclass、inc文件相关知识和实践

yocto-第42篇-bb文件中的几个关键词require DEPENDS inherit
yocto-第34篇-旧版的yocto或者devtool使用不了时如何修改开源项目源码
yocto-第43篇-bb文件中函数实操演示(1)
yocto-第44篇-bb文件中函数实操演示(2)
yocto-第45篇-bb文件中函数实操演示(3)继承自己的class
yocto-第46篇-如何添加自己的函数作为recipe的任务
yocto-第47篇-bb文件中如何获取源码或指定本地目录
yocto系列讲解 (变量篇) 63 - SRC_URI和SRC_DIR的区别
yocto系列讲解 (技巧篇) 64 - bb文件中字符串拆分和拼接简单示例

  • 关键词:bb append bbclass inc inherit require DEPENDS vim 修改 shell python 函数 function do_* 继承 class 类函数 recipe 任务 addtask deltask nostamp noexec EXTRNALSRC git download wget fetch FILESEXTRAPATHS SRC_URI SRC_DIR 字符串处理 split

conf配置

介绍meta*/conf/machine目录中的一些配置内容讲解

yocto-第48篇-meta目录中conf里的配置项小札

  • 关键词:DISTRO VARIANT PACKAGE_DEBUG_SPLIT_STYLE SERIAL_CONSOLE ARM_INSTRUCTION_SET FULL_OPTIMIZATION ENABLE_BINARY_LOCALE_GENERATION USE_LDCONFIG PREFERRED_VERSION USE_DEVFS DEPLOY_DIR_IMAGE PACKAGE_ARCH ARCH

实际平台举例

结合自己的高通平台msm8909来讲述如何完成boot、system和aboot等镜像从无到有的制作

yocto-第51篇-实战举例之制作boot.img
yocto-第52篇-实战举例之制作system/rootfs文件系统
yocto-第53篇-实战举例之制作bootloader
yocto系列讲解 (实战篇) 65 - system根文件系统大小问题

  • 关键词:kernel qcom qualcomm apq8009 msm8909 msm boot.img mkbootimg libmincrypty native defconfig dts zImage-dtb zImage ext4 system rootfs 文件系统 virtual/kernel virtual/bootloader multiple definition Error code 302e bb.utils.contains python python3 HOSTTOOLS aboot lk

技巧篇汇总

yocto系列讲解 (技巧篇) 72 - BBCLASSEXTEND变量的作用
Yocto系列讲解 (技巧篇) 75 - 创建自己的manifest并使用repo工具
Yocto系列讲解 (技巧篇) 78 - 如何消除meta layer之间的依赖关系问题

实战篇汇总

Yocto系列讲解 (实战篇) 49 - 编译问题汇总及解决方案
yocto系列讲解 (实战篇) 54 - 添加Qt5和生成带Qt5的SDK
yocto系列讲解 (实战篇) 55 - 编译Qt程序和添加Qt的recipe(bb文件)
yocto系列讲解 (实战篇) 58 - 程序开机自启动(sysvinit/init)
yocto系列讲解 (实战篇) 59 - 程序开机自启动(systemd)
yocto系列讲解 (实战篇) 60 - 定义自己的临时配置模板的目录
yocto系列讲解 (实战篇) 70 - meta-iotedge移植笔记
yocto系列讲解 (实战篇) 71 - busybox配置相关内容

  • 关键词:Qt5 systemd sysvinit init conf templateconf conf.sample iotedge 微软 busybox BBFILE_COLLECTIONS

  • to be continue ~

给我点个赞加个关注呗!万分感谢!
在这里插入图片描述