0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

MSH二級補全API使用示例

冬至子 ? 來源:HelloBye ? 作者:HelloBye ? 2023-10-08 11:19 ? 次閱讀

API/宏 說明

CMD_OPTIONS_STATEMENT(name)
MSH_OPT_ID_GET(name)
MSH_OPT_DUMP(name)
CMD_OPTIONS_NODE_START(name)
CMD_OPTIONS_NODE(id, cmd, desc)
CMD_OPTIONS_NODE_END

以上宏中 name 參數(shù)最好與命令函數(shù)字符串一致, 子選項固定為命令后的第一個字符串(argv[1])。

CMD_OPTIONS_NODE:添加一個子選項, 第一個參數(shù)是子命令的id,這個宏必須在CMD_OPTIONS_NODE_START 和 CMD_OPTIONS_NODE_END之間。

MSH_OPT_ID_GET:用于檢索子選項對應的id,也是CMD_OPTIONS_NODE中填寫的id,可以與switch配合使用。

CMD_OPTIONS_STATEMENT:這個宏必須定義在命令函數(shù)實現(xiàn)之前,因為使用這個宏會創(chuàng)建一個結構體參數(shù)。

MSH_OPT_DUMP:用于dump出子命令及命令描述。

MSH_CMD_EXPORT 和 MSH_CMD_EXPORT_ALIAS宏與之前兼容,如需使用二級補全,只需再添加一項參數(shù),內(nèi)容不限。

宏對比:

MSH_CMD_EXPORT(command, desc) or MSH_CMD_EXPORT(command, desc, opt)
MSH_CMD_EXPORT_ALIAS(command, alias, desc) or MSH_CMD_EXPORT_ALIAS(command, alias, desc, opt)

使用二級補全實現(xiàn)一個demo,用于讀寫內(nèi)存

#include
#include
#include
static rt_uint64_t data[100];
int main(void)
{
printf("hello rt-threadn");
printf("data addr: %pn", data);
return 0;
}
CMD_OPTIONS_STATEMENT(memroy_tools)
static int memroy_tools(int argc, char *argv[])
{
rt_uint64_t address, value;
if (argc >= 3)
{
address = strtoul(argv[2], RT_NULL, 0);
switch (MSH_OPT_ID_GET(memroy_tools))
{
case 1:
value = HWREG64(address);
rt_kprintf("addr:%p = %pn", address, value);
break;
case 2:
if (argc >= 4)
{
value = strtoul(argv[3], RT_NULL, 0);
HWREG64(address) = value;
rt_kprintf("addr:%p = %pn", address, value);
}
break;
default:
goto _usage;
break;
}
}
else
{
goto _usage;
}
return 0;
_usage:
rt_kprintf("Usage: mt [options] address [value]n");
rt_kprintf("[options]:n");
MSH_OPT_DUMP(memroy_tools);
return 0;
}
CMD_OPTIONS_NODE_START(memroy_tools)
CMD_OPTIONS_NODE(1, readq, read address)
CMD_OPTIONS_NODE(2, writeq, write address value)
CMD_OPTIONS_NODE_END
MSH_CMD_EXPORT_ALIAS(memroy_tools, mt, memroy tools, options);
測試日志:
| /

RT - Thread Operating System
/ | 5.0.1 build Oct 8 2023 00:09:31
2006 - 2022 Copyright by RT-Thread team
file system initialization fail!
hello rt-threadmsh />
data addr: 0x40101008
msh />
msh />mt
Usage: mt [options] address [value]
[options]:
readq - read address
writeq - write address value
msh />
msh />
msh />mt rea
readq
msh />mt readq 0x40101008
addr:0x0000000040101008 = 0x0000000000000000
msh />
msh />mt w
writeq
msh />mt writeq 0x40101008 0x1234
addr:0x0000000040101008 = 0x0000000000001234
msh />
msh />mt re
readq
msh />mt readq 0x40101008
addr:0x0000000040101008 = 0x0000000000001234

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • CMD命令
    +關注

    關注

    0

    文章

    28

    瀏覽量

    8288
  • RT-Thread
    +關注

    關注

    31

    文章

    1261

    瀏覽量

    39839
收藏 人收藏

    評論

    相關推薦

    嵌入式C語言二級指針

    二級指針相對于一指針,顯得更難,難在于指針和數(shù)組的混合,定義不同類型的二級指針,在使用的時候有著很大的區(qū)別。
    發(fā)表于 11-04 10:08 ?577次閱讀

    C二級要點

    C二級要點關于基礎知識的
    發(fā)表于 03-29 12:47

    全國計算機二級試題全集

    全國計算機二級試題含有從,二級筆試試題BASIC,筆試試題FORTRAN,1994-2002年的二級C、二級Pascal、二級QBasic、
    發(fā)表于 12-30 10:20 ?27次下載
    全國計算機<b class='flag-5'>二級</b>試題全集

    瞬時二級管測試器

    瞬時二級管測試器
    發(fā)表于 04-20 11:34 ?1079次閱讀
    瞬時<b class='flag-5'>二級</b>管測試器

    二級公共基礎速學教程

    二級公共基礎速學教程
    發(fā)表于 01-19 16:22 ?0次下載
    <b class='flag-5'>二級</b>公共基礎速學教程

    二級管管式充電電路

    本文為二級管管式充電電路,為了能夠任意改變工作頻率而不引起充電電壓的變化,在電路中引入一只阻擋二級管。
    發(fā)表于 07-14 18:05 ?1684次閱讀
    <b class='flag-5'>二級</b>管管式充電電路

    計算機二級C

    計算機二級C
    發(fā)表于 09-15 17:27 ?0次下載

    計算機二級C語言程序設計考試大綱

    計算機二級計算機二級計算機二級計算機二級計算機二級計算機二級
    發(fā)表于 11-18 17:30 ?0次下載

    二級C語言上機題庫

    計算機二級C語言考試上機題庫,包含大題和答案。
    發(fā)表于 03-22 18:04 ?0次下載

    15002401計算機二級

    計算機二級的題庫
    發(fā)表于 02-15 23:40 ?0次下載

    怎樣啟用CPU的二級緩存 如何查看二級緩存的參數(shù)

    提到二級緩存容量的差距,還得從兩大CPU巨頭對一緩存的理解說起。對,沒看錯,就是平常曝光率遠遜于二級緩存的“一緩存”!它才是造成上面提到巨大差異的“罪魁禍首”。
    的頭像 發(fā)表于 08-14 10:20 ?1.2w次閱讀

    二級c語言無紙化考試模擬軟件(二級c語言模擬考試系統(tǒng))免費下載

    二級C無紙化考試模擬軟件(二級c語言模擬考試系統(tǒng))是由官方專門為計算機二級考試推出的一款非常好用的C語言打造的考試模擬練習軟件。二級c語言模擬考試的軟件非常多,你是不是不知道用哪款?那
    發(fā)表于 09-27 14:49 ?27次下載
    <b class='flag-5'>二級</b>c語言無紙化考試模擬軟件(<b class='flag-5'>二級</b>c語言模擬考試系統(tǒng))免費下載

    C語言二級指針的用法與原理

    提到指針,我們都知道指針是用來存儲一個變量的地址。所以,當我們定義了一個指向指針的指針的時候(pointer to pointer),我們也稱之為二級指針,那針對于這個二級指針來說,第一指針存放的是指向的變量的地址,第
    發(fā)表于 07-02 14:52 ?3765次閱讀
    C語言<b class='flag-5'>二級</b>指針的用法與原理

    C進階技巧:二級指針問題

    這里重點看看一、二級,畢竟二級指針與我們的維數(shù)據(jù)結合使用,維素組在圖形、矩陣、算法等等方面還是使用非常廣泛的。
    的頭像 發(fā)表于 09-08 15:00 ?1827次閱讀
    C進階技巧:<b class='flag-5'>二級</b>指針問題

    二級電源和II電源的區(qū)別

    二級電源和II電源的區(qū)別 隨著電力需求的不斷增長,人們對電源的要求也越來越高。二級電源和II電源是兩種常見的電源等級,它們在一些關鍵的技術規(guī)范上存在一些區(qū)別。 首先,我們來了解一下
    的頭像 發(fā)表于 01-19 13:51 ?1864次閱讀