llpbhy 发表于 2021-10-9 09:36:54

单片机命令行交互调试 开源

本帖最后由 llpbhy 于 2021-10-9 10:37 编辑




yelong98 发表于 2021-10-9 09:49:06

强顶一下,上个月搞命令行解析搞了好久,最后用jiejie的开源移植的

596142041 发表于 2021-10-9 09:59:50

一直在用letter-shell,下载试试

istars2005 发表于 2021-10-9 10:27:00

文件是什么编码格式?
打开全是乱码

jemmy 发表于 2021-10-9 10:31:04

很感兴趣,下载回来学习一下。

jemmy 发表于 2021-10-9 10:34:02

打开文件全是乱码啊

llpbhy 发表于 2021-10-9 10:38:20

istars2005 发表于 2021-10-9 10:27
文件是什么编码格式?
打开全是乱码

不好意思,已经重新上传代码了。

llpbhy 发表于 2021-10-9 10:39:03

jemmy 发表于 2021-10-9 10:34
打开文件全是乱码啊

不好意思,已经重新上传代码了。

llpbhy 发表于 2021-10-9 11:26:32

596142041 发表于 2021-10-9 09:59
一直在用letter-shell,下载试试

letter-shell很强大,谢谢分享。

llpbhy 发表于 2021-10-9 11:27:38

yelong98 发表于 2021-10-9 09:49
强顶一下,上个月搞命令行解析搞了好久,最后用jiejie的开源移植的

jiejie?搜了一下,没搜到。帮忙贴下链接。

596142041 发表于 2021-10-9 11:48:17

llpbhy 发表于 2021-10-9 11:26
letter-shell很强大,谢谢分享。

主要是开源,功能做的也很完善,就没必要自己从新造轮子{:smile:} ,之前还用过nr_micro_shell,也是很不错的,可以尝试一下

yelong98 发表于 2021-10-9 11:56:20

llpbhy 发表于 2021-10-9 11:27
jiejie?搜了一下,没搜到。帮忙贴下链接。

https://github.com/jiejieTop/cmd-parser

lnso 发表于 2021-10-9 19:20:04

交互式调试

advarx21ic 发表于 2021-10-9 19:44:58

多谢分享,下载试试怎么用的

boycn 发表于 2021-10-9 19:58:35

谢谢开源

akey3000 发表于 2021-10-9 20:09:18

支持下开源

rz007 发表于 2021-10-9 22:03:06

没看懂呢,大神能多讲讲吗?

angler12 发表于 2021-10-9 22:14:19

感谢开源,同原子的USMART组件是相似的功能.

carolst 发表于 2021-10-10 16:15:36

多谢分享,下载来看看!

mcu5i51 发表于 2021-10-11 13:45:38

回到命令行了,慢慢升级就是别一个windows

llpbhy 发表于 2021-10-12 14:08:21

yelong98 发表于 2021-10-9 11:56
https://github.com/jiejieTop/cmd-parser

谢谢,对比了下letter-shell,cmd-parser比较轻量,letter-shell迭代的功能更多。

zhanyanqiang 发表于 2021-10-13 17:34:00

llpbhy 发表于 2021-10-12 14:08
谢谢,对比了下letter-shell,cmd-parser比较轻量,letter-shell迭代的功能更多。

大神推荐下哪个占资源小,移植方便

lfgc 发表于 2021-10-13 21:34:41

这个很好,解析 很不 容易

llpbhy 发表于 2021-10-14 09:16:28

本帖最后由 llpbhy 于 2021-10-14 09:20 编辑

zhanyanqiang 发表于 2021-10-13 17:34
大神推荐下哪个占资源小,移植方便

大神,不敢当,相互交流。

这个dbg_cmd 命令行支持4字节、浮点及字符串精简配置
配置关闭4字节及浮点解析

编译占用资源2k多,具体如下

       
移植只要dbg_cmd.c及dgb_cmd.h两个文件配合printf格式化输出函数


命令行考考使用 :https://donginker.gitee.io/mcu/dbg_cmd/index.html

llpbhy 发表于 2021-10-16 15:08:11

angler12 发表于 2021-10-9 22:14
感谢开源,同原子的USMART组件是相似的功能.

USMART了解了一下,正点原子也很上心,文档写得很全,比较好入手,谢谢介绍。

llpbhy 发表于 2021-10-16 15:17:20

yelong98 发表于 2021-10-9 09:49
强顶一下,上个月搞命令行解析搞了好久,最后用jiejie的开源移植的

自己搞命令行确实很花时间,也是一边做产品一边把自己的命令行需求一步步完善,主要是考虑单片机资源方面花了比较多心思,已经比较考虑极端资源的情况。

命令行对调试来说还是很有用,对模块进行单元测试和完整性测试死一个基础功能,再加上自己写一个python的串口工具,可以很方面的去收集和分析数据。

以下是对命令行的一些思考:

        升级下载
        设备通信(鱼)
        打印信息(熊)
        单个字符控制命令
                容易干扰
                命令数量很多后,不方便记忆
        字符串控制命令
                给每个命令取个名字,便于记忆
                调试改变参数,避免不了修改,编译,下载,查看
        命令名称+参数命令
                参数自由化
        MCU十进制与十六进制平分天下
                没有十六进制参数是没有色彩的
                添加十六进制命令参数
                命令名称 参数(十六进制) ...(回车)
        熊和鱼
                对于只有一个串口资源的mcu只拿来调试,谁都不同意
                创造登录口令进而复用串口
                        设备运行时串口是处理设备通信任务
                        需要调试监控时,登录调试模式

        局部与全局关闭编译
                局部
                        添加模块命令只有2个函数,一个是初始化注册函数,一个是命令行函数
                        要模块这2个函数添加预编译,而预编译DBG_CMD_EN定义在命令行.h文件中
                        模块屏蔽*include "dbg_cmd.h",则关闭相应模块命令行编译代码
                全局
                        要在命令行.h文件中屏蔽命令行DBG_CMD_EN定义,则关闭整个工程命令编译

yelong98 发表于 2021-10-19 08:20:07

我准备移植过去用一下试试,我觉得最需要解决的是传入不同个数的参数问题,我对楼主思考的通信和调试两用的想法不能再赞同了,有时候资源太有限,复用是个很好的主意,感谢无私分享

llpbhy 发表于 2021-10-19 08:49:27

yelong98 发表于 2021-10-19 08:20
我准备移植过去用一下试试,我觉得最需要解决的是传入不同个数的参数问题,我对楼主思考的通信和调试两用的 ...

谢谢认可,希望您在使用过程中有什么疑问或者建议提出来一起探讨。{:smile:}

shiva_shiva 发表于 2021-10-19 10:45:40

596142041 发表于 2021-10-9 09:59
一直在用letter-shell,下载试试

标记一下,回头试试

llpbhy 发表于 2021-11-20 08:44:49

github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/dac615d5a2455e8d57b0fc952df5986c09d98ecd?diff=split

定义函数地址类型 CMD_FUNC_T
比如MSP430单片机,编译可用选择地址大小,导致函数地址可设置为2字节与4字节,定义可以避免多处改动.

llpbhy 发表于 2021-11-20 08:46:00

github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/5256b197a0387436bf17d5002f0e3b71c9c77a63

更正PRN_ERR函数打印问题!

llpbhy 发表于 2021-11-20 08:46:38


github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/5eb4c27c2b3bc437c74fabf1024565e99a04741d

dbg_cmd.c
1 添加浮动型参数输入字符长度可配置,实现大于6位数或小于0.0000001浮动值输入.
2 添加字符输入方式,当字符参数无空格字符时,无需字符前后添加"",提高输入字符串效率.
仅当字符串参数中有空格字符,输入时前后需加""处理.

myprint.c
1 添加用户可灵活配置全局或局部等级信息打印详情或简洁模式
其中详细打印在输出打印信息时,额外打印文件路径,所在行,函数名,打印等级值

llpbhy 发表于 2021-11-20 08:48:25

github更新: https://github.com/OWON-LILIPUT/dbg_cmd/commit/171d8004874e3c9270b89674d429bcec2b92a5c6

去掉初始化时关闭JATG,避免下载到mcu导致jatg及swd接口失效!
失效处理:将程序引导到升级模式,避免运行用户程序,然后重新下载!

ljq77402 发表于 2021-11-20 10:55:13

用RThread吧

llpbhy 发表于 2021-11-20 14:23:12

ljq77402 发表于 2021-11-20 10:55
用RThread吧

这个命令行主要用于资源少的单片机,如果资源大的可以考虑用RThread或是Linux,这些生态也更丰富。

rz007 发表于 2021-11-20 14:25:43

命令行交互调试,mark

qwerttt 发表于 2021-11-21 12:33:53

好像没看懂怎么用
if (dbg_cmd_exec("SetPortVal", "11", "<0,1> <0~0xFF>")) {
“11”表示什么
如果SetPortVal是2个以上的参数,在哪里定义,是否需要定义

根据需求定义命令各种类型参数个数(下列为默认个数值)
#define PARAM_1BYTE_NUM 3 // "1" 1byte
#define PARAM_2BYTE_NUM 3 // "2" 2byte
#define PARAM_4BYTE_NUM 1 // "4" 4byte
#define PARAM_FOLAT_NUM 1 // "f" float
#define PARAM_STRING_NUM 2 // "s" string
这些define是定义一条命令的参数中,最大只能有3个1字节的参数?

fengxin32 发表于 2021-11-21 20:16:21

letter-shell非常好用,楼主这个消耗更少,不过懒得换了b( ̄▽ ̄)d 

llpbhy 发表于 2021-11-22 14:08:48

qwerttt 发表于 2021-11-21 12:33
好像没看懂怎么用
if (dbg_cmd_exec("SetPortVal", "11", " ")) {
“11”表示什么


问题:dbg_cmd_exec("SetPortVal", "11", " ")
其中"11"代表该命令参数的顺序,个数
就是命令字符串后面会有2个参数,并且第一个参数是1字节类型,第一个也是1字节参数.

问题:这些define是定义一条命令的参数中,最大只能有3个1字节的参数?
不同类型字节定义个数不是决定参数长度,但会决定该种类型参数的个数
比如1定义3个 2字节定义3个 那么命令最长的参数个数为6个(3个1字节和3个2字节参数)如
111222   121212112212等组合,这时命令接收长度就可以需要加长了

llpbhy 发表于 2021-11-29 09:17:58

本帖最后由 llpbhy 于 2021-11-29 09:20 编辑

github更新: https://github.com/OWON-LILIPUT/dbg_cmd/commit/953592a68d65ae22b16c4fb5d06744a2de6fadad

更正详细等级打印时,打印变量不输出问题.
添加my_print_string函数,并调整函数组织.
添加打印数据大于缓存长度时,提示str len > print buf size信息

附:如果大家在使用过程中有需要问题,或者新的功能需求请提出一起讨论,使得这个占用资源极少的单片机命令行工具,更加提升大家的调试效率。
页: [1]
查看完整版本: 单片机命令行交互调试 开源