同步操作将从 Nrush/nr_micro_shell 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
v1.0.2
In debugging and maintenance, it is often necessary to interact with the MCU to obtain, set parameters or perform some operations, nr_micro_shell is a basic command-line tool written for MCU with less resources to meet this demand. Although a powerful finsh command-line interaction tool has been provided in the RT_Thread component. However, for a MCU with less ROM and RAM resources, finsh is still too large. If you want to retain use a command-line tool on these platforms, nr_micro_shell may be a good choice.
nr_micro_shell has the following advantages
Less resources, simple use, flexibility and convenience. Only two functions, shell_init() and shell() , are involved in the use process. It is convenient to use this tool without additional coding work on a MCU with RTOS or a bare MCU.
Good interaction experience. It is exactly similar to the Linux shell command line. When the serial port terminal supports ANSI (such as hypertrm terminal), it not only supports the basic command line interaction, but also provides the function of tab command completion, query history command, and direction key moving cursor modification.
Good expansibility. nr_micro_shell provides users with standard function prototypes of custom commands. When you want difine your own command, just write command functions and register command functions.
Comparison of resources occupied by nr_micro_shell and finsh (finsh does not use MSH) under the same configuration.
Original project | Increase after adding nr_micro_shell | Increase after adding finsh | |
---|---|---|---|
ROM | 63660 | +3832 | +26908 |
RAM | 4696 | +1104 | +1304 |
the configuration:
the demonstration of nr_micro_shell
Name | Describation |
---|---|
docs | Document directory, including GIF pictures for demonstration, etc |
examples | Example directory, including command function examples: nr_micro_shell_commands.c and use examples under rt_thread nr_micro_shell_thread.c. |
inc | Header directory. |
src | Source code directory. |
nr_micro_shell package follows MIT license. Please refer to the 'license' file for details.
None
You need to select nr_micro_shell package from rt_thread package manager. The specific path is as follows:
RT-Thread online packages
tools packages --->
[*] nr_micro_shell:Lightweight command line interaction tool. --->
After pressing the 'sapce' key to select the relevant settings, press' Enter 'to configure the relevant parameters. Then let the package manager of rt_thread update automatically, or use the 'Pkgs --update' command to update the package to BSP.
If you need to run the samples, please ensure that the 'using console for kt_printf.' option in rt_thread configuration is turned on, kt_printf can work normally, and the 'use components automatically initialization.' option is turned on. nr_micro_shell can be used for direct download or simulation. When the command line is blank, press tab to display all supported commands. For the test sample command, see the use gifs under doc/pic. For the customized command process, please refer to the method in the following 3 Using nr_micro_shell package without RTOS.
All configuration work can be done in the nr_micro_shell_config.h. For details, see the comments in the file.
Make sure all files have been added into your project.
Make sure the Macro function 'shell_printf(),ansi_show_char()' can be used in your project.
An example is given as follow
#include "nr_micro_shell.h"
int main(void)
{
/* Initialization */
shell_init();
while(1)
{
if(USART GET A CHAR 'c')
{
/* nr_micro_shell receives characters. */
shell(c);
}
}
}
Before using hardware input directly, it is recommended to use the following code (ensure that information can be printed normally) to verify whether nr_micro_shell can work.
#include "nr_micro_shell.h"
int main(void)
{
unsigned int i = 0;
/* NR_SHELL_END_OF_LINE 0 */
char test_line[] = "test 1 2 3\n"
/* Initialization */
shell_init();
/* test */
for(i = 0; i < sizeof(test_line)-1; i++)
{
shell(test_line[i]);
}
while(1)
{
if(USART GET A CHAR 'c')
{
/* nr_micro_shell接收字符 */
shell(c);
}
}
}
STEP1:
You should realize a command function in nr_micro_shell_commands.c. The prototype of the command function is as follow
void your_command_funtion(char argc, char *argv)
{
.....
}
argc is the number of parameters. argv stores the starting address and content of each parameter. If your input string is
test -a 1
then the argc will be 3 and the content of argv will be
-------------------------------------------------------------
0x03|0x08|0x0b|'t'|'e'|'s'|'t'|'\0'|'-'|'a'|'\0'|'1'|'\0'|
-------------------------------------------------------------
If you want to know the content of first or second parameter, you should use
/* "-a" */
printf(argv[argv[1]])
/* "1" */
printf(argv[argv[2]])
STEP2:
You need to register commands before using them. There are two ways to register commands.
const static_cmd_st static_cmd[] =
{
.....
{"your_command_name",your_command_funtion},
.....
{"\0",NULL}
};
Attention: DO NOT DELETE {"\0",NULL} !
NR_SHELL_CMD_EXPORT(your_command_name,your_command_funtion);
在工程./examples/simulator/
目录下存放着nr_micro_shell仿真代码,仍在./examples/nr_micro_shell_commands.c
文件中按上述方式添加自定义命令,添加完成后可以使用make命令编译源码,生产的可执行文件为./examples/simulator/out/nr_micro_shell
或./examples/simulator/out/nr_micro_shell_db
。可使用的make命令如下
The code of nr_micro_shell simulator is stored in the directory ./examples/simulator/
, you can add your own command in ./examples/nr_micro_shell_commands.c
as described above. After adding, you can use the make
command to compile the source code. The produced executable is ./examples/simulator/out/nr_micro_shell
or ./examples/simulator/out/nr_micro_shell_db
。 The make commands available are as follows
# compile executable file
make
# compile gdb file
make debug
# clean files
make clean
Use NR_SHELL_USING_EXPORT_CMD to select the command registration method according to your usage habits.
When using static_cmd[], ensure that a registry exists in your project
const static_cmd_st static_cmd[] =
{
.....
{"\0",NULL}
};
When using NR_SHELL_CMD_EXPORT(), make sure that NR_SHELL_CMD_EXPORT() supports the compiler used, otherwise an error will be reported.
ESC key not supported.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。