0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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 参数最好与命令函数字符串一致, 子选项固定为命令后的第一个字符串(argv[1])。

CMD_OPTIONS_NODE:添加一个子选项, 第一个参数是子命令的id,这个宏必须在CMD_OPTIONS_NODE_START 和 CMD_OPTIONS_NODE_END之间。

MSH_OPT_ID_GET:用于检索子选项对应的id,也是CMD_OPTIONS_NODE中填写的id,可以与switch配合使用。

CMD_OPTIONS_STATEMENT:这个宏必须定义在命令函数实现之前,因为使用这个宏会创建一个结构体参数。

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

MSH_CMD_EXPORT 和 MSH_CMD_EXPORT_ALIAS宏与之前兼容,如需使用二级补全,只需再添加一项参数,内容不限。

宏对比:

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)

使用二级补全实现一个demo,用于读写内存

#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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CMD命令
    +关注

    关注

    0

    文章

    28

    浏览量

    8299
  • RT-Thread
    +关注

    关注

    31

    文章

    1272

    浏览量

    39919
收藏 人收藏

    评论

    相关推荐

    嵌入式C语言二级指针

    二级指针相对于一指针,显得更难,难在于指针和数组的混合,定义不同类型的二级指针,在使用的时候有着很大的区别。
    发表于 11-04 10:08 579次阅读

    C二级要点

    C二级要点关于基础知识的
    发表于 03-29 12:47

    全国计算机二级试题全集

    全国计算机二级试题含有从,二级笔试试题BASIC,笔试试题FORTRAN,1994-2002年的二级C、二级Pascal、二级QBasic、
    发表于 12-30 10:20 27次下载
    全国计算机<b class='flag-5'>二级</b>试题全集

    瞬时二级管测试器

    瞬时二级管测试器
    发表于 04-20 11:34 1081次阅读
    瞬时<b class='flag-5'>二级</b>管测试器

    二级公共基础速学教程

    二级公共基础速学教程
    发表于 01-19 16:22 0次下载
    <b class='flag-5'>二级</b>公共基础速学教程

    二级管管式充电电路

    本文为二级管管式充电电路,为了能够任意改变工作频率而不引起充电电压的变化,在电路中引入一只阻挡二级管。
    发表于 07-14 18:05 1688次阅读
    <b class='flag-5'>二级</b>管管式充电电路

    计算机二级C

    计算机二级C
    发表于 09-15 17:27 0次下载

    计算机二级C语言程序设计考试大纲

    计算机二级计算机二级计算机二级计算机二级计算机二级计算机二级
    发表于 11-18 17:30 0次下载

    二级C语言上机题库

    计算机二级C语言考试上机题库,包含大题和答案。
    发表于 03-22 18:04 0次下载

    15002401计算机二级

    计算机二级的题库
    发表于 02-15 23:40 0次下载

    怎样启用CPU的二级缓存 如何查看二级缓存的参数

    提到二级缓存容量的差距,还得从两大CPU巨头对一缓存的理解说起。对,没看错,就是平常曝光率远逊于二级缓存的“一缓存”!它才是造成上面提到巨大差异的“罪魁祸首”。
    的头像 发表于 08-14 10:20 1.2w次阅读

    二级c语言无纸化考试模拟软件(二级c语言模拟考试系统)免费下载

    二级C无纸化考试模拟软件(二级c语言模拟考试系统)是由官方专门为计算机二级考试推出的一款非常好用的C语言打造的考试模拟练习软件。二级c语言模拟考试的软件非常多,你是不是不知道用哪款?那
    发表于 09-27 14:49 27次下载
    <b class='flag-5'>二级</b>c语言无纸化考试模拟软件(<b class='flag-5'>二级</b>c语言模拟考试系统)免费下载

    C语言二级指针的用法与原理

    提到指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(pointer to pointer),我们也称之为二级指针,那针对于这个二级指针来说,第一指针存放的是指向的变量的地址,第
    发表于 07-02 14:52 3785次阅读
    C语言<b class='flag-5'>二级</b>指针的用法与原理

    C进阶技巧:二级指针问题

    这里重点看看一、二级,毕竟二级指针与我们的维数据结合使用,维素组在图形、矩阵、算法等等方面还是使用非常广泛的。
    的头像 发表于 09-08 15:00 1840次阅读
    C进阶技巧:<b class='flag-5'>二级</b>指针问题

    二级电源和II电源的区别

    二级电源和II电源的区别 随着电力需求的不断增长,人们对电源的要求也越来越高。二级电源和II电源是两种常见的电源等级,它们在一些关键的技术规范上存在一些区别。 首先,我们来了解一下
    的头像 发表于 01-19 13:51 1932次阅读