打印

shell之工作流程

[复制链接]
162|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
社畜一枚|  楼主 | 2018-9-27 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自从来这里就没碰他们了,今晚找出来看了看SHELL的工作流程和输入的实现是这样进行的,方法不错值得借鉴。



首先系统建立一个shell专用的接受信号量(shrx),然后建立shell主线程,在线程中首先初始化所有的参数和全局变量,紧接着输出**,然后由于县城获取不到信号量而导致线程挂起,线程挂起在信号量上,没有释放永远挂起之,那么这个信号量在哪里得到释放的呢?肯定是shell的输入设备,串口1为例,在注册shell设备驱动的时候就已经吧shell的RX接入到一个USART1设备的一个回掉函数中,因此,每次USART1收到数据,系统就会自动的释放一次或几次信号量,这直接导致shell线程的因为得到信号量而工作,这就是他们之间的协调工作,每一次获取信号量就从串口1的队列中读取一个字符,这个字符被输入到shell内建立的一套命令机制,有效字符直接被存到shell对像中的字符数组中暂存,然后判断结束之后把这一串字符的指针传递到shell运行的函数中去,那里是处理这些字符的中心,最后退出shell,清空所有的计数和临时变量指针归位。等待下一一次的shell响应,这样就是完整的shell响应机制,也就是说我们可以按照这种方式来处理流设备。呵呵



日照某地

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

397

主题

401

帖子

0

粉丝