版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章LiteOS下应用程序的基本要素主讲人:王宜怀时间:2025.6实时操作系统应用开发技术3.1中断基本概念及处理过程3.2时钟嘀嗒与延时函数3.3调度策略3.4LiteOS中的线程状态迁移说明01020304目录3.5本章小结05中断基本概念及处理过程3.1PART-实时操作系统应用开发技术1.中断基本概念3.3.1中断基本概念及处理过程中断与异常的基本含义中断是外部设备或硬件条件引起的程序切换,异常是内部错误或指令引起的切换。中断优先级高于异常,中断可被屏蔽,异常不可屏蔽。中断优先级分类中断优先级决定中断响应顺序,高优先级中断可打断低优先级中断。中断分为可屏蔽中断和不可屏蔽中断,可屏蔽中断可通过程序设置屏蔽,不可屏蔽中断不可关闭。中断源是引起中断的设备,中断服务例程是中断发生后执行的程序,中断向量号是中断源编号,中断向量表存放中断服务例程首地址。中断相关要素4/192.中断处理的基本过程1)中断请求当某一中断源需要CPU为其服务时,会向CPU发出中断请求信号。中断控制器获取中断源硬件设备的中断向量号,并将对应硬件模块的中断状态寄存器中的“中断请求位”置位,以便让CPU知道发生了何种中断请求。2)中断检测CPU在每条指令结束时检查中断请求或系统是否满足异常条件。多数CPU专门在指令周期中使用中断周期检测系统中是否有中断请求信号。若检测到中断请求信号,CPU暂停当前程序,转去响应中断请求;若无中断请求信号,则继续执行当前程序。3)中断响应过程中断响应过程由系统自动完成,对用户透明。首先,CPU查找中断源所对应的中断模式是否允许产生中断,若允许,则响应该中断请求,并保存当前环境的“上下文”于栈中;然后,通过中断向量号找到中断向量表中对应的ISR的首地址,转而去执行ISR。3.3.1中断基本概念及处理过程5/193.1.2CH32V303中断向量表及中断向量号宏定义1.CH32V303微控制器的中断向量表6/193.1.2CH32V303中断向量表及中断向量号宏定义2.CH32V303微控制器的中断向量号宏定义7/19时钟嘀嗒与延时函数3.2PART-实时操作系统应用开发技术时钟嘀嗒是LiteOS中时间的最小度量单位,也是线程调度的基本时间单元,主要用于系统计时、线程调度等。要进行线程切换,至少等一个时钟嘀嗒。时钟嘀嗒由硬件定时器产生,一般以毫秒为单位。在CH32V303内核中,时钟嘀嗒设置为1ms。3.2.1时钟嘀嗒9/193.3.2延时函数使用delay_ms函数时,需注意两点:一是delay_ms只能用在对时间精度要求不高或者时间间隔较长的场合,因为其延时时长参数以时钟嘀嗒为单位,当1个时钟嘀嗒大于1ms且对延时时长精度要求较高时,实际延时时间与希望延时时长可能会有误差;二是延时小于1个时钟嘀嗒时不使用delay_ms函数,而是根据具体延时时间采用其他更合理的方式。2.使用LiteOS下延时函数的注意点02在有操作系统的情况下,线程一般不采用原地空跑的方式进行延时,而是使用延时函数。LiteOS中的延时函数osDelay(宏定义为delay_ms)可让线程暂停执行,让出CPU使用权,并通过延时列表管理延时线程。执行该函数时,将当前线程的定时器按其延时参数指示的时间插入到延时列表的相应位置,该列表中的线程的定时器按照延时时长从小到大排序。在延时期间,该线程放弃CPU使用权,内核调度正常进行,可执行别的就绪线程。当延时时间到达时,线程进入就绪列表,等待LiteOS调度运行。1.LiteOS下延时函数的基本内涵0110/19调度策略3.3PART-实时操作系统应用开发技术3.3.1调度基础知识优先级抢占调度让就绪列表中优先级最高的线程先运行,优先级相同则采用先进先出策略。高优先级线程可抢占低优先级线程,线程阻塞后放弃CPU使用权,调度系统分配CPU给优先级最高的线程。优先级抢占调度时间片轮询调度让就绪列表中优先级最高的线程先运行,优先级相同的线程采用时间片轮转方式分享CPU时间,不同优先级线程按先进先出策略排列,相同优先级线程采用时间片轮询调用。时间片轮询调度12/19LiteOS主要采用优先级抢占式调度策略,总是将CPU的使用权分配给当前就绪的、优先级最高的且更早进入就绪态的线程。创建线程中的时间片参数实际并未使用,设置所有线程的时间片大小为0,不会进行时间片轮询调度。若未出现优先级抢占或者线程阻塞的情况,正在运行的线程不会主动放弃对CPU的使用权。3.3.2LiteOS中使用的调度策略13/19在内核启动之前,需要创建一个自启动线程,以便内核启动后执行它,并由它来创建其他用户线程。自启动线程的优先级为9,其状态为就绪态,会自动被放入到就绪列表中。自启动线程的优先级必须要高于或等于其他用户线程的优先级,这样才能保证其他用户线程被正常创建并运行。01自启动线程02为了确保在内核无用户线程可执行的时候,CPU能继续保持运行状态,就必须安排一个空闲线程。空闲线程不完成任何实际工作,其状态为就绪态,始终在就绪列表中。空闲线程是在内核启动的过程被创建的,其优先级为31,是所有线程中最低的。空闲线程3.3.3LiteOS中固有线程14/19LiteOS中的线程状态迁移说明3.4PART-实时操作系统应用开发技术运行中的线程运行结束,线程状态由激活态变为退出态。7.激活态转为终止态线程也有可能在就绪态时被阻塞,此时线程状态会由就绪态转变为阻塞态,该线程从就绪列表中删除,不会参与线程调度,直到该线程被恢复。5.就绪态转为阻塞态6.激活态转为就绪态有更高优先级线程创建或者恢复后,会发生线程调度,此刻就绪列表中最高优先级线程变为激活态,那么原先运行的线程由激活态变为就绪态,并加入就绪列表中。正在运行的线程发生阻塞(挂起、延时、读信号量等)时,线程状态由激活态变成阻塞态,然后发生线程切换,运行就绪列表中剩余最高优先级线程。3.激活态转为阻塞态阻塞的线程被恢复后(线程恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的线程会被加入就绪列表,从而由阻塞态变成就绪态。4.阻塞态转为就绪态在LiteOS中,当线程初始化完成,将线程插入就绪列表,此时线程进入就绪态,即就绪列表中的线程是即将运行的线程,随时准备被调度运行。1.初始态转为就绪态2.就绪态转为激活态如果任务不是处于阻塞态,则把其加入就绪列表。当内核调度器确认哪个线程运行,则将该线程状态标志由就绪态改为激活态,线程会从就绪列表中被取出并执行。此时如果被恢复线程的优先级高于正在运行线程的优先级,则会发生线程切换,将该线程由就绪态变成激活态。3.3.4线程状态迁移说明16/19
本章小结3.5PART-实时操作系统应用开发技术中断系统是核心,需明确芯片支持的中断源、触发条件及ISR编程位置,并通过user.h宏定义ISR名称确保可移植性;时钟嘀嗒(1ms)是调度基础单位,由硬件定时器产生,线程切换至少需等待一个时钟嘀嗒;延时函数(delay_ms)通过让出CPU使用权实现阻塞,仅适用于延时≥1时钟嘀嗒的场景,短延时需其他方式实现;调度策略以优先级抢占为主(高优先级立即运行,同优先级按FIFO执行),时间片轮转作为补充(同优先级分时共享CPU);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 注册会计师审计中舞弊风险应对程序的设计实施
- 《猫》的课文解读及任务串教学设计
- 某金属冶炼厂能耗管理准则
- 2026云南玉溪易门县科学技术协会招聘2人备考题库含答案详解(满分必刷)
- 2026南方科技大学生物医学工程系诚聘海内外高层次人才备考题库及答案详解(全优)
- 2026湖北孝感市孝南区事业单位人才引进春季校园招聘44人备考题库带答案详解(突破训练)
- 2026华中农业大学校园建设与安全保卫部劳动聘用制人员招聘3人备考题库(湖北)含答案详解(培优a卷)
- 2026g广西柳州市柳北区白露街道办事处招聘公益性岗位2人备考题库及答案详解【易错题】
- 某造船厂焊接作业准则
- 2026广东广州南沙人力资源发展有限公司现向社会招聘编外人员备考题库带答案详解ab卷
- 2025年成人教育线上学习模式创新中的学习成果认证与转换研究报告
- 思想道德与法治考试题库及答案2025
- 物业管家的一天培训课件
- 2025年高考江苏卷物理真题(原卷版)
- 科学防癌与健康生活-肿瘤防治科普指南
- 冠状动脉粥样硬化性心脏病猝死防治专家共识解读 2
- 供水考试试题及答案
- T/CHES 69-2022抗旱需水分析技术导则
- 办理证件合同协议书
- 《VSM教学课件》课件
- 布展设计合同协议
评论
0/150
提交评论