嵌入式实时操作系统的核心就是调度器和任务切换,调度器的核心就是调度算法。大概分为三种合作式调度器,抢占式调度器和时间片调度器。

合作式调度器就是根据用户的设置时刻(周期或者单次)来执行相应的任务,每个时刻只有一个任务可以执行,这些任务间不支持被强占,直到该任务自愿放弃 CPU 的控制权。

抢占式调度器如果使用了抢占式调度,最高优先级的任务一旦就绪,总能得到 CPU 的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的 CPU 使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了 CPU 的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。

抢占式调度器会为每个任务都分配一个优先级,调度器会激活就绪任务中优先级最高的任务。

时间片调度器(Round-robin)实现 Round-robin 调度算法需要给同优先级的任务分配一个专门的列表,用于记录当前就绪的任务,并为每个任务分配一个时间片( 也就是需要运行的时间长度,时间片用完了就进行任务切换)。

 

这两天忙着验证在线升级程序,复习一遍STM32启动过程:

 

设置堆栈指针SP指向_initial_sp

设置PC指针指向Reset_Handler

设置中断向量表

配置系统时钟

配置外部SRAM/SDRAM

跳转的C库执行main

 

 

书籍来源:

http://www.armbbs.cn/forum.php

https://www.firebbs.cn/

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐