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

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

本帖最后由 yangjie 于 2019-9-25 10:04 编辑
& O/ _8 a6 [. A. O( g
9 c: C4 C2 E0 g0 G+ P8 I' [3 V# K论坛上有很多帖子在说shell在使用上的问题,如不能输入命令、死机等。这里做个总结,基本都是大家踩过的坑,欢迎各位留言补充:0 k/ I! \/ ]. b: f) z- f$ ]

8 G0 W" p) t5 U' h; A+ {

! F" v, B& u0 k& y, K! _3 b1、首先要区分 finsh与msh,两种情况下需要输入的命令不一样,具体看 finsh文档【传统命令行模式】【C 语言解释器模式
+ X. c, X. v/ |% {https://www.rt-thread.org/document/site/programming-manual/finsh/finsh/#_10 d& N& F* x# w9 `9 m0 Q
1 ]- y0 ]2 w6 |2 G
9 {! K) k5 ?& U/ ~) e, w3 J
2、无法输入命令:5 b" I0 b- M+ b- C+ u. K" E. e6 J
可能终端软件里面开启了硬件流控(RTS,CTS选项是不是误打开了)
/ }8 C3 P( u$ f$ _nano中可能没开启 RT_USING_DEVICE宏9 |" j' z# O# [! l; H' ^5 _9 z. B5 [
nano中可能没开启RT_USING_FINSH宏7 K- q7 O! d- u; g
内存不够问题(一般出现no memory之类的提示)
; w7 U2 W( L; ?8 Q# D8 J
6 O1 j+ L/ @& i# B* J$ x# d. d
- H& t1 U: z* _
3、可能使用shell创建了线程,线程中做了死循环导致shell不能使用+ v7 b. K+ [  h; s+ T3 s
4、可能存在比shell线程优先级高的线程 进入了死循环,导致shell不能使用. c) W: f  m% Y/ n
5、如果shell使用了uart1,其他应用也使用了uart1,产生冲突。
' S- h  o- P" ~" d, K* K/ S6、一键下载电路与串口终端冲突问题:6 @+ u0 O; ^- A* [7 a' {
野火、正点原子一键下载电路和终端工具冲突,在使用终端工具如:PuTTy、XShell 时,会出现系统不能启动的问题,推荐使用串口调试助手如:sscom
* }/ ]1 r# \" I7 r$ q3 h  ^- Q* b9 \  B- C- j8 h

) ~8 f3 e  B! v1 R* Q2 K7、console name与注册的设备名不匹配
% s8 ]+ ^' q+ o8 `0 n9 H9 w; f+ p, x9 L8、console name与注册的设备名已匹配,但设备没有初始化(常见于:增加一个串口外设作为shell,只修改了Kconfig并使用env进行了配置,但是并未在cube中配置相应的串口外设,造成外设没有初始化)
7 O" D7 B( w( G# Q5 [0 a2 S
% W! `) a* P4 y+ G, p1 W" @
7 a. p1 i6 m/ z, M+ C
; Y( Q. }8 |: f7 _3 v& J
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-25 09:58:14 | 显示全部楼层
9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令
, j9 g4 ?9 J2 D: `3 q
使用道具 举报 回复
发表于 2019-9-25 10:21:18 | 显示全部楼层
yangjie 发表于 2019-9-25 09:58
3 T* a+ }) T" }& g1 q" z9、使用 nano 添加shell时,如果没有开启 FINSH_USING_SYMTAB 宏,则不能使用 tab 键调出系统命令
% G) I( \1 x/ V, U ...
0 a8 s  I8 r& L1 x! `
我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决?
使用道具 举报 回复
发表于 2019-10-26 14:51:34 | 显示全部楼层
yizhitiantian 发表于 2019-9-25 10:21* T# P: B! M0 d# U0 M' M4 ]" _
我试过一种情况是定义了一个1k大小的数组,串口就打不出msh>出来,这种情况怎么解决? ...

) v% L, V( [5 E+ z6 F详细描述问题,这个不会有问题的
使用道具 举报 回复
发表于 2019-12-20 21:39:23 | 显示全部楼层
最近在调试finsh,,,没调出来,,,可以请教楼主吗我调试的问题帖子% k# J4 j2 \; y0 v: q; c3 D+ J
使用道具 举报 回复
发表于 2020-1-20 09:29:05 | 显示全部楼层
10. 初始化了一个定时器,该定时器设置了100ms触发一次,里面是在定时在读一个adc值,而读取adc值需要程序就地等待转换结果读取数据,而定时器的优先级高于串口中断优先级,然后程序就等在那里,导致串口数据收发有丢包的情况
* Y3 _) M+ @! Y& b3 ?: \解决方法,开一个线程读取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 编辑
3 Y8 r4 X: K3 B, x' W, n; V: ?0 y' v
12.使用 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
1 F3 ~1 R- w' J% {8 D0 S! X12.使用 keil 的 pack installer 移植rt-thread,移植后必须手动添加 __CC_ARM 宏,否则默认不会启用FINSH ...

! [6 o+ }4 i% n, z6 O __CC_ARM是编译器自带宏
使用道具 举报 回复
发表于 2020-5-9 16:45:17 | 显示全部楼层
本帖最后由 jiladahe1997 于 2020-5-9 16:48 编辑
, g; S$ {4 g; {
yangjie 发表于 2020-4-22 13:39
6 n6 b; g* Q; O! v7 Z9 I* L; b2 X__CC_ARM是编译器自带宏

% G2 C5 |8 W. v+ @不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人。
使用道具 举报 回复
发表于 2020-5-9 16:52:03 | 显示全部楼层
jiladahe1997 发表于 2020-5-9 16:450 y0 V% T7 X% |. f/ X9 O1 u
不好意思,抱歉,是我自己搞错了,可以麻烦把我在10L的回帖删了吗(我这里无法重新编辑)? 以免误导他人 ...

7 ~- C$ a7 U# t& ?" c8 S# u& ^不用担心,没有关系的~
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Ta的主页 发消息

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

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

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

Powered by RT-Thread

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