搜索
bottom↓
回复: 23

RT-Thread RTOS组件:强大的finsh shell

[复制链接]

出0入0汤圆

发表于 2009-10-18 10:02:17 | 显示全部楼层 |阅读模式
通常,大家在接触RT-Thread时,都会以为这是一个最不重要的组件,可有可无,而且在产品中也不会用到,用了还担心是否会对系统造成不必要的开销,甚至影响到系统的稳定性、可靠性。

做为单片机系统的研发人员,可能大多使用JTAG来调试程序,出问题了就祭出仿真器的尚方宝剑,似乎宝剑一出,任何前方的艰难险阻就会因难而解。只是有一类情况(而且这种情况还是困扰系统稳定的最大的问题),问题出现的几率并不是100%的,时间上非确定,环境上非确定。例如一个系统存在内存泄漏,如何去确定它是否存在内存泄漏呢,难道等到内存全部使用完了才发觉?

看看RT-Thread + FinSH的解决方式:(请选择STM3210分支中携带finsh的版本)
FinSH最大的用处在于,在系统运行的时刻获取系统的信息,虽然信息的显示非常原始(通过串口等输出字符串信息),但分析这些原始的信息却最能找到有用的信息。例如上面的list_mem()命令,显示的就是系统的内存占用状况:
total memory: 59376
used memory: 0
maximum allocated memory: 0

显示的信息包括:
总的可用内存,59376字节
当前使用的内存,0字节
历史中最大的分配内存,0字节

再能够在线的执行一些命令后,如果怀疑系统中存在内存泄漏,过一段时间就可以再运行list_mem()命令以显示系统内存占用情况。如果used memory一直持续的增长,那么就极有可能发生了内存泄漏。

FinSH是一类非常特殊的shell系统,即不类似于DOS的命令行用法,也不类似于UNIX类的sh用法。而是一种看起来陌生而实际上非常非常熟悉的C语言模式:在命令行状态下,一条命令相对于C中的一条语句。例如下面的语句:
unsigned int *gpiof_bsrr;
unsigned int *gpiof_brr;
gpiof_bsrr  = 0x40011c10; /* GPIOF 的BSRR地址 */
gpiof_brr   = 0x40011c14; /* GPIOF 的BRR地址  */
*gpiof_bsrr = 0x80;        /* Set Pin7   */
*gpiof_brr  = 0x80;        /* Reset Pin7 */

如果GPIOF做了相应的配置:
*gpiof_bsrr = 0x80,代表的是点亮连接在PF7上的LED
*gpiof_brr  = 0x80,代表的是熄灭连接在PF7上的LED

我们让它在finsh下一条条执行:

每条执行完,下面会打印出一系列的数字,这些代表的是执行这些表达式的结果,例如
gpiof_brr  = 0x40011c14;
执行完会把gpiof_brr的值显示出来,如果是一个函数,那么显示的是这个函数的返回值。执行完后,PF7上的LED也相应的点亮和熄灭。

完全图文版本请见附件
点击此处下载 ourdev_492949.pdf(文件大小:180K) (原文件名:finsh shell.pdf)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2009-10-18 10:11:31 | 显示全部楼层
finsh虽然强大,但它的实现也需要代价,相当于一个小型的编译器 + 虚拟机

这套代码成型于2005年,它是计算机系本科高年级课程 编译原理 的真实实现,
包括了手工编写的词法分析、文法分析、语法树构造、中间代码生成、虚拟机等一套完整的编译技术。

finsh实现得比较独立,所以可以说是RT-Thread中最容易拆卸的组件,
对于一般开发人员来说,直接使用即可以了,不一定需要仔细了解其内部结构。
当然,如果正在学习编译原理,可以配合代码对编译原理进行相应的验证,其手工编写的词法分析、文法分析,代码逻辑非常清晰(注释中有相应的EBNF表达式)

出0入0汤圆

发表于 2009-10-18 10:50:07 | 显示全部楼层
吃国家粮的863计划没拉出像样的屎。
不花纳税人一分钱的民间却开始突破。
恭喜楼主。

出0入0汤圆

发表于 2009-10-18 11:18:42 | 显示全部楼层
最近新加的自动完成和历史记录非常好用,
不过退格还有BUG....

出0入0汤圆

 楼主| 发表于 2009-10-18 12:13:01 | 显示全部楼层
【3楼】 aozima
上次你说的退格bug,我好像重现不了啊

出0入0汤圆

 楼主| 发表于 2009-10-18 12:19:39 | 显示全部楼层
【2楼】 djyos
无所谓纳税不纳税,技术是无_界限的,不需要为技术的发展找理由。

RT-Thread会尽快的推出英文版本,登录freshmeat.net、sourceforge.net、www.osnews.com

出0入148汤圆

发表于 2009-10-18 13:50:00 | 显示全部楼层
支持楼主,帮顶

出0入0汤圆

发表于 2009-10-19 12:33:10 | 显示全部楼层
为什么楼主的RTGUI还不发布基于arm9的正式版?顶一下

出0入0汤圆

 楼主| 发表于 2009-10-19 13:01:32 | 显示全部楼层
arm9?没板子,没平台

RTGUI实际上已经放在google svn,有心人自然能够发现的。

出0入0汤圆

发表于 2009-10-19 17:28:55 | 显示全部楼层
确实很强大,调试变得很直观,最初我还以为是fish shell,我这里也有退格和不能删除的问题。

出0入0汤圆

 楼主| 发表于 2009-10-19 19:39:28 | 显示全部楼层
退格、不能删除的问题

能否给个复现步骤?上次aozimo说了下,但我一直不能复现。

出0入0汤圆

发表于 2009-10-19 21:19:36 | 显示全部楼层
就是在超级终端finsh提示符后面不论打什么文字都不能修改删除,我也不清楚aozimo说的是不是这个。

出0入0汤圆

发表于 2009-10-19 21:22:52 | 显示全部楼层
可能跟使用的终端有关...看了改进的源码,好像和WIN下面用超级终端的回退键的键码不一样....
而超级终端也有几种回退键设置,但试了都不行

出0入0汤圆

 楼主| 发表于 2009-10-19 21:58:53 | 显示全部楼层
哦,是这么回事?!我用的是putty,我换个超级终端试试。

出0入663汤圆

发表于 2009-10-19 22:00:54 | 显示全部楼层
putty可以连串口么?

出0入0汤圆

 楼主| 发表于 2009-10-26 13:41:12 | 显示全部楼层
【11楼】 ztom
【12楼】 aozima
svn版本已经支持超级终端的退格键,不过超级终端退格后不能在终端里把前一个字符删除掉,好像超级终端不认\b

【14楼】 gzhuli 咕唧霖
putty后面几个版本都能够使用串口了,我一般用它接linux的console串口。

出0入0汤圆

发表于 2009-10-26 14:17:43 | 显示全部楼层
OK!  已测试  OK!
这下打命令效率要高多了.
终端设置:


另外,超级的终端类型默认为自动检测,设置为TTY即可删除字符.

出0入0汤圆

发表于 2011-11-22 22:49:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-23 16:05:51 | 显示全部楼层
这个网站好强大,技术讲的都很深入

出0入0汤圆

发表于 2011-12-2 15:12:54 | 显示全部楼层
首先我是个新手,我输入set_date(2011,06,28)
电脑出来
set_date(2011,06,28)
        0, 0x00000000
finsh>>
finsh>>
不知为啥。

出0入0汤圆

发表于 2011-12-2 23:43:23 | 显示全部楼层
说RTT是中国人 的骄傲一点也不为过。   


顶一个

出0入0汤圆

发表于 2011-12-3 00:00:08 | 显示全部楼层
我也在学习RT_THREAD 想用到项目中。
下面是我对API的一些小总结。先上sem之前部分的,后面的继续更上。想问下书什么时候正式发布。看书比看电脑要爽的多。
点击此处下载 ourdev_701060M1NDZU.txt(文件大小:6K) (原文件名:RT_Thread_API.txt)

出0入0汤圆

发表于 2011-12-5 18:02:58 | 显示全部楼层
确实,期待着RTT的书籍推出。这么好的系统支持的人有多,出书的话,效率应该不是问题。

出0入0汤圆

发表于 2011-12-20 16:32:30 | 显示全部楼层
顶一下!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-11 13:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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