当前位置 : 主页 > 编程语言 > java >

【LiteOS】第 3 章

来源:互联网 收集:自由互联 发布时间:2022-06-23
基本知识 静态注册命令使用 ​​SHELLCMD_ENTRY​​ 接口。 第一个入参:命令变量名,用于设置链接选项(build / mk / liteos_tables_ldflags . mk的LITEOS_TABLES_LDFLAGS变量)。例如变量名为ls_shellc

基本知识

静态注册命令使用 ​​SHELLCMD_ENTRY​​ 接口。

第一个入参:命令变量名,用于设置链接选项(build/mk/liteos_tables_ldflags.mk的LITEOS_TABLES_LDFLAGS变量)。例如变量名为ls_shellcmd,链接选项就应该设置为:LITEOS_TABLES_LDFLAGS += -uls_shellcmd。这个入参是静态注册独有的,动态注册中没有这个入参。
第二个入参:命令类型,目前支持两种命令类型。
CMD_TYPE_EX:不支持标准命令参数输入,会把用户填写的命令关键字屏蔽掉。例如:输入ls /ramfs,传入给命令处理函数的参数只有/ramfs,对应于命令处理函数中的argv[0],而ls命令关键字并不会被传入。
CMD_TYPE_STD:支持的标准命令参数输入,所有输入的字符都会通过命令解析后被传入。例如:输入ls /ramfs,ls和/ramfs都会被传入命令处理函数,分别对应于命令处理函数中的argv[0]和argv[1]
第三个入参:命令关键字,是命令处理函数在Shell中对应的名称。命令关键字必须唯一,即两个不同的命令项不能有相同的命令关键字,否则只会执行其中一个。Shell在执行用户命令时,如果存在多个命令关键字相同的命令,只会执行在“help”命令中排在最前面的那个。
第四个入参:命令处理函数的入参最大个数。
静态注册命令暂不支持设置。
动态注册命令支持设置不超过32的入参最大个数,或者设置为XARGS(其在代码中被定义为0xffffffff)表示不限制参数个数。
第五个入参:命令处理函数名,即在Shell中执行命令时被调用的函数。

实战环节

静态注册一个 shell 命令
仅打印输出提示信息。

  • 新建 hello_shell.c 文件
  • LiteOS/shell/src/cmds/hello_shell.c

    #include "shell.h"
    #include "shcmd.h"

    INT32 OsShellCmdHello(INT32 argc, const CHAR **argv)
    {
    printf("hello jiaming!\n");
    return 0;
    }

    SHELLCMD_ENTRY(hello_shellcmd, CMD_TYPE_STD, "hello", XARGS, (CmdCallBackFunc)OsShellCmdHello); // 接口
  • 在链接选项中添加链接该新增命令项参数
  • LiteOS/build/mk/liteos_tables_ldflags.mk

    增加以下选项:
    【LiteOS】第 3 章_#include
    3. 通过make menuconfig使能Shell,即设置LOSCFG_SHELL=y
    4. make clean; make【LiteOS】第 3 章_#include_02


    上一篇:【浙大 | 嵌入式系统】第一节
    下一篇:没有了
    网友评论