Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread发布
RTOS中的优先级分配问题
发布于 2013-04-26 19:04:45 浏览:3538
订阅该版
小ARM菜菜自序: 我是09年冬自学的单片机编程,那时候我还是个电工,在工地上边学边干,一心想找个单片机开发的工作,到了去年我才找到一家勉强接受我的公司,由于技校毕业没有什么学历,开始在公司做杂工,到后来硬件研发没有人玩过ARM,于是他们就让我写程序,我就开始从M0核开始搞,到现在,器件做的程序大部分是单片机程序,去年年中开始玩RTOS,先后用过UCOS-11,coocox,然后就是RTT了,哈哈,开始结实RTT的时候我是看了一个同事的代码,我当时的感觉是,哇卡卡,好牛逼的代码啊,好庞大啊,但是并没有机会接触,知道我们公司来了一个搞linux中层的研究生,由于他对底层不熟所以领导让我辅助他做底层,处理器就是STM32,那是我在RTT下建立起的第一个线程,呵呵, 言归正传: 问题1: 我最近在做一个程序,要通过串口读取外部设备发来的串口数据,然后判断和匹配 那么我思路是这样的:中断接收到一个包,就发送一个邮箱,然后建立一个等待线程,建立一个处理线程,如果按照谁急迫谁优先的话,那么显然接收线程应该高,但是问题来了,倘若接收线程大于处理线程,数据一直来,所以接收线程一直抢占,处理线程没有时间处理,这样也就没有意义,反过来,接收线程小于处理线程,那么当处理线程在处理的时候接收线程就不能保存来自串口的数据,丢失掉,肿木办? 问题2: 为什么在线程中用rt_delay挂起线程的时候会死呢?而在某些线程中却是没问题,我遇到过,比如说一个线程在等一个报警事件,当这个事件来临的时候我要鸣响警笛,延续5秒之后关闭,就是这个5秒我用的系统延时,按理说5秒之后应该进入这个线程,可是他开了就不关闭了,这个延时一旦被调用那么这个线程就会挂起,时间到了没有其他优先级更高的线程的话就会重新进入,但是确实没进入。难道是他挂起后,有别的比他优先级高的一直占用处理机?未可知? 问题3: LWIP的网络。比如说我建立了一个SOCKET,然后在这个上面等待连接,如果有链接进来会被唤醒并且进入接收数据,但是为什么我进入连接之后向远端IP发送数据后出现了一个很奇怪的现象,线连的状态不确定,但是物理层工作正常,LWIP的三服务都正常,就是没有数据进来了,很郁闷。这个现象也是我测试的时候无意发现的,而且所有的上层网络相应都没有了,物理层还在那里正常的工作,跟踪数据发现到TCP、ip服务线程那里都给丢掉了!什么原因呢?奇怪。。。 THE END
查看更多
5
个回答
默认排序
按发布时间排序
aozima
2013-04-26
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
1. 处理能力不够,无解。 先处理再继续接收至少能处理一部分,反之,则完全不能处理,根据实际需求自行决定。 2. 认真检查分析并调试自己的程序,由简入繁。
Shawn
2013-04-26
这家伙很懒,什么也没写!
问题1.我最近做的一个项目也差不多。提供以下两种思路: (1)数据接收,处理放在同一个线程下,接收到就处理。(不知道你的处理是否很复杂) (2)将这数据接收和处理线程设置为相同的优先级,然后根据实际情况分配时间片,我是这么做的,我做的项目显示这样做一般不会破坏实时性,响应速度也很快。当然也和你的数据量有关,数据量较大或处理较复杂的时候不知道是否可行。 问题2.最好贴代码让大家看看吧,或者自己单步跟踪看看。 问题3.没研究过LWIP。。。 希望对你有帮助
bernard
2013-04-26
这家伙很懒,什么也没写!
1. 并不是优先级的问题,而是处理能力的问题。 当处理线程处理不完时,肯定会导致丢包。但如果是突发情况,可以加缓冲以平衡处理速度。 比较好的方式是mail box。 2. 调试。另外,需要记住,不要在定时器超时函数中再调用rt_thread_delay()函数; 3. "但是为什么我进入连接之后向远端IP发送数据后出现了一个很奇怪的现象,线连的状态不确定" 看不太明白。
小ARM菜菜
2013-04-27
这家伙很懒,什么也没写!
谢谢,楼上我在研究,在发帖问
撰写答案
登录
注册新账号
关注者
0
被浏览
3.5k
关于作者
小ARM菜菜
这家伙很懒,什么也没写!
提问
10
回答
55
被采纳
0
关注TA
发私信
相关问题
1
RT-Thread单内核v0.2.2正式版
2
[发布] RT-Thread RTOS v0.2.3版本
3
RT-Thread 0.3.0 beta
4
RT-Thread/STM32 0.3.0 RC1发布
5
RT-Thread/LM3S 0.3.0 RC1版发布
6
建议弄个MIPS版本的。龙芯上用。
7
开源实时操作系统RT-Thread 0.3.0正式版发布
8
关于RT-THREAD的UDP讨论
9
这里是BUG回报板块!
10
rt-thread stm32 0.3.0 rc1 网络问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
env中添加lvgl软件包后,keil编译包--c99错误
2
【NXP-MCXA153】 定时器驱动移植
3
GD32F450 看门狗驱动适配
4
【NXP-MCXA153】看门狗驱动移植
5
RT-Thread Studio V2.2.9 Release Note
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
10
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部