Yocto开发讲解系列总纲

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

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语法修改方法
Yocto系列讲解[理论篇]76 - 某些小技巧简单札记

  • 关键词: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系列讲解[技巧篇]77 - 用Package Groups的方式控制安装软件包组
yocto系列讲解[技巧篇]78 - 如何消除meta layer之间的依赖关系问题
Yocto系列讲解[技巧篇]81 - 如何打patch修复打补丁出错的recipe
Yocto系列讲解[技巧篇]82 - 静态库编译问题

实战篇汇总

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配置相关内容
Yocto系列讲解[实战篇]73 - 编译dtbo和制作dtbo.img镜像包
Yocto系列讲解[实战篇]74 - 用Kbuild构建外部Linux驱动模块组
Yocto系列讲解[实战篇]79 - 如何优雅的创建一个API接口项目
Yocto系列讲解[实战篇]80 - 如何优雅的引用API接口项目
Yocto系列讲解[实战篇]84 - systemd中mount文件的一点知识
Yocto系列讲解[实战篇]85 - 制作ubi镜像和自动挂载ubifs文件系统

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

Yocto编译问题汇总

Yocto系列讲解[编译篇]83 - 解决编译gstreamer1.0问题

  • to be continue ~

给我点个赞加个关注呗!万分感谢!

Yocto开发讲解系列 - 总目录相关推荐

  1. Rockchip开发系列 - 总目录

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

  2. 100天精通Oracle-实战系列 - 总目录

    100天精通Oracle-实战系列 总目录 一.Oracle 入门安装 二.Oracle RMAN 备份恢复 三.Oracle 数据泵系列 四.Oracle RAC 高可用 五.Active Data ...

  3. 高通开发系列 - 总目录

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

  4. 游戏开发入门系列(目录)

    更新:清华大学美术学院与腾讯游戏学院合作推出了一个新的游戏开发入门课程,相比原来的内容要更丰富一些,我个人也更推荐这门课程,链接如下. https://next.xuetangx.com/course ...

  5. 自己动手搭建网站系列总目录

    引言 说起来,博主从学习计算机相关知识那天开始,就对自己动手搭建网站有着一种莫名的憧憬与向往.只是那时所学实在太少,撑不起这个想法,也没想着用一些自助建站工具什么的,感觉用起来少了点意思,而且也挺麻烦 ...

  6. 【微信小程序-原生开发】系列教程目录(已完结)

    01-注册登录账号,获取 AppID.下载安装开发工具.创建项目.上传体验 https://sunshinehu.blog.csdn.net/article/details/128663679 02- ...

  7. 微信开发专栏(总目录)

    一.微信公众号 1.准备工作 windows下安装cpolar 申请微信公众账号测试号 微信开发中好用的开源项目 2.开发环境搭建 微信公众号开发环境搭建的那些事 二.微信小程序

  8. 思维【敏捷开发ACP】总目录

    1.敏捷历史之 PMP.ACP 及 CMMI 介绍_YYDataV的博客-CSDN博客_pmp和cmmi区别2.1 敏捷历史软件工程和项目管理的历史要从1910年说起,美国福特汽车公司(简称" ...

  9. 嵌入式笔试面试系列 - 总目录

    欢迎大家来到嵌入式笔试面试题目系列,本系列文章总结各大公司嵌入式笔试面试题目,助力大家拿到心仪 offer. 总结文章两篇: 我的 2021 秋招记录 2021秋招嵌入式笔试面试题目汇总 如下笔试面试 ...

最新文章

  1. html中怎么使用数字轮播,【求助】页面上显示几个数字,打开html的时候希望能滚动起来...
  2. 【SpringBoot】Spring boot 测试类 找到不到MySQL 驱动
  3. 分组聚合查询两门以上MySQL_MySQL中的分组聚合查询
  4. OSPF中 HELL0包解析
  5. 聚合支付的钱先到哪?一文让你读懂什么是聚合支付
  6. 在c语言中下列类型属于构造地震,C语言课后习题解析及答案
  7. GitLab 如何删除 Forked from
  8. 4、Mac下的谷歌浏览器输入不安全网址点高级后没有继续前往链接解决办法
  9. winform中rdlc报表配置
  10. iPhone,iPad如何获取WIFI名称即SSID
  11. hadoop集群-单词统计
  12. 南京标志设计-logo设计(品牌形象核心部分)
  13. owt webrtc 音频没有声音
  14. 自定义maven archetype,上传到nexus,并使用nexus远程的archetype创建项目
  15. r5 5500u和r7 5700u哪个好 r55500u和r75700u区别有多大
  16. 程序语言排行榜有哪些
  17. 黑盒测试技术(边界值分析法)——软件质量保证与测试
  18. 什么是SSL证书它有什么作用?
  19. SQLServer控制用户访问权限表
  20. 1.Python3.6环境部署

热门文章

  1. zblog 全站ajax,ZBlog全站缓存
  2. 【智能优化算法】蚁群算法ACO
  3. java Excel导出功能之 不固定列表格
  4. 【英语演讲】Simulation Test 模拟测试
  5. 网站镶嵌网站显示代码
  6. metamask连接不上本地私有节点,报错“无法获取链 IC,您的 RPC URL 地址是正确的么”
  7. Googlenet v1、v2、v3、v4区别
  8. linux 重试密码次数超,Linux中密码策略
  9. 移动端扫码上传数据信息
  10. Unity3D 模型大小,面数,贴图大小,骨骼数量规范(一)