Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions bsp/stm32/stm32f103-dofly-lyc8/.config
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ CONFIG_RT_USING_DEVICE=y
CONFIG_RT_USING_CONSOLE=y
CONFIG_RT_CONSOLEBUF_SIZE=128
CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
CONFIG_RT_VER_NUM=0x50000
CONFIG_RT_VER_NUM=0x50001
# CONFIG_RT_USING_STDC_ATOMIC is not set
# CONFIG_RT_USING_CACHE is not set
CONFIG_RT_USING_HW_ATOMIC=y
Expand Down Expand Up @@ -115,6 +115,11 @@ CONFIG_FINSH_USING_DESCRIPTION=y
# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
# CONFIG_FINSH_USING_AUTH is not set
CONFIG_FINSH_ARG_MAX=10
# CONFIG_FINSH_OPTION_COMPLETION_ENABLED is not set

#
# DFS: device virtual file system
#
# CONFIG_RT_USING_DFS is not set
# CONFIG_RT_USING_FAL is not set

Expand Down Expand Up @@ -661,7 +666,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
# CONFIG_PKG_USING_MISAKA_AT24CXX is not set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

這個文件自動生成的,可以刪除。不需要修改。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

修改默认值的时候,最好还是确保所有 bsp 都改了吧。不过讲真,个人认为最好直接不要在 git 仓库存这种可以自动生成的文件。linux 就是这样做的。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这文件是存储的用户配置,比如一些选项打开或者没打开,必须要存的,linux 也有存的

@a1012112796 a1012112796 May 19, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这文件是存储的用户配置,比如一些选项打开或者没打开,必须要存的

首先这些文件是可以自动生成的 (kconfig 文件有默认配置值)。其次,维护负担问题,例如修改某个组件的kconfig ,那几乎所有 bsp 的 .config 文件都需要修改 (如果不改, 保持历史状态,存的意义何在?). 最直观的感受是这些 .config 文件都很相似。。。

linux 也有存的

linux 没存,.config 在linux默认是ignore的,最多只有一个 xxx_defaultconfig 文件, 用来存储某个 soc 的部分特殊配置. 然后 ACH=XXX ... make xxx_defaultconfig 自动生成完整的 .config 文件。
image

# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
# CONFIG_PKG_USING_BL_MCU_SDK is not set
# CONFIG_PKG_USING_SOFT_SERIAL is not set
# CONFIG_PKG_USING_MB85RS16 is not set
# CONFIG_PKG_USING_RFM300 is not set
Expand Down
5 changes: 4 additions & 1 deletion bsp/stm32/stm32f103-dofly-lyc8/rtconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 128
#define RT_CONSOLE_DEVICE_NAME "uart1"
#define RT_VER_NUM 0x50000
#define RT_VER_NUM 0x50001
#define RT_USING_HW_ATOMIC
#define RT_USING_CPU_FFS
#define ARCH_ARM
Expand All @@ -72,6 +72,9 @@
#define FINSH_USING_DESCRIPTION
#define FINSH_ARG_MAX 10

/* DFS: device virtual file system */


/* Device Drivers */

#define RT_USING_DEVICE_IPC
Expand Down
4 changes: 4 additions & 0 deletions components/finsh/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,8 @@ if RT_USING_MSH
int "The number of arguments for a shell command"
default 10

config FINSH_OPTION_COMPLETION_ENABLED
bool "command option completion enable"
default y

endif
116 changes: 104 additions & 12 deletions components/finsh/cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@

#ifdef RT_USING_FINSH
#include <finsh.h>
#include "msh.h"

#define LIST_FIND_OBJ_NR 8

Expand Down Expand Up @@ -894,68 +895,69 @@ long list_device(void)
}
#endif /* RT_USING_DEVICE */

#ifndef FINSH_OPTION_COMPLETION_ENABLED
int cmd_list(int argc, char **argv)
{
if(argc == 2)
if (argc == 2)
{
if(strcmp(argv[1], "thread") == 0)
if (strcmp(argv[1], "thread") == 0)
{
list_thread();
}
else if(strcmp(argv[1], "timer") == 0)
else if (strcmp(argv[1], "timer") == 0)
{
list_timer();
}
#ifdef RT_USING_SEMAPHORE
else if(strcmp(argv[1], "sem") == 0)
else if (strcmp(argv[1], "sem") == 0)
{
list_sem();
}
#endif /* RT_USING_SEMAPHORE */
#ifdef RT_USING_EVENT
else if(strcmp(argv[1], "event") == 0)
else if (strcmp(argv[1], "event") == 0)
{
list_event();
}
#endif /* RT_USING_EVENT */
#ifdef RT_USING_MUTEX
else if(strcmp(argv[1], "mutex") == 0)
else if (strcmp(argv[1], "mutex") == 0)
{
list_mutex();
}
#endif /* RT_USING_MUTEX */
#ifdef RT_USING_MAILBOX
else if(strcmp(argv[1], "mailbox") == 0)
else if (strcmp(argv[1], "mailbox") == 0)
{
list_mailbox();
}
#endif /* RT_USING_MAILBOX */
#ifdef RT_USING_MESSAGEQUEUE
else if(strcmp(argv[1], "msgqueue") == 0)
else if (strcmp(argv[1], "msgqueue") == 0)
{
list_msgqueue();
}
#endif /* RT_USING_MESSAGEQUEUE */
#ifdef RT_USING_MEMHEAP
else if(strcmp(argv[1], "memheap") == 0)
else if (strcmp(argv[1], "memheap") == 0)
{
list_memheap();
}
#endif /* RT_USING_MEMHEAP */
#ifdef RT_USING_MEMPOOL
else if(strcmp(argv[1], "mempool") == 0)
else if (strcmp(argv[1], "mempool") == 0)
{
list_mempool();
}
#endif /* RT_USING_MEMPOOL */
#ifdef RT_USING_DEVICE
else if(strcmp(argv[1], "device") == 0)
else if (strcmp(argv[1], "device") == 0)
{
list_device();
}
#endif /* RT_USING_DEVICE */
#ifdef RT_USING_DFS
else if(strcmp(argv[1], "fd") == 0)
else if (strcmp(argv[1], "fd") == 0)
{
extern int list_fd(void);
list_fd();
Expand Down Expand Up @@ -1006,4 +1008,94 @@ int cmd_list(int argc, char **argv)
}
MSH_CMD_EXPORT_ALIAS(cmd_list, list, list objects);

#else
CMD_OPTIONS_STATEMENT(cmd_list)
int cmd_list(int argc, char **argv)
{
if (argc == 2)
{
switch (MSH_OPT_ID_GET(cmd_list))
{
case RT_Object_Class_Thread: list_thread(); break;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉这么改,有点复杂,还是感觉如何支持二级命令补全。比较方便

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个只是命令函数中的使用示例,补全和这部分代码没关系

case RT_Object_Class_Timer: list_timer(); break;
#ifdef RT_USING_SEMAPHORE
case RT_Object_Class_Semaphore: list_sem(); break;
#endif /* RT_USING_SEMAPHORE */
#ifdef RT_USING_EVENT
case RT_Object_Class_Event: list_event(); break;
#endif /* RT_USING_EVENT */
#ifdef RT_USING_MUTEX
case RT_Object_Class_Mutex: list_mutex(); break;
#endif /* RT_USING_MUTEX */
#ifdef RT_USING_MAILBOX
case RT_Object_Class_MailBox: list_mailbox(); break;
#endif /* RT_USING_MAILBOX */
#ifdef RT_USING_MESSAGEQUEUE
case RT_Object_Class_MessageQueue: list_msgqueue(); break;
#endif /* RT_USING_MESSAGEQUEUE */
#ifdef RT_USING_MEMHEAP
case RT_Object_Class_MemHeap: list_memheap(); break;
#endif /* RT_USING_MEMHEAP */
#ifdef RT_USING_MEMPOOL
case RT_Object_Class_MemPool: list_mempool(); break;
#endif /* RT_USING_MEMPOOL */
#ifdef RT_USING_DEVICE
case RT_Object_Class_Device: list_device(); break;
#endif /* RT_USING_DEVICE */
#ifdef RT_USING_DFS
case 0x100:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

直接十六进制数字,什么情况哈

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

可以考虑另外定义一组宏定义,例如

#define CMD_LIST_OPT_INDEX_THREAD   0
// .....

{
extern int list_fd(void);
list_fd();
break;
}
#endif /* RT_USING_DFS */
default:
goto _usage;
break;
};

return 0;
}

_usage:
rt_kprintf("Usage: list [options]\n");
rt_kprintf("[options]:\n");
MSH_OPT_DUMP(cmd_list);
return 0;
}
CMD_OPTIONS_NODE_START(cmd_list)
CMD_OPTIONS_NODE(RT_Object_Class_Thread, thread, list threads)
CMD_OPTIONS_NODE(RT_Object_Class_Timer, timer, list timers)
#ifdef RT_USING_SEMAPHORE
CMD_OPTIONS_NODE(RT_Object_Class_Semaphore, sem, list semaphores)
#endif /* RT_USING_SEMAPHORE */
#ifdef RT_USING_EVENT
CMD_OPTIONS_NODE(RT_Object_Class_Event, event, list events)
#endif /* RT_USING_EVENT */
#ifdef RT_USING_MUTEX
CMD_OPTIONS_NODE(RT_Object_Class_Mutex, mutex, list mutexs)
#endif /* RT_USING_MUTEX */
#ifdef RT_USING_MAILBOX
CMD_OPTIONS_NODE(RT_Object_Class_MailBox, mailbox, list mailboxs)
#endif /* RT_USING_MAILBOX */
#ifdef RT_USING_MESSAGEQUEUE
CMD_OPTIONS_NODE(RT_Object_Class_MessageQueue, msgqueue, list message queues)
#endif /* RT_USING_MESSAGEQUEUE */
#ifdef RT_USING_MEMHEAP
CMD_OPTIONS_NODE(RT_Object_Class_MemHeap, memheap, list memory heaps)
#endif /* RT_USING_MEMHEAP */
#ifdef RT_USING_MEMPOOL
CMD_OPTIONS_NODE(RT_Object_Class_MemPool, mempool, list memory pools)
#endif /* RT_USING_MEMPOOL */
#ifdef RT_USING_DEVICE
CMD_OPTIONS_NODE(RT_Object_Class_Device, device, list devices)
#endif /* RT_USING_DEVICE */
#ifdef RT_USING_DFS
CMD_OPTIONS_NODE(0x100, fd, list file descriptors)
#endif /* RT_USING_DFS */
CMD_OPTIONS_NODE_END
MSH_CMD_EXPORT_ALIAS(cmd_list, list, list objects, optenable);
#endif /* FINSH_OPTION_COMPLETION_ENABLED */

#endif /* RT_USING_FINSH */
Loading