添加west扩展命令

使用west工具的帮助命令,west -h,不仅可以列出west工具的内置命令,也可以列举当前工程中实现的扩展命令,如build,flash等。

本文将介绍如何添加扩展命令。

west扩展命令的位置通过以下方式查找:

1. 首先找到工程中.west目录的config文件,打开config,查看以下两个值:

        1)path参数的值,默认为zephyr。

        2)file参数的值,默认为west.yml。

[manifest]
path = zephyr
file = west.yml[zephyr]
base = zephyr

2)根据path参数和file参数的值,找到对应的文件,默认为zephyr/west.yml。

在west.yml文件中,可以看到以下配置,即west扩展命令在scripts/west-commands.yml文件中定义。

  self:path: zephyrwest-commands: scripts/west-commands.ymlimport: submanifests

3)如下代码所示,west-commands.yml文件中列举了当前工程支持的扩展命令,以及每个扩展命令的名称和对应的python文件。

# Keep the help strings in sync with the values in the .py files!
west-commands:- file: scripts/west_commands/completion.pycommands:- name: completionclass: Completionhelp: output shell completion scripts- file: scripts/west_commands/boards.pycommands:- name: boardsclass: Boardshelp: display information about supported boards- file: scripts/west_commands/build.pycommands:- name: buildclass: Buildhelp: compile a Zephyr application

接下来,可以按照以下步骤添加一个新的扩展命令。

1)在west-commands.yml文件中添加一个新的命令。命名为new_cmd,对应的python文件为new_cmd_file.py。

注:file,name,class,help可以根据需要添加任意名称和字符串。

# Keep the help strings in sync with the values in the .py files!
west-commands:- file: scripts/west_commands/new_cmd_file.pycommands:- name: new_cmdclass: new_cmd_classhelp: this is a new command- file: scripts/west_commands/completion.pycommands:- name: completionclass: Completionhelp: output shell completion scripts- file: scripts/west_commands/boards.pycommands:- name: boardsclass: Boardshelp: display information about supported boards

2)在west_commands目录中添加west-commands.yml文件中定义的文件new_cmd_file.py。

其中,class应该与west-commands.yml文件中定义的class一致。此外,需要实现do_add_parser和do_run函数,这两个函数将在执行west扩展命令时自动被调用。

import argparse
from zephyr_ext_common import ForceableUSAGE = '''\
This is new command USAGE.
'''DESCRIPTION = f'''\
This is new command DESCRIPTION.
'''class new_cmd_class(Forceable):def __init__(self):super(new_cmd_class, self).__init__('new_cmd',# Keep this in sync with the string in west-commands.yml.'this is a new command',DESCRIPTION,accepts_unknown_args=True)print("__init__ function of new command!")def do_add_parser(self, parser_adder):parser = parser_adder.add_parser(self.name,help=self.help,formatter_class=argparse.RawDescriptionHelpFormatter,description=self.description,usage=USAGE)print("do_add_parser function of new command!")return parserdef do_run(self, args, remainder):print("do_run function of new command!")

通过west -h帮助命令查看以上扩展命令是否成功添加。可以看出,扩展命令中已经包含new_cmd命令。

执行扩展命令,west new_cmd,如下log所示,__init__函数,do_add_parser函数和do_run函数依次被调用。

通过以上步骤,新的扩展命令已经添加完成,接下来可以根据需求进一步开发,完善扩展命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka消息积压处理方案

背景: 某值班的一天,生产出现消息积压问题,对此类的问题做出快速应对方案来避免同类型问题,防止影响范围进一步的扩大。 出现消费积压后如何处理: 首先优先处理消息积压,如果代码逻辑问题,立…

【第12章】SpringBoot实战篇之文件上传(含阿里云OSS上传)

文章目录 前言一、本地文件上传二、阿里云OSS上传1. 环境准备2.安装SDK3.使用长期访问凭证3.1 获取RAM用户的访问密钥3.2 配置RAM用户的访问密钥(Linux)3.3 从环境变量中获取RAM用户的访问密钥 4. 工具类5.使用 总结 前言 本章节介绍本地文件上传和阿里云OSS上传。 一、本地文…

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 目录 Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 一、简单介绍 二、轮船人员获救预测实战 三、数据处理 1、导入数据 2、对缺失数据的列进行填充 3、属性转换,把某些列的字符串值…

LSTM-Adaboost基于双向长短期记忆网络结合集成学习实现股价预测附matlab代码

% 股价预测 - LSTM-Adaboost集成学习 % 加载股价数据 load(‘stock_data.mat’); % 假设数据已经存储在stock_data.mat文件中 prices stock_data.prices; % 假设股价数据存储在名为prices的变量中 % 数据预处理 normalized_prices (prices - mean(prices)) / std(prices); …

数组中寻找符合条件元素的位置(np.argwhere,nonzero)

今天遇到一个问题,就是寻找符合条件的元素所在的位置,主要使用np.argwhere和nonzero函数 比如给我一个二维数组,我想知道其中元素大于15的位置 方法1 import numpy as np exnp.arange(30) enp.reshape(ex,[3,10]) print(e) print(e>15…

南山代理记账,为您提供专业、高效的服务和全方位的支持

随着商业活动的不断深化和扩展,企业的会计工作越来越重要,而作为一家专业的代理记账公司,“南山代理记账”始终致力于为客户提供专业、高效的服务,帮助他们在经营过程中更好地管理和运用资金。 南山代理记账公司的服务范围广泛&am…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文 今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界,实在劝不动。他真的太逆天了,我不清楚这么高学历的人,怎么能说出这么天真的话。逆天又离谱。 晚上的时间几乎全在做家务。平时晚上都是跳舞来着&#xff0c…

mac安装brew遇到的一些问题

mac终端执行命令/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”,无法建立连接或连接超时错误,错误信息如下: curl: (28) Failed to connect to raw.githubusercontent.com port 443 af…

标准价与移动平均价简介

一、移动平均价 移动平均价优点: a.移动平均价格可反应”实时的”加权平均价格,特别是物料价格涨跌幅度大时物料的价格不会被差异扭曲。 b.因为是基于交易的实时加权平均计算价格,一般情况下,移动平均价不产生差异,价格相对真实。 c.如果所有的物料都使用…

module ‘django_cas_ng.views‘ has no attribute ‘login‘

这个错误表明你正在尝试从django_cas_ng.views模块中访问一个名为login的属性,但是这个模块中并没有名为login的属性或方法。 解决这个问题,你需要确认你的代码中是否有错误的引用。django_cas_ng是一个CAS(Central Authentication Service&…

mqtt-emqx:keepAlive机制测试

mqtt keepAlive原理详见【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面开始写测试代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…

Ubuntu项目部署

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量&#xff1a; vim ~/.bashrc export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 设置环境变…

Python中的面向对象编程(OOP):概念、实践与优势

Python中的面向对象编程(OOP):概念、实践与优势 面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计模型,它将对象作为程序的基本单元,以提高代码的可重用性、灵活性和扩展性。Python作为一种高级编程语言,对OOP提供了强大的支持。本文将详细阐述Pyth…

武汉理工大学 云计算与服务计算 期末复习

云计算与的定义 长定义是&#xff1a;“云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上&#xff0c;使各种应用系统能够根据需要获取计算力、存储空间和信息服务。” 短定义是&#xff1a;“云计算是通过网络按需提供可动态伸缩的廉价计算服务。 云计…

Lecture1——对最优化的介绍

一&#xff0c;简介——什么是最优化&#xff1f; 1&#xff0c;三种问题&#xff1a; 用80米的围栏尽可能的围成一个面积最大的矩形如何规划产品的生产&#xff0c;使得公司获得的利润最大给你一个图&#xff08;Graph&#xff09;&#xff0c;如何获得最短的距离 2&#xf…

MATLAB基础应用精讲-【数模应用】主成分(pca)分析(补充篇)(附MATLAB、R语言和python代码实现)

目录 前言 几个高频面试题目 主成分分析(PCA)与独立成分分析(ICA) 1. 技术背景 2. 主成分分析 3. 独立成分分析 算法原理 数据降维 PCA 涉及的主要问题 PCA 的优化目标 主成分分析(PCA)的基本思想 数学模型 协方差和散度矩阵 PCA的推导:基于最小投影距离 ​…

matlab BP神经网络

clear clc % 准备数据 inputs rand(10, 100); % 100组输入&#xff0c;每组10个特征 outputs rand(1, 100); % 100组输出&#xff0c;每组1个输出值 % 将数据分成训练集和测试集 trainRatio 0.8; valRatio 0.1; testRatio 0.1; [trainInd, valInd, testInd] divid…

数据结构笔记2 栈和队列

为什么在循环队列中&#xff0c;判断队满的条件是&#xff08;Q.rear1&#xff09;模maxqsize? 取模运算&#xff08;%&#xff09;在循环队列中起到关键作用&#xff0c;主要是因为它能确保索引值在数组的有效范围内循环。具体来说&#xff0c;取模运算有以下几个重要作用&am…

【Go语言精进之路】构建高效Go程序:了解切片实现原理并高效使用

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、切片究竟是什么&#xff1f;1.1 基础的创建数组示例1.2 基础的创建切片示例1.3 切片与数组的关系 二、切片的高级特性&#xff1a;动态扩容2.1 使用 append 函数扩容2.2 容量管理与性能考量2.3 切片的截取与缩容 三…

底板外设倒灌到处理器分析

在嵌入式系统中&#xff0c;底板外设通常与处理器通过各种接口&#xff08;如UART、SPI、I2C、GPIO等&#xff09;进行连接。这些外设可能包括传感器、执行器、存储器、通信模块等。倒灌是指当外设向处理器提供的信号电平超出了处理器能够接受的范围&#xff0c;导致处理器无法…