添加west扩展命令

news2025/1/19 23:14:28

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

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

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

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

相关文章

网络编程之XDP技术介绍

一、简介 XDP:eXpress Data Path,快速数据面,听名字是不是很高大上。其实它就是一个快速处理Rx数据包的数据面技术。为什么现在对数据处理如此敏感?原因非常简单,随着网络的不断覆盖社会的各个层面,海量的…

对比深度图聚类的硬样本感知网络

Hard Sample Aware Network for Contrastive Deep Graph Clustering 文章目录 Hard Sample Aware Network for Contrastive Deep Graph Clustering摘要引言方法实验结论启发点 摘要 本文提出了一种名为Hard Sample Aware Network (HSAN)的新方法,用于对比深度图聚类…

AI智能客服经验总结

AI智能客服经验总结 在使用OpenAI的API接口来构建人工智能客服系统时,prompt约束是非常重要的。它可以帮助确保生成的回复符合你的期望和需求。以下是一些关于如何设置和管理prompt约束的建议: 1. 明确客服系统的目标 首先,明确你的客服系…

大泽动力30KW静音汽油发电机

安全操作: 在使用前,确保发电机放置在通风良好、干燥、无易燃物品的地方。 避免在发电机运行时触摸其热表面或运转部件,以免烫伤或受伤。 遵循发电机的启动和停机程序,不要随意操作。 燃油管理: 使用高质量的汽油&…

柴油十六烷值检测 液压油硫含量检测 变压器油检测

检测的油品包括:柴油、润滑油、液压油、机油、汽油、以及一些工业用油等。 柴油检测项目GB19147-2013:氧化安定性、硫含量、酸度、10%蒸余物残炭、灰分、铜片腐蚀、水分、机械杂质、润滑性、多环芳烃、运动粘度、凝点、冷滤点、闪点、十六烷值、馏程、密…

pdf压缩文件怎么压缩最小,软件工具压缩清晰

PDF格式的文件,当其体积过于庞大时,确实在上传的过程中显得尤为不便。今天给大家分享一个压缩pdf的简单的方法,让大家可以轻松的压缩pdf。 浏览器打开 "轻云处理pdf官网" ,上传pdf文件,文件上传完成后网站会…

汇编:头文件

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

3~35kV户内开关柜综合测控装置

安科瑞电气股份有限公司 祁洁 15000363176 一、产品概述 ASD系列开关柜综合测控装置用于3~35kV户内开关柜,适用于中置柜、手车柜、固定柜、环网柜等多种开关柜。具有一次回路模拟图及开关状态指示,高压带电显示及核相,自动温湿度控制&…

炫技来了!使用SDR设备成功抓到蓝牙air packet, 并且wireshark实时解析, 没错就是蓝牙空口抓包器

本文章主要介绍是用ZYNQ7020AD9361Gnu radio是搭建一个蓝牙抓包器的文章。 由于之前一直做蓝牙Host,对controller觉得是一个比较虚无缥缈的东西,得不到的总是在骚动,所以最近用我用吃灰了2年的SDR(Software Defined Radio)设备研…

【Java基础】OkHttp 超时设置详解

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

win10重装系统?电脑系统重装一键清晰,干货分享!

在电脑的使用过程中,由于各种原因,我们可能会遇到系统崩溃、运行缓慢或者出现各种难以解决的问题。这时,重装系统往往是一个有效的解决方案。今天,我们就来详细介绍一下如何在Win10环境下进行系统的重装,帮助大家轻松解…

运 算 符

算术运算符 算术运算符包括:,-,*,/,%,,-- 当左右两边都是数值型时,则做加法运算。 当左右两边有一方为字符串,则做拼接运算。任何一个 Java 对象都可以转换为字符串。 …

uniapp视频组件层级太高,解决方法使用subNvue原生子体窗口

目录 前言 先看一下uniapp官网的原话: subNvue的一些参数介绍 subNvues使用方法: 绑定id 显示 subNvue 弹出层 subNvue.show() 参数信息 subNvue.hide() 参数信息 在使用subNvue 原生子体窗口 遇到的一些问题 前言 nvue 兼容性 以及使用方式 控…

11-Linux文件系统与日志分析

11.1深入理解Linux文件系统 在处理Liunx系统出现故障时,故障的症状是最易发现。数学LInux系统中常见的日志文件,可以帮助管理员快速定位故障点,并及时解决各种系统问题。 11.1.1 inode与block详解 文件系统通常会将这两部分内容分别存放在…

刷代码随想录有感(96):贪心算法——小于目标数且是最大的单调递增的数字

题干&#xff1a; 代码&#xff1a; class Solution { public:int monotoneIncreasingDigits(int n) {string s to_string(n);int flag s.size();for(int i s.size() - 1; i > 0; i--){if(s[i - 1] > s[i]){s[i - 1]--;flag i;}}for(int i flag; i < s.size(); …

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

无延迟,持续畅玩 - Wi-Fi 6 助力打造游戏厅极致体验

1、需求背景&#xff1a; 连锁游戏厅行业竞争激烈&#xff0c;顾客对高品质的游戏体验有着高要求。网络是游戏厅的核心基础设施之一&#xff0c;需要确保游戏过程中的网络连接稳定性和顾客满意度。 长时间稳定连接 为保证顾客的游戏体验感&#xff0c;游戏厅要确保网络连接长…

SpringBoot实现参数校验拦截(采用AOP方式)

一、AOP是什么&#xff1f; 目的&#xff1a;分离横切关注点&#xff08;如日志记录、事务管理&#xff09;与核心业务逻辑。 优势&#xff1a;提高代码的可读性和可维护性。 关键概念 切面&#xff08;Aspect&#xff09;&#xff1a;包含横切关注点代码的模块。通知&#xff…

vscode编译c/c++找不到jni.h文件

解决办法: 一、下载JDK 访问Oracle官网的Java下载页面&#xff1a;Java Downloads | Oracle 选择适合您操作系统的JDK版本&#xff1a; 对于Windows&#xff0c;选择“Windows x64”或“Windows x86”&#xff08;取决于您的系统是64位还是32位&#xff09;。对于Linux&#…

STM32 HAL库开发——入门篇(3):OLED、LCD

源自正点原子视频教程&#xff1a; 【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili 一、OLED 二、内存保护&#xff08;MPU&#xff09;实验 2.1 内存保护单元 三、LCD 3.1 显示屏分类 3.2 LCD简介 3.3 LCD…