添加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.pswp.cn/web/24393.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24393.shtml
英文地址,請注明出處:http://en.pswp.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;導致處理器無法…