嵌入式linux之yocto(六)devtool往返开发

article/2025/9/29 1:24:31

1. 参考

yocto官方文档-devtool
微信读书:嵌入式Linux系统开发:基于Yocot Project
书中对于devtool讲解较少,官方文档对devtool的工作流和使用方法较为详细。
传统开发内核是直接进入内核路径修改源码,这里简述使用devtool工具开发Linux内核。

2. 创建工作空间

/* 1. 创建工作空间 */
~/yocto$ source poky/oe-init-build-env qemux86-64-build/
~/yocto/qemux86-64-build$ devtool create-workspace ../my-workspace
~/yocto/qemux86-64-build$ cat conf/bblayers.conf
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"BBPATH = "${TOPDIR}"
BBFILES ?= ""BBLAYERS ?= " \/home/ubuntu18/yocto/poky/meta \/home/ubuntu18/yocto/poky/meta-poky \/home/ubuntu18/yocto/poky/meta-yocto-bsp \/home/ubuntu18/yocto/meta-mylayer \/home/ubuntu18/yocto/my-workspace \"创建工作空间后自动加载到bblayers.conf文件中。

3. 追加内核菜谱

/* 1. 追加内核菜谱 */
~/yocto/qemux86-64-build$ devtool modify linux-yocto
INFO: Copying kernel config to workspace
INFO: Recipe linux-yocto now set up to build from /home/ubuntu18/yocto/my-workspace/sources/linux-yocto
~/yocto/my-workspace$ tree -L 2
.
├── appends
│   └── linux-yocto_5.14.bbappend
├── conf
│   └── layer.conf
├── README
└── sources└── linux-yocto4 directories, 3 files可以看到,这里使用linux-yocto_5.14.bbappend追加linux内核菜谱。

4. 修改内核

/* 1. 修改内核 */
~/yocto/qemux86-64-build/my-workspace/sources/linux-yocto/init$ vim calibrate.c这里我们并没有在tmp/work/qemux86_64-poky-linux/linux-yocto/5.14.21+git999-r0/linux-yocto-5.14.21+git999路径
下修改内核源码,而是是my-workspace/sources/linux-yocto下修改源码。
记得使用Git开发。

6

/* 2. 验证 */
~/yocto/qemux86-64-build$ devtool build-image myimage
~/yocto/qemux86-64-build$ runqemu qemux86-64
root@qemux86-64:~# dmesg | grep -i DEVTOOL
*****DEVTOOL YOCTO KERNEL*****这里并未用bitbake构建镜像,而是使用了devtool build-image命令,可以进行快速测试。

5. 生成菜谱

devtool只是用于临时开发的,开发完成后,需要固化我们的成果。

buntu20@ubuntu20:~/yocto/qemux86-64-build$ devtool finish linux-yocto ../meta-mylayer
NOTE: Starting bitbake server...
ERROR: Source tree is not clean:M init/calibrate.cEnsure you have committed your changes or use -f/--force if you are sure there's nothing that needs to be committed这是没有将修改的内核源码进行暂存和提交,使用可视化界面或命令行,提交修改。
命令行如下:
~/yocto/qemux86-64-build/workspace/sources/linux-yocto$ git add -u
~/yocto/qemux86-64-build/workspace/sources/linux-yocto$ git commit -m '2022-04-16'
/* 生成菜谱 */
~/yocto/qemux86-64-build$ devtool finish linux-yocto ../meta-mylayer
INFO: Would remove config fragment /tmp/devtoole_u2lkyq/tmpvg15jgp5/devtool-fragment.cfg
NOTE: Writing append file /home/ubuntu18/yocto/meta-mylayer/recipes-kernel/linux/linux-yocto_%.bbappend
NOTE: Copying 0001-2022-04-16.patch to /home/ubuntu18/yocto/meta-mylayer/recipes-kernel/linux/linux-yocto/0001-2022-04-16.patch
INFO: Cleaning sysroot for recipe linux-yocto...
INFO: Leaving source tree /home/ubuntu18/yocto/my-workspace/sources/linux-yocto as-is; if you no longer need it then please delete it manually
/* 查看myta-mylayer */
~/yocto/meta-mylayer$ tree
.
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
├── recipes-example
│   └── example
│       └── example_0.1.bb
├── recipes-kernel
│   └── linux
│       ├── linux-yocto
│       │   ├── 0001-2022-04-16.patch
│       └── linux-yocto_%.bbappend
└── recipes-myimage└── myimage└── myimage_0.1.bb8 directories, 8 files可以看到,meta-mylayer生成了recipes-kernel菜谱,内容为补丁文件和追加文件。
/* 查看追加文件 */
~/yocto/meta-mylayer/recipes-kernel/linux$ vim linux-yocto_%.bbappend
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"SRC_URI += "file://0001-2022-04-16.patch"这里指定补丁文件,每次更改,SRC_URI会多一个补丁文件,例如SRC_URI += "0001.patch 0002.patch 0003.patch"
~/yocto/meta-mylayer/recipes-kernel/linux/linux-yocto$ vim 0001-2022-04-16.patch
From 8d83e7994a68138a9707b8bfba4b6aafb4c7a1c6 Mon Sep 17 00:00:00 2001
From: lljwork2021 <lljwork2021@163.com>
Date: Sat, 16 Apr 2022 16:04:26 +0800
Subject: [PATCH] 2022-04-16---init/calibrate.c | 2 ++1 file changed, 2 insertions(+)diff --git a/init/calibrate.c b/init/calibrate.c
index f3831272f113..3c405d04ce5c 100644
--- a/init/calibrate.c
+++ b/init/calibrate.c
@@ -278,6 +278,8 @@ void calibrate_delay(void)static bool printed;int this_cpu = smp_processor_id();+       printk(KERN_INFO "*****DEVTOOL YOCTO KERNEL*****\n");
+if (per_cpu(cpu_loops_per_jiffy, this_cpu)) {lpj = per_cpu(cpu_loops_per_jiffy, this_cpu);if (!printed)看到这,内心是不是很激动!我们的修改成果轻松固化下来。

6. 编译测试

~/yocto/qemux86-64-build$ bitbake myimage
~/yocto/qemux86-64-build$ runqemu qemux86-64
root@qemux86-64:~# dmesg | grep -i DEVTOOL
*****DEVTOOL YOCTO KERNEL*****

http://chatgpt.dhexx.cn/article/RGpFblpR.shtml

相关文章

Chrome Devtool 调试 Javascript

重现错误 单击打开演示。演示在新选项卡中打开。在 Number 1 中输入数字5在 Number 2 中输入数字2点击 Add Number 1 and Number 2 熟悉 Sources 面板 UI 点击Source get-started 是 get-started.html&#xff08;不包括JS&#xff09; get-started.js 就是 get-started 的…

devtool使用介绍(2)

devtool使用介绍2 2.4.2 使用devtool Modify修改现有组件的来源 2.4.2 使用devtool Modify修改现有组件的来源 devtool Modify命令为使用已有代码的现有代码作准备&#xff0c;该代码已具有用于构建软件的本地recipe。 该命令足够灵活&#xff0c;可让你从上游源提取代码&…

webpack——devtool配置及sourceMap的选择

官方手册传送门 官方对devtool配置的定义很简单&#xff1a;选择一种 source map 格式来增强调试过程&#xff0c;不同的值会明显影响到构建build和重新构建rebuild的速度。 不过&#xff0c;什么是source map&#xff0c;官方用提供了许多种的source map&#xff0c;其中的区…

webpack:devtool配置中的source map

webpack&#xff1a;devtool配置中的source map 一、功能作用二、配置文件三、source map格式&#xff08;1&#xff09;source-map&#xff08;2&#xff09;inline-source-map&#xff08;3&#xff09;hidden-source-map&#xff08;4&#xff09;eval-source-map&#xff0…

sourceMap: devtool 模式以及SourceMapDevToolPlugin的使用

1. 什么是sourceMap sourceMap 是一个信息文件&#xff0c; 维护着代码转换编译前后的映射关系; 2. devtool : 选项控制是否生成&#xff0c;以及如何生成 source map source Map对应的模式 1&#xff09;inline 2) cheap 3&#xff09;module 4) eval 5) source-map …

webpack之devtool

关于Devtool 该选项控制是否以及如何生成源映射。官网上给出的可选值有&#xff1a; 其中一些值适合开发&#xff0c;一些用于生产。对于开发&#xff0c;您通常需要快速的Source Maps&#xff0c;以bundle的大小为代价&#xff0c;但是对于生产&#xff0c;您需要独立的Sourc…

chrome devtool使用基础

保存js和css setting > workspace 工作区设置后,自动映射工作区 带绿色图标的文件,不需要请求 blackbox script 黑盒调试,调试不进入第三方代码,只调试项目代码 setting > blackbox 或者鼠标右键设置 network throttling profile 设置网络模式,网速限制,在ne…

Chrome Devtool 使用指南

Chrome Devtool Performance使用指南 运行时性能表现&#xff08;runtime performance&#xff09;指的是当你的页面在浏览器运行时的性能表现&#xff0c;而不是在下载页面的时候的表现。这篇指南将会告诉你怎么用Chrome DevToos Performance功能去分析运行时性能表现。在RAI…

devtool使用

记录点没用的东西 1. 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><version>2.3.2.RELEASE</version> </dependency> 2.pom中加入maven插件 <plugin…

webpack devtool详解

前言 devtool也是之前常用的一个配置&#xff0c;我们稍微了解下吧&#xff0c;不研究太深&#xff0c;毕竟现在都不怎配置他。 内容 devtool是配置sourceMap的。 sourceMap大家都知道&#xff0c;我们本地或者测试环境出了错误&#xff0c;可以在source中迅速定位错误&#x…

devtool配置

devtool配置 一、devtool配置1.source map 源码地图2.webpack中的source map3.对于开发环境 一、devtool配置 1.source map 源码地图 本小节的知识与 webpack 无关 前端发展到现阶段&#xff0c;很多时候都不会直接运行源代码&#xff0c;可能需要对源代码进行合并、压缩、转换…

dev-tool安装方法(手动安装版)

记录一下vue调试神器dev-tool的安装过程&#xff0c;由于是在公司内网&#xff0c;也不方便挂梯子&#xff0c;所以手动安装——下载源码在本地编译&#xff0c;再添加扩展程序的方式安装。过程如下&#xff1a; 一、dev-tool源码获取 git地址&#xff1a;https://github.com/…

一文彻底搞懂webpack devtool

为什么需要Source Map 首先根据谷歌开发者文档的介绍&#xff0c;Source Map一般与下列类型的预处理器搭配使用&#xff1a; 转译器&#xff08;Babel&#xff09;编译器&#xff08;TypeScript&#xff09;Minifiers&#xff08;UglifyJS&#xff09; 为什么呢&#xff1f;…

OpenBmc开发8:devtool简介与使用

1 简介 devtool是yocto中的一个工具&#xff0c;此命令行工具作为可扩展SDK&#xff08;eSDK&#xff09;的一部分&#xff0c;是基础组件。可以使用devtool来帮助构建&#xff0c;测试和打包eSDK中的软件。可以使用该工具有选择地将构建的内容集成到OpenEmbedded构建系统构建…

怎么在navicat(Navicat for MySQL)中运行SQL代码

1、首先在navicat中新建一个数据库&#xff08;之前已经建好数据库&#xff0c;忽略本步&#xff09; 2、点击上图中的“查询”命令 3、再点击“新建查询” 4、系统自动跳出如下图命令窗口 5、可以在命令行中敲代码或直接复制已有代码。如果代码是关于建表&#xff0c;执行成…

使用SQL语句创建数据表

写法一 create table student (sno char(10) primary key,sname varchar(20) not null,ssex char(2),sage smallint,sdept varchar(20),sid char(18) unique)写法二 create table student (sno char(10), sname varchar(20) not null, ssex char(2), sage smallint, sdept v…

SQL代码自动生成器

SQL代码自动生成器&#xff0c;效果图如下&#xff1a; 实现原理很简单&#xff1a; 通过数据库名&#xff0c;获取到数据表名&#xff0c;进而获取到数据字段。通过可视化的选择自定义的添加修改&#xff0c;一步一步完成SQL语句的编写。 其中对于常用的存储过程参数列表的书…

sql语句智能提示插件

1.下载安装 SqlPrompt10 及SQL.Prompt.Keygen注册码生成工具 链接: https://pan.baidu.com/s/1Oa3Ci6o2JjHZMjTXHdCkQg?pwdghew 提取码: ghew 2.修改hosts文件&#xff08;如若跳过此步骤&#xff0c;虽然可以成功&#xff0c;但是重启电脑之后&#xff0c;又得重新操作&a…

sql server代码创建数据库详细过程

1.先打开sql server 2.点击新建查询 3.创建 数据库 主数据文件的大小为5MB&#xff0c;文件【按兆字节】的方式增长&#xff0c;一次增长2MB&#xff0c;最大容量20MB&#xff1b; 事务日志文件大小为4MB&#xff0c;文件【按百分比】的方式增长&#xff0c;一次增长25%&#…

vue实现codemirror代码编辑器中的SQL代码格式化功能

vue实现codemirror代码编辑器中的SQL代码格式化功能 1、首先使用npm安装sql-formatter插件 npm install --save sql-formatter2、然后引入该sql-formatter.js文件 import sqlFormatter from "sql-formatter";3、接下来就是针对需要格式化的代码调用该方法就OK啦 /…