Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread发布
RTT调度方面的一些困惑
发布于 2015-11-15 12:16:29 浏览:3880
订阅该版
最近看RTT源代码,对于任务调度方面有些困惑: 1、```#define rt_list_entry(node, type, member) ((type *)((char *)(node) - (unsigned long)(&((type *)0)->member)))```,如果将list和tlist放到rt_thread的第一和第二个字节,这样在查找任务是不就可以避免(unsigned long)(&((type *)0)->member))这个计算,加快调度速度了吗? 2、是否可以像FreeRTOS一样在链表项中直接增加一个指针,指向包含它的任务,这样也可以加快调度速度 3、一些非必须的变量有没有必要一定放到任务控制块中呢,例如任务名 4、是否可以做两个表格(每个大小256),记录每个优先级属于哪个组,每个优先级对应组中的哪一位,这样可以省去两个变量,看起来整洁一些,例如优先级10,先查表1找到属于第一组,再查表二得到04H。 5、RTT的__rt_ffs耗时有一定的不确定性,当然使用CM3因为有相应的指令,时间是确定的。 现在只是刚开始看RTT,不成熟的理解望大家不要见笑。
查看更多
9
个回答
默认排序
按发布时间排序
bernard
2015-11-15
这家伙很懒,什么也没写!
1. 最开始的是对象,tlist是调度时的链表,放不到前面去,而且那个rt_list_entry也不会省太多。 2. 指的是什么?thread->tid = thread? 3. 任务名放哪里? 4. 5. 现在多数是指令了,所以使用相应的指令就好。M3/4/7都有,M0没有,ARM9/11/A都有
hehao9051
2015-11-15
这家伙很懒,什么也没写!
``` typedef struct { int a; int b; }struct_x; typedef struct { struct_x x; int c; }struct_y; struct_y y; ``` 结构体y的地址与结构体y.x的地址是相同的,假如任务控制块如下: ``` struct rt_thread { rt_list_t tlist; rt_list_t list; } ``` 任务控制块对象的地址与任务控制块中tlist的地址是相同的,就不用计算了
hehao9051
2015-11-15
这家伙很懒,什么也没写!
``` struct xLIST_ITEM { portTickType xItemValue; /*< The value being listed. In most cases this is used to sort the list in descending order. */ volatile struct xLIST_ITEM * pxNext; /*< Pointer to the next xListItem in the list. */ volatile struct xLIST_ITEM * pxPrevious;/*< Pointer to the previous xListItem in the list. */ void * pvOwner; /*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */ void * pvContainer; /*< Pointer to the list in which this list item is placed (if any). */ }; ``` 这个是FreeRTOS中的链表项,其中的pvOwner就指向相应的任务控制块;RTT现在需要计算是因为name[RT_NAME_MAX]的大小不确定和RT_USING_MODULE的不确定吧
hehao9051
2015-11-15
这家伙很懒,什么也没写!
rt_list_entry确实也花费不了多少时间,但是能省就省吗,STM32的反汇编如下: ``` 0x0800632A 488F LDR r0,[pc,#572] ; @0x08006568 0x0800632C F8501035 LDR r1,[r0,r5,LSL #3] 0x08006330 F04F0014 MOV r0,#0x14 0x08006334 EBA10400 SUB r4,r1,r0 ```
hehao9051
2015-11-15
这家伙很懒,什么也没写!
刚开看了下FreeRTOS的任务控制块中也有任务名,感觉任务名用处不大,有点浪费RAM
hehao9051
2015-11-16
这家伙很懒,什么也没写!
是我理解的不对吗?哪位能解释一下我的建议是否可行。不过论坛登录好像有点问题,使用CHROME 登录不能正常显示密码输入框和验证吗
bernard
2015-11-16
这家伙很懒,什么也没写!
增加没多少
askfordream
2015-12-04
这家伙很懒,什么也没写!
>刚开看了下FreeRTOS的任务控制块中也有任务名,感觉任务名用处不大,有点浪费RAM --- 任务名的设计能够在运行或调试时更容易确认出错的任务。 一般而言,我们设置的任务名称不会超过10个字节,并不会浪费很多内存。 许多OS,默认为任务设置t*或p*(此处*为从0开始的数字)的任务名。
撰写答案
登录
注册新账号
关注者
0
被浏览
3.9k
关于作者
hehao9051
这家伙很懒,什么也没写!
提问
1
回答
5
被采纳
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
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
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
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
15
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
8
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部