问题1:
我最近在做一个程序,要通过串口读取外部设备发来的串口数据,然后判断和匹配
那么我思路是这样的:中断接收到一个包,就发送一个邮箱,然后建立一个等待线程,建立一个处理线程,如果按照谁急迫谁优先的话,那么显然接收线程应该高,但是问题来了,倘若接收线程大于处理线程,数据一直来,所以接收线程一直抢占,处理线程没有时间处理,这样也就没有意义,反过来,接收线程小于处理线程,那么当处理线程在处理的时候接收线程就不能保存来自串口的数据,丢失掉,肿木办?
问题2:
为什么在线程中用rt_delay挂起线程的时候会死呢?而在某些线程中却是没问题,我遇到过,比如说一个线程在等一个报警事件,当这个事件来临的时候我要鸣响警笛,延续5秒之后关闭,就是这个5秒我用的系统延时,按理说5秒之后应该进入这个线程,可是他开了就不关闭了,这个延时一旦被调用那么这个线程就会挂起,时间到了没有其他优先级更高的线程的话就会重新进入,但是确实没进入。难道是他挂起后,有别的比他优先级高的一直占用处理机?未可知?
问题3:
LWIP的网络。比如说我建立了一个SOCKET,然后在这个上面等待连接,如果有链接进来会被唤醒并且进入接收数据,但是为什么我进入连接之后向远端IP发送数据后出现了一个很奇怪的现象,线连的状态不确定,但是物理层工作正常,LWIP的三服务都正常,就是没有数据进来了,很郁闷。这个现象也是我测试的时候无意发现的,而且所有的上层网络相应都没有了,物理层还在那里正常的工作,跟踪数据发现到TCP、ip服务线程那里都给丢掉了!什么原因呢?奇怪。。。
更多回帖