v2.0.0:相对于v1.0版本,修复若干bug,增加命令行TAB提词功能,更稳定,更简洁。
MCU调试常需要执行获取/配置参数、执行特定函数等交互操作,nr_micro_shell是为满足该需求的低开销、裸机可用的命令行交互工具。
nr_micro_shell 目标:易用、低开销、可靠、可扩展
1.易用:
2.低开销:对比rt-thread fish开销 | | 原始工程 | 添加nr_micro_shell增量 | 添加finsh增量 | | --- | -------- | ---------------------- | ------------- | | ROM | 63660 | +3832 | +26908 | | RAM | 4696 | +1104 | +1304 |
两者配置都为
3.可靠:
4.可扩展性:支持用户自定义命令 预实现命令: | 命令 | 功能说明 | | ------- | -------------- | | help | 显示所有命令 | | rd | 读内存 | | wr | 写内存 | | hex2dec | 16进制转10进制 |
| 名称 | 说明 |
|---|---|
| docs | 开发文档 |
| examples | demo代码 |
| inc | 头文件 |
| src | 源代码 |
nr_micro_shell 遵循 MIT 许可,详见 LICENSE 文件。
前置依赖:基础libc库,string.h/stdio.h/stdlib.h/stdint.h/stdarg.h中相关函数实现
可参考examples/simulator和examples/linux_with_mini_config
shell_putc()函数,其余宏配置可参考simulator头文件中的注释。使用示例如下
#include "nr_micro_shell.h"
int main(void)
{
shell_init();
while(1) {
if(/* get a char c ? */) {
shell(c);
}
}
}
命令函数原型:
int cmd_xxx(uint8_t argc, char **argv) {
// do something
return ret;
}
实现函数后需要手动添加到src/nr_micro_shell_cmds.c中
struct cmd cmd_table[] = { { .name = "help", .func = cmd_help, .desc = "show this help" },
{ .name = "your cmd name", .func = cmd_xxx, .desc = "the description of your cmd" },
};
建议选择支持标准VT100终端的串口终端,如MobaXTerm、SecureCRT等,同时关掉终端的回显功能,否则可能导致乱码。
建议在linux上使用examples/simulator/做开发验证,使用方式
cd examples/simulator/
# 编译bin
make
# 或者编译debug bin
make debug
# 运行
./out/nr_shell
# 启动DEBUG日志监控
tail -f ./debug.log
# 启动按键序列监控
tail -f ./key_rec.log
# 清除编译生成文件
make clean
# 测试
cd test
./test.sh
# 测试结果在test/out/目录下(如代码覆盖率等)
TODO(有兴趣欢迎参与开发提交PR)
| TASK | 状态 |
|---|---|
| rt thread适配案例 | |
| freertos适配案例 | |
| stm32适配案例 | |
| 更多通用commands |
如果想贡献代码,请提交PR到github仓。 如有意见或建议,请提交issue到github或gitee。