远行的鹿 发表于 2024-10-22 13:45:17

推荐功能强大的shell,能和rt-thread的FinSH媲美

本帖最后由 远行的鹿 于 2024-10-22 14:11 编辑

简介:
      letter-shell是一个命令行组件,提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。可以使用串口、以太网、USB等方式与PC机进行通信。用户在控制终端输入命令,控制终端通过串口等方式将命令传给设备里的shell,shell会读取设备输入命令,解析并自动扫描内部函数表,寻找对应函数名,执行函数后输出回应,回应通过原路返回,将结果显示在控制终端上。

      letter-shell是C语言编写的,可以嵌入在程序中的嵌入式shell,主要面向嵌入式设备,以C语言函数为运行单位,可以通过命令行调用,运行程序中的函数。链接地址:https://github.com/NevermindZZT/letter-shell


功能:

      1. 命令自动补全
      2. 快捷键功能定义
      3. 命令权限管理
      4. 用户管理
      5. 变量支持
      6. 代理函数和参数代理解析


邮箱 发表于 2024-10-22 19:02:46

{:4_250:}

soma 发表于 2024-10-22 19:49:06

资源占用怎么样

远行的鹿 发表于 2024-10-23 09:19:07

soma 发表于 2024-10-22 19:49
资源占用怎么样

还没有在STC单片机上使用,STC8估计够呛。它有一些全局变量会一直占有内存。typedef struct shell_def
{
    struct
    {
      const struct shell_command *user;                     /**< 当前用户 */
      int activeTime;                                       /**< shell激活时间 */
      char *path;                                             /**< 当前shell路径 */
    #if SHELL_USING_COMPANION == 1
      struct shell_companion_object *companions;            /**< 伴生对象 */
    #endif
    #if SHELL_KEEP_RETURN_VALUE == 1
      int retVal;                                             /**< 返回值 */
    #endif
    } info;
    struct
    {
      unsigned short length;                                  /**< 输入数据长度 */
      unsigned short cursor;                                  /**< 当前光标位置 */
      char *buffer;                                           /**< 输入缓冲 */
      char *param;                /**< 参数 */
      unsigned short bufferSize;                              /**< 输入缓冲大小 */
      unsigned short paramCount;                              /**< 参数数量 */
      int keyValue;                                           /**< 输入按键键值 */
    } parser;
#if SHELL_HISTORY_MAX_NUMBER > 0
    struct
    {
      char *item;                   /**< 历史记录 */
      unsigned short number;                                  /**< 历史记录数 */
      unsigned short record;                                  /**< 当前记录位置 */
      signed short offset;                                    /**< 当前历史记录偏移 */
    } history;
#endif /** SHELL_HISTORY_MAX_NUMBER > 0 */
    struct
    {
      void *base;                                             /**< 命令表基址 */
      unsigned short count;                                 /**< 命令数量 */
    } commandList;
    struct
    {
      unsigned char isChecked : 1;                            /**< 密码校验通过 */
      unsigned char isActive : 1;                           /**< 当前活动Shell */
      unsigned char tabFlag : 1;                              /**< tab标志 */
    } status;
    signed short (*read)(char *, unsigned short);               /**< shell读函数 */
    signed short (*write)(char *, unsigned short);            /**< shell写函数 */
#if SHELL_USING_LOCK == 1
    int (*lock)(struct shell_def *);                              /**< shell 加锁 */
    int (*unlock)(struct shell_def *);                            /**< shell 解锁 */
#endif
} Shell;
页: [1]
查看完整版本: 推荐功能强大的shell,能和rt-thread的FinSH媲美