Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
启动
RT-Thread 中的启动任务调度时机,你了解吗
发布于 2021-10-12 00:53:04 浏览:1797
订阅该版
在rtthread中,任务调度是发生在**tick定时中断**,在中断中会处理任务的调度工作 一、rtt 使用`rt_system_scheduler_start`这个接口启动任务调度。那么是在什么时候使能的定时tick中断的呢? 1. 如果任务调度启动之前产生定时中断,可能会使得该任务的第一次运行时间片减少,也可能会出现获取到错误的线程指针,导致访问线程数据出错发生异常 2. 如果任务启动之后在去产生或者使能定时器中断,这个就要在任务中进行开启中断,因为rtt在启动调度的时候,就会跳转到最高优先级任务中去。但是这样做也不通用,而且也会带来一些不确定因素 二、RTT如何实现在启动调度运行第一个任务的同时开启定时中断? 仔细阅读跟踪代码发现,在切换到第一个任务时候,使用的api是`rt_hw_context_switch_to`,阅读其源代码,可以发现在最后一句,通过恢复PC LR跳转到目标任务,于此同时设置了SPSR寄存器。所以在跳转时硬件也会把SPSR寄存器恢复到CPCR寄存器中。此时的CPCR设置中开启了处理器全局中断。所以达到了跳转到第一个任务的同时启动定时器,任务调度 ``` ldmfd sp!, {r1} msr spsr_cxsf, r1 /* original mode */ ldmfd sp!, {r0-r12,lr,pc}^ /* irq return */ ```
6
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
jhb
这家伙很懒,什么也没写!
文章
1
回答
21
被采纳
1
关注TA
发私信
相关文章
1
这个at_device初始联网等操作为什么要在main函数之前呢?
2
secboot running V3.1...
3
bl entry 的 entry 在哪?
4
keil mdk5.32,rttos启动打印版本号后,为啥还会打印6次err?
5
内核启动函数中一开始关闭了中断,那在哪里打开了中断呢?
6
RT-Thread studio下完程序板子无法自己启动
7
怎么判断RT-Thread系统启动了
8
RTT系统在启动时rt_hw_interrupt_disable(),对应的开中断操作在哪里?
推荐文章
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组件
热门标签
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
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部