"); //-->
第一天
我今天学习的是RT—Thread线程和时钟定时器管理。
系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,而RT-Thread 的线程调度器是抢占式的。
线程具有上下文切换、保护线程中局部变量、函数调用上下文保存等作用。当线程刚开始创建还没开始运行时就处于初始状态;在初始状态下,线程不参与调度。此状态在 RT-Thread 中的宏定义为RT_THREAD_INIT。在就绪状态下,线程按照尤先级排队等待被执行;一旦当前线程运行完毕让出处理器,操作系统会马上寻找最高优先级的就绪态线程运行。此状态在 RT-Thread 中的宏定义为 RT_THREAD_READY线程当前正在运行在单核系统中,只有rthread_ self0 函数返回的线程处于运行状态;在多核系统中,可能就不止这一个线程处于运行状态。此状态在 RT-Thread 中的宏定义为 RT_THREAD_RUNNING也称阻塞态。可能因为资源不可用 而挂起等待,或式程主动了延时一段时间而挂起。在挂起状态下,线程不参与调度。此状态在FT-Thread 中的宏定义为 RT_THREAD_SUSPEND当线程运行结束时将处干关闭状态。关闭状态的线程不参与线程的调度。此状态在 RT-Thread 中的宏定义为 RT_THREAD _CLOSE。
在系统启动时,系统会创建 main 线程,它的入口函数为 main_thread_entry(),用户的应用入口函数 main() 就是从这里真正开始的,系统调度器启动后,main 线程就开始运行。
RT-Thread 中,定时器分为硬件定时器和软件定时器,触发方式分为单次触发和周期触发。我们在创建定时器时,把定时器指定成SOFT_TIMER的方式,这样可以使得定时器超时函数完全运行在timer系统线程上下文环境中。如果系统在初始化时需要使用SOFT_TIMER特性,需要在系统配置中打开RT_USING_TIMER_SOFT宏定义,那么调用rt_system_timer_thread_init函数就可以启动timer系统线程。这里值得注意的是,SOFT_TIMER定时器的精度由RT_TIMER_TICK_PER_SECOND定义的值所决定,这个值必须是OS tick的整数倍。
硬件定时器因为是在中断中执行,所以对超时函数有很强的限制:1.时间不能太久2,不能有挂起、等待操作3.不能申请动态内存、释放动态内存。软件定时器因为是在线程中执行,所以要求就比较宽泛一点:1.时间也要短2,不允许有阻塞挂起、死循环3,不能影响其他超时函数的下一次回调,也就是时间短的标准。使用硬件定时器,在时基更新的时候,查询的定时器包含线程的内置定时器和用户定义的定时器,它们都挂在硬件定时器列表上,而且特点是:所有线程的内置定时器的回调函数都是一个函数,而用户自定义的定时器的回调函数由用户自定义。在每次系统滴答中断进行线程恢复和调度是通过调用线程内置的定时器的超时函数实现的。抛开一切不说,滴答中断里是查询定时器,有超时的定时器就调用其超时函数,当这个定时器是线程内置的定时器,它这个超时函数就是恢复线程和执行调度。如果这个定时器是用户自己开的硬件定时器时,其调用的超时函数就是用户自己写的。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
相关推荐
RT-H001:可穿戴心率监测模块方案
基于RT-Thread和STM32的数码相框设计方案
NSSine™系列实时控制MCU/DSP助力数字电源与电机开发
基于RT-Linux的嵌入式PLC设计及实现
RT-Linux源码
请教arm9 embeddedIce-rt的一个技术细节问题
纳芯微与RT-Thread睿赛德达成战略合作,共筑自主可控实时控制MCU/DSP体系
RISC-V汽车平台通过RT-Europa实现实时控制
几个RT-Linux 源码
rt9245应用电路
有关软件编程的论文30篇
英飞凌亮相2024 RT-Thread开发者大会,加速AI进化,共探智能硬件创新之路
RW61X:安全i.MX RT MCU中的Wi-Fi 6三频器件
RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
CES获奖:HUMANICS SEGYM RT智能互联机器人训练平台
NXP之i.MX RT系列单片机上电操作
AD7711为具有RTD电流源的LC²MOS信号调节ADC电路
基于RT-Linux的嵌入式PLC设计及实现
泰克将其多项分析技术特长融入RT-Eye软件
恩智浦携手RT-Thread,全力赋能智能工业与物联网新时代!
Quadlator II--RT-Linux内核驱动基础
多相位PWM控制器的CPU供电电源电路图
将RT-Thread移植到MCUXPressoIDE上(基于FRDM-MCX C444)
555+RT测量电路
RT 版图寄生的效应