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

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

本帖最后由 yangjie 于 2019-9-25 10:04 编辑 ! X# v8 c+ k  D, y' O3 B
6 o% Z$ G% b$ Y+ Q% U; @
论坛上有很多帖子在说shell在使用上的问题,如不能输入命令、死机等。这里做个总结,基本都是大家踩过的坑,欢迎各位留言补充:8 @* X5 _& ^( ~4 F2 k
" p- d- ]5 ~' O% x
- T7 T/ K/ U% C! y
1、首先要区分 finsh与msh,两种情况下需要输入的命令不一样,具体看 finsh文档【传统命令行模式】【C 语言解释器模式
8 n5 f) ]* J) |9 Phttps://www.rt-thread.org/document/site/programming-manual/finsh/finsh/#_1
, [2 |; I* n0 V2 v- u' f4 g) k( u2 I( f! R$ l" W6 q! S
/ Q' \  E( q, X( a" d5 r4 f
2、无法输入命令:$ U9 H$ J5 \/ H% {6 V8 p
可能终端软件里面开启了硬件流控(RTS,CTS选项是不是误打开了)
. J& L7 Z1 P) U$ Q5 a3 L6 y& bnano中可能没开启 RT_USING_DEVICE宏, j; X9 Q0 l! j3 ]3 c) H' Y2 L
nano中可能没开启RT_USING_FINSH宏
, @& q1 C# s5 Q" b2 b/ O+ S内存不够问题(一般出现no memory之类的提示)
! h6 ]7 h0 `# R# h2 J% T+ k% q/ a8 M
2 S) w% A; Z, w
3、可能使用shell创建了线程,线程中做了死循环导致shell不能使用2 ]1 w/ k. i4 m
4、可能存在比shell线程优先级高的线程 进入了死循环,导致shell不能使用
/ E+ `" A. j6 }  d5、如果shell使用了uart1,其他应用也使用了uart1,产生冲突。0 x/ d- J& N  ?; \6 _/ S
6、一键下载电路与串口终端冲突问题:
" A# ~' P$ d7 v' z野火、正点原子一键下载电路和终端工具冲突,在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题,推荐使用串口调试助手如:sscom/ O3 T* [7 k/ c) N; ?
! r7 Q8 V* q+ i" ~. b
4 Y& w( G% e2 D" [
7、console name与注册的设备名不匹配8 @& d" k! q; v% z, C' a, T8 I0 I' L
8、console name与注册的设备名已匹配,但设备没有初始化(常见于:增加一个串口外设作为shell,只修改了Kconfig并使用env进行了配置,但是并未在cube中配置相应的串口外设,造成外设没有初始化)  `& ]: z8 H5 q1 G" ~7 R( T0 N
# ~3 c! R8 c/ A: |, E

. g, {: G+ `4 {, g2 W( M2 q/ k: \0 b  A
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-25 09:58:14 | 显示全部楼层
9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令7 }5 p9 J8 \8 _+ l
使用道具 举报 回复
发表于 2019-9-25 10:21:18 | 显示全部楼层
yangjie 发表于 2019-9-25 09:58! M  r( {- ]( k( g1 V# J6 }; g
9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令
9 k5 p" W( o& e ...

! L$ M- G0 `& \8 }6 {& W- t我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决?
使用道具 举报 回复
发表于 2019-10-26 14:51:34 | 显示全部楼层
yizhitiantian 发表于 2019-9-25 10:21
6 K! d3 {; u* U* N我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决? ...

! y$ i0 p* t2 h3 z2 a1 }详细描述问题,这个不会有问题的
使用道具 举报 回复
发表于 2019-12-20 21:39:23 | 显示全部楼层
最近在调试finsh,,,没调出来,,,可以请教楼主吗我调试的问题帖子
4 B6 e) }- g. \/ x/ N; C1 m# e: R" M4 b; d
使用道具 举报 回复
发表于 2020-1-20 09:29:05 | 显示全部楼层
10. 初始化了一个定时器,该定时器设置了100ms触发一次,里面是在定时在读一个adc值,而读取adc值需要程序就地等待转换结果读取数据,而定时器的优先级高于串口中断优先级,然后程序就等在那里,导致串口数据收发有丢包的情况
' V' N2 S7 ]5 i0 i$ q0 ^解决方法,开一个线程读取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 编辑 * E. _; v/ B. M; R5 b" o) d& g

$ @8 a# l" Y9 B12.使用 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+ e' p; b& t4 t2 U
12.使用 keil 的 pack installer 移植rt-thread,移植后必须手动添加 __CC_ARM 宏,否则默认不会启用FINSH ...

- r/ @# {7 ~& X1 B' B* N$ P __CC_ARM是编译器自带宏
使用道具 举报 回复
发表于 2020-5-9 16:45:17 | 显示全部楼层
本帖最后由 jiladahe1997 于 2020-5-9 16:48 编辑
: A1 M2 c$ h8 v: m# [  J8 [) W
yangjie 发表于 2020-4-22 13:39
" O$ b) U4 o+ R0 V8 B1 c+ j__CC_ARM是编译器自带宏

7 e4 c, a( U' U( X, z# l( }不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人。
使用道具 举报 回复
发表于 2020-5-9 16:52:03 | 显示全部楼层
jiladahe1997 发表于 2020-5-9 16:459 |. M( q5 E$ c
不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人 ...
" V9 t5 D( }# T; `1 o
不用担心,没有关系的~
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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