Yocto开发讲解系列-总⽬录
Yocto开发讲解系列总纲
Yocto开发专栏前⾔
欢迎读者盆友光临fulinux的《Yocto开发讲解系列》专栏!
本⼩编有10年软件开发经历和丰富的Yocto开发经验,我最早接触Yocto是在做Freescale的imx6平台的时候,那个时候也是瞎折腾,压根就搞不清楚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 qemu bitbake ⼊门
Yocto理论篇
让⼤家对Yocto有个简单的认识,介绍⼀些概念、⽬录、⼯具和变量等:
关键词:bitbake recipe class ⽤户配置 Distro BSP Software Layer 版本 honister
Metadata Layer
介绍meta layer的⼀些知识和⽰例:
腹部训练关键词:poky bitbake meta layer model create mylayer
BitBake⼯具
介绍bitbake、构建全过程、使⽤到的变量和任务,实战演⽰等:丝路花雨观后感
关键词:
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,安装,和实战演⽰:
关键词:toolchain SDK gcc arm-linux-gcc 交叉编译器
Linux内核和驱动模块
筋疲力尽>济南菜
介绍Yocto中的Linux kernle和driver module驱动模块:
关键词:Linux kernel driver hello module bb mylayer recipe modprobe rmmod defconf menuconfig device tree dts dtb devtool layer
⽂件系统相关
介绍⽂件系统相关的内容:
关键词:rootfs only-read 只读 分区⼤⼩ image
devtool开发⼯具
介绍devtool⼯具,举了⼀个helloyocto和git项⽬的的例⼦,来演⽰如何添加和修改软件项⽬,以及如何集成。
关键词:devtool add modify helloyocto learnyocto workspace qemu finish bb edit-recipe update-recipe upgrade version vim 开源项⽬ 删除 打包
Toaster使⽤
介绍Toaster,讲解Yocto如何借助Toaster⽹页在线直观使⽤。
关键词:toaster ⽹页 在线 调试
ARM相关的BSP
结合⼀个ARM的beaglebone虚拟机,讲述相关的kernel u-boot等BSP知识和配置
关键词:arm machine f 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⽂件相关知识和实践
关键词: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⽬录中的⼀些配置内容讲解
关键词: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等镜像从⽆到有的制作
关键词: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 ains python python3 HOSTTOOLS aboot lk
技巧篇汇总
实战篇汇总
中国幸福
关键词:Qt5 systemd sysvinit init conf templateconf conf.sample iotedge 微软 busybox BBFILE_COLLECTIONS
to be continue ~
给我点个赞加个关注呗!万分感谢!