添加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: zephyr
    west-commands: scripts/west-commands.yml
    import: 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.py
    commands:
      - name: completion
        class: Completion
        help: output shell completion scripts
  - file: scripts/west_commands/boards.py
    commands:
      - name: boards
        class: Boards
        help: display information about supported boards
  - file: scripts/west_commands/build.py
    commands:
      - name: build
        class: Build
        help: 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.py
    commands:
      - name: new_cmd
        class: new_cmd_class
        help: this is a new command
  - file: scripts/west_commands/completion.py
    commands:
      - name: completion
        class: Completion
        help: output shell completion scripts
  - file: scripts/west_commands/boards.py
    commands:
      - name: boards
        class: Boards
        help: 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 Forceable

USAGE = '''\
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 parser

    def 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函数依次被调用。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python-自幂数判断

[题目描述]: 自幂数是指,一个N 位数,满足各位数字N 次方之和是本身。例如,153153 是 33 位数,其每位数的 33 次方之和,135333153135333153,因此 153153 是自幂数;16341634 是 44 位数…

react的自定义组件

// 自定义组件(首字母必须大写) function Button() {return <button>click me</button>; } const Button1()>{return <button>click me1</button>; }// 使用组件 function App() {return (<div className"App">{/* // 自闭和引用自…

Springboot 通过SSE 实现实时消息返回

网上搜了好多都是用 SseEmitter 实现的,自己搭的demo确实也可以了,但是我项目里有一个过滤器,死活配置都不行,终于用google搜了一下,第一篇帖子便解决了这个问题,代码和大佬链接如下: https://github.com/CodingChaozhang/spring_boot_practice_demo/blob/master/springboot_s…

基于电荷的EPFL HEMT模型

来源&#xff1a;Charge-Based EPFL HEMT Model&#xff08;TED 19年&#xff09; 摘要 本文介绍了一种面向设计的、基于电荷的模型&#xff0c;用于直流操作下的AlGaAs/GaAs和AlGaN/GaN高迁移率场效应晶体管。该固有模型基于物理原理&#xff0c;不引入任何经验参数。核心概…

vuInhub靶场实战系列--prime:2

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 nmap主机扫描2.1.3 arp-scan主机扫描 2.2 端口扫描…

Hadoop+Spark大数据技术 实验11 Spark 图

17周期末考试 重点从第五章 scala语言开始 比如&#xff1a;映射&#xff08;匿名函数&#xff09; 11.3.1创建属性图 import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD //创建一个顶点集的RDD val users: RDD[(VertexId ,(String,String))] sc.paralle…

技术管理之巅—如何从零打造高质效互联网技术团队阅读体验

技术管理之巅—如何从零打造高质效互联网技术团队 《技术管理之巅&#xff1a;如何从零打造高质效互联网技术团队》是黄哲铿所著的一本书&#xff0c;致力于帮助技术管理者从零开始打造高效的互联网技术团队。该书分为多个章节&#xff0c;分别探讨了从团队文化建设到技术架构…

leetcode 所有可能的路径(图的遍历)

leetcode 链接&#xff1a; 所有可能的路径 1 图的基本概念 1.1 有向图和无向图 左边是有向图&#xff0c;右边是无向图。对于无向图来说&#xff0c;图中的边没有方向&#xff0c;两个节点之间只可能存在一条边&#xff0c;比如 0 和 1 之间的边&#xff0c;因为是无向图&am…

Virtualbox 安装 ubuntu + qemu

0. 前言 关于 Virualbox 安装虚拟机的优秀文章太多了&#xff0c;笔者主要是着重梳理一些安装小细节&#xff0c;利己利人&#xff01;&#xff01; 如果需要保姆式的安装教程&#xff0c;可以查看后续的参考链接。 1. VirtualBox 的安装 直接去官网搜索最近的软件即可&…

汇编:头文件

汇编头文件&#xff08;header files&#xff09;在汇编语言编程中类似于高层语言中的头文件&#xff0c;它们通常包含宏定义、常量定义、数据结构定义、函数声明以及其他在多个汇编源文件中共享的代码&#xff1b;使用头文件可以提高代码的可维护性和可读性&#xff0c;并使代…

IEDA 默认集成依赖概述

IEDA 默认集成依赖概述 目录概述需求&#xff1a; 设计思路实现思路分析 1.Developer Tools:GraalVM Native supportGraphQL DGs Code GenerationSpring Boot DevToolsLombokSpring Configuration ProcessorDocker Compose supportSpring Modulith 2.WebWebSpring WebSpring Re…

SmartEDA赋能学校教育:电子设计学习新篇章,让梦想触手可及!

在数字化时代&#xff0c;电子设计已成为科技创新的重要驱动力。然而&#xff0c;对于许多初学者和在校学生来说&#xff0c;电子设计的学习过程往往充满了挑战和困惑。幸运的是&#xff0c;随着SmartEDA的出现&#xff0c;这一局面正在发生深刻改变。SmartEDA不仅简化了电子设…

司法协助:跨国法律合作的桥梁

在全球化日益深入的今天&#xff0c;跨国法律事务的处理愈发频繁和复杂。司法协助&#xff0c;作为各国间在司法领域进行互助的重要机制&#xff0c;不仅关乎个案的公平正义&#xff0c;更是维护国际法治秩序的关键一环。那么&#xff0c;什么是司法协助&#xff1f;它又是如何…

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.2 用流程图表示算法

流程图表示算法&#xff0c;直观形象&#xff0c;易于理解。 【例 2.6】将例 2.1 求 5!的算用流程图表示。 【例 2.7】将例 2.2 的算用流程图表示。 【例 2.8】将例 2.3 判定闰年的算用流程图表示。

Java心跳检测机制

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 心跳检测的定义 心跳检测是一种监控机制&#xff0c;在Java编程和分布式系统中具有广泛的应用。心跳检测&#xff0c;顾名思义&#xff0c;就像心跳一样&#xff0c;是一种…

2024年几款优秀的SQL IDE优缺点分析

SQL 工具在数据库管理、查询优化和数据分析中扮演着重要角色。 以下是常见的 SQL 工具及其优缺点。 1. SQLynx 优点&#xff1a; 智能代码补全和建议&#xff1a;采用AI技术提供高级代码补全、智能建议和自动错误检测&#xff0c;大幅提高编写和调试SQL查询的效率。跨平台和…

【嵌入式】智能系统优化:【C++】驱动的【机器学习】与【数据挖掘】技术

目录 一、嵌入式系统简介 二、C在嵌入式系统中的优势 三、机器学习在嵌入式系统中的挑战 四、C实现机器学习模型的基本步骤 五、实例分析&#xff1a;使用C在嵌入式系统中实现手写数字识别 1. 数据准备 2. 模型训练与压缩 3. 模型部署 六、优化与分析 1. 模型优化 模…

09 platfrom 设备驱动

platform 设备驱动,也叫做平台设备驱动。请各位重点学习! 1、驱动的分离与分层 1)驱动的分隔与分离 Linux 操作系统,代码的重用性非常重要。驱动程序占用了 Linux 内核代码量的大头,如果不对驱动程序加以管理,用不了多久 Linux 内核的文件数量就庞大到无法接受的地步。…

基于协同注意力的视觉-语言嵌入用于机器人手术视觉问题定位回答

文章目录 CAT-ViL: Co-attention Gated Vision-Language Embedding for Visual Question Localized-Answering in Robotic Surgery摘要方法实验结果 CAT-ViL: Co-attention Gated Vision-Language Embedding for Visual Question Localized-Answering in Robotic Surgery 摘要…