Yocto学习笔记
1. 指定SRCREV的例子
#kernel-module-m8887-wlan.bb
DESCRIPTION = "Marvell M8887 Wifi kernel module" require include/rcar-gen3-modules-common.inc LICENSE = "GPLv2 & MIT"
LIC_FILES_CHKSUM = " \
file://m8887/wlan/gpl-2.0.txt;md5=ab04ac0f249af12befccb94447c08b77 \
" inherit module
DEPENDS = "linux-renesas"
PV = "15.44"
PR = "r4" MARVELL_M8887_URL = "git://xxx/wireless.git"
BRANCH = "master"
BRANCH_board1 = "board1/master"
BRANCH_board2 = "board2/master" # 若使用SRCREV=${AUTOREV} 使用AUTOREV不能编译旧版本的软件! (也就是checkout回去后,${AUTOREV}还是目前最新版的软件!)
# 使用externalsrc来直接编译源码目录下的代码,也可以不用每次都烦着更改SRCREV的值
SRCREV = "57341238a98b2752546b4de461f442dc4161f578" SRC_URI += "${MARVELL_M8887_URL};protocol=ssh;branch=${BRANCH}" S = "${WORKDIR}/git"
WLAN_SRCDIR = "${S}/m8887/wlan" module_do_compile() {
# make marvell build-sys happy
cd ${WLAN_SRCDIR}
make
} module_do_install() {
install -d ${D}/lib/modules/${KERNEL_VERSION}/extra/
install -d ${D}/etc/modprobe.d/
install -m ${WLAN_SRCDIR}/wlan.conf ${D}/etc/modprobe.d/wlan.conf
install -m ${WLAN_SRCDIR}/mlan.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/
install -m ${WLAN_SRCDIR}/sd8xxx.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/
} PACKAGES += "kernel-module-mlan kernel-module-sd8xxx" RDEPENDS_kernel-module-mlan_append = " marvell-m8887-fw-cal"
RDEPENDS_kernel-module-sd8xxx_append = " marvell-m8887-fw-cal" FILES_${PN} += "\
/etc/modprobe.d/ \
"
2. 使用externalsrc时刻编译最新代码,又不会影响编译旧版本软件
inherit externalsrc # a dummy local SRC_URI entry, it is used to cheat kernel.class to prepare
# STAGING_KERNEL_DIR so building out-of-tree kernel module runs smoothly
SRC_URI_append = " file://foo" EXTERNALSRC = "${TOPDIR}/../source_code/linux"
EXTERNALSRC_BUILD = "${WORKDIR}/build"
3.externalsrc编译软件来避免bb文件时刻由于git hash值与源文件保持同步
SUMMARY = "Marvell M8887 BT Kernel module" require include/rcar-gen3-modules-common.inc LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f402" inherit module externalsrc
DEPENDS = "linux-renesas"
PV = "15.44"
PR = "r4" EXTERNALSRC = "${TOPDIR}/../source/wireless/m8887/muart_bt" #这个就是S目录
EXTERNALSRC_BUILD = "${WORKDIR}/build" #这个就是B目录,编译时(run.compile中)首先cd到这个目录下然后进行编译! EXTRA_OEMAKE += "BOARD=${MACHINE}" do_compile() {
cp -r ${B}/* ${WORKDIR}/build/ # 也可以写成 cp -r $(S)/* $(B)
module_do_compile
} do_install() {
install -d ${D}/lib/modules/${KERNEL_VERSION}/extra/ #D目录是文件系统的根目录
install -m 644 ${B}/hci_uart.ko ${D}/lib/modules/${KERNEL_VERSION}/extra/
}
4.bb文件中的EXTRA_OEMAKE = "BOARD_NAME=g8s" 会以宏BOARD=g8s的方式传给Makefile
5.有时bitbake时报elf文件"No GNU Hash",使用下面忽略 INSANE_SKIP_${PN} = "ldflags" INSANE_SKIP_${PN}-dev = "ldflags"
6.kernel-module-m8887-bt/15.44-r4/temp/run.do_compile(使用file看是个shell脚本)里面导出了各种变量且写明了编译方法。 (1)可以在bb文件中重写module_do_compile(),可以修改其O指定的路径 module_do_compile() { oe_runmake xxxx O=PATH1 } (2)复写do_compile函数 do_compile() { cp -r ${S}/* ${B}/ module_do_compile } bb文件中可以复写run.do_compile中的函数
7.run.do_configure run.do_install run.do_package 这些文件在写bb文件时也可以参考。
Yocto学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- EF-生成迁移版本
前面讲到可以使用迁移技术让程序自动更新数据库中相关的结构.在我们每次需要新增模型类时,请一定要养成一个好的习惯,使用Add-Migration命令生成迁移版本.这样能恢复被误删除的表. 一.新增迁移版 ...
- jdk8-Optional类
概念: package com.atguigu.java8; import java.util.Optional; import org.junit.Test; /* * 一.Optional 容器类 ...
- 深入理解java虚拟机---对象的创建过程(八)
1.对象的创建过程 由于类的加载是一个很复杂的过程,所以这里暂时略过,后面会详细讲解,默认为是已加载过的类.着重强调对象的创建过程. 注意: 最后一步的init方法是代码块和构造方法. 以上是总图,下 ...
- netty pipeline.addLast
pipeline有一个主要的实现类 DefaultChannelPipeline ,addLast顾名思义,就是在处理器链的最后添加一个channelHandler. 代码如下:@Override ...
- EffecJava Method
坚持使用Overrider注解,可以预防我们并没有重载的情况出现. 除非使用者绝对安全,不然使用保护性拷贝,可以使程序安全. public class Period {//没有拷贝安全 private ...
- oracle sequence
代码块 方法一: (1)删除序列; (2)重新创建: 这个方法比较简单粗暴. drop sequence sequence_name; create sequence sequence_name mi ...
- 界面设计-Edit控件的Style设置
以下文字转贴ChinaCock QQ 223717588群: 1. 首先在Form上放一个TEdit类型控件Edit1,最终的效果如下图: 2.选中控件Edit1,点击鼠标右键,在弹出菜单中选择“Ed ...
- python点滴:判断字符串是否为合法json格式
在一些情况下,我们需要判断字符串是否为合法json格式. 思路很简单:尝试对字符串使用json.loads(),如果不是合法json格式,则会抛出ValueError异常. 示例如下: import ...
- outlook vba开发要点
1.学学基础的VB语法 https://www.yiibai.com/vba/vba_programming_charts.html 2.找一个样例看看 VBA编程实现自动回复邮件 https://b ...
- phpstorm使用zen coding 快速编辑补全html/css代码
百科定义: 使用仿CSS选择器的语法来快速开发HTML和CSS ——由Sergey Chikuyonok开发. Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上 ...