Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
启动
RT-Thread 中的启动任务调度时机,你了解吗
发布于 2021-10-12 00:53:04 浏览:1825
订阅该版
在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
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
KunYi
8
个答案
1
次被采纳
三世执戟
7
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部