单片机命令行交互调试 开源
本帖最后由 llpbhy 于 2021-10-9 10:37 编辑强顶一下,上个月搞命令行解析搞了好久,最后用jiejie的开源移植的 一直在用letter-shell,下载试试 文件是什么编码格式?
打开全是乱码 很感兴趣,下载回来学习一下。 打开文件全是乱码啊 istars2005 发表于 2021-10-9 10:27
文件是什么编码格式?
打开全是乱码
不好意思,已经重新上传代码了。
jemmy 发表于 2021-10-9 10:34
打开文件全是乱码啊
不好意思,已经重新上传代码了。 596142041 发表于 2021-10-9 09:59
一直在用letter-shell,下载试试
letter-shell很强大,谢谢分享。 yelong98 发表于 2021-10-9 09:49
强顶一下,上个月搞命令行解析搞了好久,最后用jiejie的开源移植的
jiejie?搜了一下,没搜到。帮忙贴下链接。 llpbhy 发表于 2021-10-9 11:26
letter-shell很强大,谢谢分享。
主要是开源,功能做的也很完善,就没必要自己从新造轮子{:smile:} ,之前还用过nr_micro_shell,也是很不错的,可以尝试一下 llpbhy 发表于 2021-10-9 11:27
jiejie?搜了一下,没搜到。帮忙贴下链接。
https://github.com/jiejieTop/cmd-parser 交互式调试 多谢分享,下载试试怎么用的 谢谢开源
支持下开源 没看懂呢,大神能多讲讲吗? 感谢开源,同原子的USMART组件是相似的功能. 多谢分享,下载来看看! 回到命令行了,慢慢升级就是别一个windows
yelong98 发表于 2021-10-9 11:56
https://github.com/jiejieTop/cmd-parser
谢谢,对比了下letter-shell,cmd-parser比较轻量,letter-shell迭代的功能更多。 llpbhy 发表于 2021-10-12 14:08
谢谢,对比了下letter-shell,cmd-parser比较轻量,letter-shell迭代的功能更多。
大神推荐下哪个占资源小,移植方便 这个很好,解析 很不 容易 本帖最后由 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
angler12 发表于 2021-10-9 22:14
感谢开源,同原子的USMART组件是相似的功能.
USMART了解了一下,正点原子也很上心,文档写得很全,比较好入手,谢谢介绍。 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
我准备移植过去用一下试试,我觉得最需要解决的是传入不同个数的参数问题,我对楼主思考的通信和调试两用的 ...
谢谢认可,希望您在使用过程中有什么疑问或者建议提出来一起探讨。{:smile:} 596142041 发表于 2021-10-9 09:59
一直在用letter-shell,下载试试
标记一下,回头试试 github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/dac615d5a2455e8d57b0fc952df5986c09d98ecd?diff=split
定义函数地址类型 CMD_FUNC_T
比如MSP430单片机,编译可用选择地址大小,导致函数地址可设置为2字节与4字节,定义可以避免多处改动.
github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/5256b197a0387436bf17d5002f0e3b71c9c77a63
更正PRN_ERR函数打印问题!
github更新:https://github.com/OWON-LILIPUT/dbg_cmd/commit/5eb4c27c2b3bc437c74fabf1024565e99a04741d
dbg_cmd.c
1 添加浮动型参数输入字符长度可配置,实现大于6位数或小于0.0000001浮动值输入.
2 添加字符输入方式,当字符参数无空格字符时,无需字符前后添加"",提高输入字符串效率.
仅当字符串参数中有空格字符,输入时前后需加""处理.
myprint.c
1 添加用户可灵活配置全局或局部等级信息打印详情或简洁模式
其中详细打印在输出打印信息时,额外打印文件路径,所在行,函数名,打印等级值 github更新: https://github.com/OWON-LILIPUT/dbg_cmd/commit/171d8004874e3c9270b89674d429bcec2b92a5c6
去掉初始化时关闭JATG,避免下载到mcu导致jatg及swd接口失效!
失效处理:将程序引导到升级模式,避免运行用户程序,然后重新下载! 用RThread吧 ljq77402 发表于 2021-11-20 10:55
用RThread吧
这个命令行主要用于资源少的单片机,如果资源大的可以考虑用RThread或是Linux,这些生态也更丰富。 命令行交互调试,mark
好像没看懂怎么用
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字节的参数? letter-shell非常好用,楼主这个消耗更少,不过懒得换了b( ̄▽ ̄)d 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:20 编辑
github更新: https://github.com/OWON-LILIPUT/dbg_cmd/commit/953592a68d65ae22b16c4fb5d06744a2de6fadad
更正详细等级打印时,打印变量不输出问题.
添加my_print_string函数,并调整函数组织.
添加打印数据大于缓存长度时,提示str len > print buf size信息
附:如果大家在使用过程中有需要问题,或者新的功能需求请提出一起讨论,使得这个占用资源极少的单片机命令行工具,更加提升大家的调试效率。
页:
[1]