您尚未登录。

楼主 # 2022-04-01 22:39:12

卓林
会员
注册时间: 2021-01-10
已发帖子: 84
积分: 141.5

谁能拒绝在自己的项目中添加终端工具用于调试呢?

单片机开发只能在线调试和串口看log?No No No,或许我们也能能像linux那样通过串口终端潇洒的使用命令进行调试。
来自于github作者 @JingoC
https://github.com/JingoC/terminal
灵活的终端设置允许您毫不费力地将其与任何微控制器集成。
特征:
灵活的设置
独立于平台
日志记录命令
中止执行的机制
可用键 键左键、键右键、删除键、退格键、主页、结束键、Tab键
程序存储器中所需空间,最低工作配置为约 10 KB

来自俄罗斯大兄弟的代码,阅读代码后从中闻到了毛子味。。。
将他移植到 STM32f103上,禁止了动态内存申请,修复了参数输入不能多空格的bug,可以从我的仓库fork试一试,感觉还不错。
https://github.com/zhuolin2211/terminal

我能想到的应用,PID调参,读取系统参数,灵活修改寄存器等等。
只需要添加命令对应函数实现和参数接收代码,并将其添加到命令队列当中,即可通过串口命令行灵活调用。

/*来点个灯吧,通过CLI_GetArgDec类接口接受参数*/
void LED_ctr(void)
{
  HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin, CLI_GetArgDec(0)?0:1);
}
/*添加命令,指定命令名,参数个数,帮助信息*/
CLI_AddCmd("LED", 	LED_ctr, 	1, TMC_None, "set led output");

启动界面,还原度还不错。
terminal1.png
内置了几个有用的命令,读取时间,设置读取寄存器,复位等
terminal2.png
感兴趣就加入到自己项目中来吧!

离线

#1 2022-04-02 10:36:33

llinjupt
会员
注册时间: 2020-12-21
已发帖子: 92
积分: 177

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

点赞。刚刚试了下,1.不能tab补全,2.退格处理也有问题 3.不能打印对参数的帮助,如果能对寄存器进行操作,并打印寄存器各字段的帮助信息就更棒了。一直都在想做一套类似的东西,这个就可以对任意寄存器进行设置了。但是要移植一套CLI,参考的是Linux平台程序,但是工作量不小,一直搁置,如果上面的功能完善了,基本就和自己当初设想的一致了。

最近编辑记录 llinjupt (2022-04-02 10:56:56)

离线

#2 2022-04-02 14:50:17

hox
会员
注册时间: 2020-02-17
已发帖子: 46
积分: 34.5

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

这玩意我也写过一套,汗;
另外,GITHUB 上这兄弟也写了一套,感兴趣的可以看看,
https://github.com/NevermindZZT/letter-shell

离线

#3 2022-04-02 19:29:59

llinjupt
会员
注册时间: 2020-12-21
已发帖子: 92
积分: 177

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

hox 说:

这玩意我也写过一套,汗;
另外,GITHUB 上这兄弟也写了一套,感兴趣的可以看看,
https://github.com/NevermindZZT/letter-shell

这种CLI以前在交换机上很多,后来都被GUI替代了,以前的嵌入式开发者对这类应用很熟悉,后来基本被Shell取代,大约十几二十几年前,CISCO,LINKSYS的gateway上都是这种,看起来很神秘高科技的东西,一个时代的渐行渐远。

那时候的CLI可以做得很炫,有些还带动画,ASCII码图,多种颜色,看了 letter-shell 好像也不支持对参数的帮助,只提示命令的 desc帮助。

ping [A.B.C.D/URL] 会提示单个参数的格式等等,记不太清楚了,很有趣的应用,所以想写一套针对单片机的寄存器任意位操作的CLI,并给出位段的功能提示,相当于一套内嵌的实时的datasheet,这样对于diy来说,可以在最底层验证寄存器的功能,可惜一直没空弄。

最近编辑记录 llinjupt (2022-04-02 19:52:01)

离线

#4 2022-04-02 22:07:44

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 521
积分: 642
个人网站

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

@llinjupt
linux/unix世界一直都有两套人机界面:CLI跟GUI。两套都在流行,没有说CLI被GUI替代。CLI即字符界面的定义是通过输入字符的方式跟计算机交互,所以但凡是输入字符命令的界面都叫CLI

linux/unix的CLI有一套图形库叫Ncurses,而GUI则有很多图形库流行度大点。

像bash、less、vi这些在标准输出上有彩色等的格式化输出的程序都依赖于Ncurses

最近编辑记录 海石生风 (2022-04-02 22:14:13)

离线

#5 2022-04-03 18:44:24

真的是很烦
会员
注册时间: 2018-10-08
已发帖子: 154
积分: 146.5

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

有个 clish   , 还有个 klish
操作起来风格更交换机的cli很类似,  有自动不全,有帮助提示

离线

#6 2022-04-03 19:36:16

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 565
积分: 570
个人网站

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

@llinjupt
哈哈,你这个功能我好像做过,但是不太完善,以前调试USB手柄的时候写的,你可以看看哈。
帖子跳转  ITX-190——一个性能不强却支持强大的开发板

最近编辑记录 LinjieGuo (2022-04-03 19:40:23)

离线

#7 2022-04-03 23:48:23

llinjupt
会员
注册时间: 2020-12-21
已发帖子: 92
积分: 177

Re: 谁能拒绝在自己的项目中添加终端工具用于调试呢?

真的是很烦 说:

有个 clish   , 还有个 klish
操作起来风格更交换机的cli很类似,  有自动不全,有帮助提示

对,就是这个,这个移植到单片机上面工作量还不小,但是功能很强,该有的都有,操作起来也很顺手。如果能用JSON格式替代掉繁琐的XML就更好了。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn