【总结】shell 的相关问题---踩过的坑

置顶 精华 2019-9-25 09:54 [复制链接] 12 2281

本帖最后由 yangjie 于 2019-9-25 10:04 编辑
! a/ ?9 B; q8 T; s' |5 c
. v/ E+ M, s, |: |) w7 i1 D论坛上有很多帖子在说shell在使用上的问题,如不能输入命令、死机等。这里做个总结,基本都是大家踩过的坑,欢迎各位留言补充:+ B& @' P# k& l  ], j# }
0 N6 d. v9 _7 l7 U; U
9 t; P! Z! h) f, E' A$ c+ r3 X
1、首先要区分 finsh与msh,两种情况下需要输入的命令不一样,具体看 finsh文档【传统命令行模式】【C 语言解释器模式2 D5 [( h% [# g' ]
https://www.rt-thread.org/document/site/programming-manual/finsh/finsh/#_1
9 ~2 l7 w  ^0 O& ]% l
5 a' J' l' i( f5 h! H
5 B! l" J7 O0 Z  A; v  U: [$ n& }* Z
2、无法输入命令:
. V1 n) _  E# ]$ D: R可能终端软件里面开启了硬件流控(RTS,CTS选项是不是误打开了)
, G! A; o3 o- Y( [+ Lnano中可能没开启 RT_USING_DEVICE宏! V& a( R5 Y9 W8 |: r' y
nano中可能没开启RT_USING_FINSH宏
) Q/ y# X- ^8 u! s3 r内存不够问题(一般出现no memory之类的提示)8 w, }" _/ E% L% d6 t4 L+ c6 Q
3 w$ w+ F0 y  v2 ]+ n7 X, ~1 _

7 A; I+ Y  A. I8 z! C+ c3、可能使用shell创建了线程,线程中做了死循环导致shell不能使用- m# P2 g5 |1 H3 _5 X
4、可能存在比shell线程优先级高的线程 进入了死循环,导致shell不能使用, o: j' I3 E  E. d
5、如果shell使用了uart1,其他应用也使用了uart1,产生冲突。; v8 E% `  t" A% G& b
6、一键下载电路与串口终端冲突问题:& ]( H$ v& x. q7 K  f6 x  P
野火、正点原子一键下载电路和终端工具冲突,在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题,推荐使用串口调试助手如:sscom5 L/ m4 f% x; V0 X' p
- I2 b3 E1 U$ R* ]4 V8 q

1 |2 F- k! f  Q+ u' W+ _: T7、console name与注册的设备名不匹配; O  J. T; o+ A5 I' ~! T
8、console name与注册的设备名已匹配,但设备没有初始化(常见于:增加一个串口外设作为shell,只修改了Kconfig并使用env进行了配置,但是并未在cube中配置相应的串口外设,造成外设没有初始化)
5 I$ g+ h8 D; `: L7 r8 r# V$ z& ]2 p, i& U, h* `2 r) U
! ?1 |6 a3 C  a% T9 [  M
$ r& }2 o! f/ O9 l& P% r" ]2 \/ ]
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-25 09:58:14 | 显示全部楼层
9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令
! g" o6 t# m2 t1 \+ H* b. g
使用道具 举报 回复
发表于 2019-9-25 10:21:18 | 显示全部楼层
yangjie 发表于 2019-9-25 09:58/ K% n# O, d$ R8 h
9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令
3 x6 C+ {/ H# G7 D" q ...
+ I9 O8 m& P$ I6 \% P
我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决?
使用道具 举报 回复
发表于 2019-10-26 14:51:34 | 显示全部楼层
yizhitiantian 发表于 2019-9-25 10:21
" N0 |. |5 i& Y+ E. B我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决? ...

4 ^4 v6 Y6 X: u$ W8 b( |详细描述问题,这个不会有问题的
使用道具 举报 回复
发表于 2019-12-20 21:39:23 | 显示全部楼层
最近在调试finsh,,,没调出来,,,可以请教楼主吗我调试的问题帖子
1 b9 l" c3 \7 ?0 b+ ]
使用道具 举报 回复
发表于 2020-1-20 09:29:05 | 显示全部楼层
10. 初始化了一个定时器,该定时器设置了100ms触发一次,里面是在定时在读一个adc值,而读取adc值需要程序就地等待转换结果读取数据,而定时器的优先级高于串口中断优先级,然后程序就等在那里,导致串口数据收发有丢包的情况, \. |8 C' B) g+ q+ [8 v4 {8 }9 `
解决方法,开一个线程读取adc值 或者 将硬件定时器 改为 软件定时器触发
使用道具 举报 回复
发表于 2020-1-20 09:31:28 | 显示全部楼层
11. 打印串口的设备。485转USB 设备坏了,导致数据输出有明显的延时
使用道具 举报 回复
发表于 2020-1-20 09:32:34 | 显示全部楼层
另外 楼主  这个 帖子 可以看下嘛  https://www.rt-thread.org/qa/thread-11796-1-1.html
使用道具 举报 回复
发表于 2020-3-4 08:57:20 | 显示全部楼层
请教楼主,看一下这个帖子  shell 卡死在getchar
使用道具 举报 回复
发表于 2020-4-21 17:34:17 | 显示全部楼层
本帖最后由 jiladahe1997 于 2020-4-21 17:40 编辑 ' s" G1 U4 i# K$ h

. c2 U9 A( W* a- J9 b; _, y12.使用 keil pack installer 移植rt-thread,移植后必须手动添加 __CC_ARM 宏,否则默认不会启用FINSH。
批注 2020-04-21 172921.png

源码

源码
使用道具 举报 回复
发表于 2020-4-22 13:39:45 | 显示全部楼层
jiladahe1997 发表于 2020-4-21 17:34
) ^4 e4 t% D! ]" N- {! Z12.使用 keil 的 pack installer 移植rt-thread,移植后必须手动添加 __CC_ARM 宏,否则默认不会启用FINSH ...
& P7 T. v* o- N9 a. w
__CC_ARM是编译器自带宏
使用道具 举报 回复
发表于 2020-5-9 16:45:17 | 显示全部楼层
本帖最后由 jiladahe1997 于 2020-5-9 16:48 编辑 / [6 r- V2 @( w3 \
yangjie 发表于 2020-4-22 13:39
$ @, J* {' |. H2 C& _+ o__CC_ARM是编译器自带宏

* F" Z/ R5 |! `不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人。
使用道具 举报 回复
发表于 2020-5-9 16:52:03 | 显示全部楼层
jiladahe1997 发表于 2020-5-9 16:45+ @/ U, H- O4 Y' W- B$ H, W& m
不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人 ...

( F: S+ L' y5 H" ?  o* B不用担心,没有关系的~
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 5 主题
  2. 2673 帖子
  3. 2673 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表