yocto添加层简介

yocto系统为我们提供了很好的制作嵌入式linux基础镜像的途径,yocto默认采用分层结构来组织所有的软件包。下面介绍一下如何在yocto上创建一个层以及如何使用该层。我们的目标是向linux内核源代码打patch,我们不希望去修改yocto目前已有的层,我们自己创建一个层来实现对linux内核打patch的工作,这样即使yocto的linux内核层在以后的版本中出现变更也不会影响到我们自己创建的层。

1、生成linux patch文件。作为例子我们向linux内核的init/calibrate.c文件中添加开机启动打印信息,具体patch文件如下:

diff --git a/init/calibrate.c b/init/calibrate.c
index fda0a7b..01e3a5f 100644
--- a/init/calibrate.c
+++ b/init/calibrate.c
@@ -265,6 +265,12 @@ void __cpuinit calibrate_delay(void)
        static bool printed;
        int this_cpu = smp_processor_id();
 
+       printk("*************************************\n");
+       printk("*                                   *\n");
+       printk("*        HELLO YOCTO KERNEL         *\n");
+       printk("*                                   *\n");
+       printk("*************************************\n");
+
        if (per_cpu(cpu_loops_per_jiffy, this_cpu)) {
                lpj = per_cpu(cpu_loops_per_jiffy, this_cpu);
                if (!printed)
该patch名称为0001-calibrate-Add-printk-example.patch。

2、在poky同级目录下创建一个新目录meta-mylayer,并且在该目录下生成conf, recipes-kernel/linux/linux-yocto目录结构;

3、在meta-mylayer/conf目录下创建新层的配置文件layer.conf,layer.conf的具体内容如下:

# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "mylayer"
BBFILE_PATTERN_mylayer = "^${LAYERDIR}/"
BBFILE_PRIORITY_mylayer = "5"

4、在meta-mylayer/recipes-kernel/linux/目录下生成linux-yocto_3.10.bbappend文件,该文件用于通知bitbake有新的内容要加载到linux-yocto编译过程中,具体linux-yocto_3.10.bbappend文件内容如下:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += "file://0001-calibrate-Add-printk-example.patch"

5、将生成的.patch文件放在meta-mylayer/recipes-kernel/linux/linux-yocto/目录下;

到此,新建的层已经完毕。该层的具体目录结构如下:

meta-mylayer/
├── conf
│   └── layer.conf
└── recipes-kernel
    └── linux
        ├── linux-yocto
        │   └── 0001-calibrate-Add-printk-example.patch
        └── linux-yocto_3.10.bbappend
6、使能新加入的层。修改build/conf/bblayer.conf文件,将新加入的层添加到bblayer.conf文件中,即:

BBLAYERS += " ${BSPDIR}/sources/meta-mylayer"

7、重新编译打patch的源代码包。

# bitbake -c cleansstate linux-yocto

# bitbake -k linux-yocto

8、验证打patch后的内核。

# runqemu qemux86

# dmesg | less

到此,在yocto上如何添加一层介绍完毕。

时间: 2024-08-08 01:18:32

yocto添加层简介的相关文章

如何向caffe中添加层

修改caffe\src\caffe\proto\caffe.proto 在最后添加centerloss层的参数信息 message CenterLossParameter { optional uint32 num_output = 1; // The number of outputs for the layer optional FillerParameter center_filler = 2; // The filler for the centers // The first axis

一 Django模型层简介

模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文件中的INSTALLED_APPS中添加模型所在的应用名称 字段类型 模型中的每个字段都是Field类相应的实例,django根据Field类型来确定以下信息: 列类型,告知数据库要存储那种数据 渲染表单时使用的默认HTML widget 验证,被用在admin和表单中 通用字段参数(常用) nul

caffe-windows添加层

最近接触到Fine-Grained Classification, 其中的经典方法Bilinear CNN用到了Bilinear Layer, L2-normlize Layer, signed-sqrt Layer等 这些层在caffe-windows已经BVLC版caffe中是不存在的,若想应用的话需要将上述层添加到caffe工程 https://github.com/gy20073/compact_bilinear_pooling/tree/master/caffe-20160312 好在

计算机网络——网际层简介

网际协议IP是TCP/IP体系中两个最主要的协议之一.也是最重要的因特网标准协议之一. 地址解析协议ARP 网际控制报文协议ICMP 网际组管理协议IGMP 虚拟互连网络 没有一种单一的网络能够适应所有用户的需求. 从一般的概念上来讲,将网络互相连接起来要使用一些中间设备.根据中间设备所在的层次,可以有四种中间设备: (1)物理层使用的转发器 (2)数据链路层使用的网桥或桥接器 (3)网络层使用的路由器 (4)网络层以上使用的网关 当中间设备是转发器或是网桥时,仅仅将网络扩大,而从网络层的角度看

【LeetCode题目记录-7】为完全二叉树添加层指针

Populating Next Right Pointers in Each Node Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } Populate each next pointer to point to its next right node. If there is no next right node, the next

iOS:CALayer核心动画层

CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView,而是CALayer CALayer是核心动画的基础,可以做圆角.阴影.边框等效果 每个UIView内部都有一个Layer的属性 在实现核心动画时,本质上是将CALayer中的内容转换成位图,从而便于图形硬件的操纵 UIView的CALayer基本演练: 演练设置UIView中的CALayer属性 –

系统架构师-基础到企业应用架构-数据访问层

一.上章回顾 上篇我们简单讲述了服务层架构模式中的几种,并且讲解了服务层的作用及相关的设计规范,其实我们应该知道,在业务逻辑层中使用领域模型中使用服务层才 能发挥出最大的优势,如果说我们在业务逻辑层还是使用非领域模型的模式话,服务层的作用仅体现在解耦作用.其实在业务逻辑层采用领域模型时,我们前面说的持 久化透明的技术,其实我们可以通过服务层来做,我们在服务层中处理领域对象信息的持久化操作.当然本篇可能不会深入讨论持久化透明的具体实现,后面会单独开 篇来讲述,我们先来回顾下上篇讲解的内容:  上图

OSI七层以及各层上的协议

各层简介: [1]物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特. [2]数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据的可靠传输. [3]网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择,Internet的发

层的应用

(层)Laye:是处理玩家事件响应的Node子类.与场景不同,层通常包含的是直接在屏幕上呈现的内容,并且可以接受用户的输入事件,包括触摸,加速度计和键盘输入等.我们需要在层中加入精灵,文本标签或者其他游戏元素,并设置游戏元素的属性,比如位置,方向和大小:设置游戏元素的动作等.通常,层中的对象功能类似,耦合较紧,与层中游戏内容相关的逻辑代码也编写在层中,在组织好层后,只需要把层按照顺序添加到场景中就可以显示出来了.要向场景添加层,我们可以使用addChild方法. 可以通过下面的三个类设置层的属性