版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式软件体系结构,南京大学软件学院 宋健建,内容,影响选择的因素 轮转结构 带中断的轮转结构 函数队列调度 实时操作系统,影响选择的因素,系统对各种不同事件的响应时间 结构的复杂度 对响应时间和优先级进行控制的程度,轮转结构,轮转结构(round-robin) 最简单的一种结构 主循环依次检查每个I/O设备,并为需要服务的设备提供服务。 不存在中断,轮转结构(续),void main(void) while (TRUE) if (/ I/O设备A需要服务) / 关注I/O设备A / 处理输入I/O设备A或从I/O设备A输出的数据 if (/ I/O设备B需要服务) / 关注I/O设备B /
2、处理输入I/O设备B或从I/O设备B输出的数据 ,轮转结构示例,数字万用表 三个I/O设备: 对响应时间的需求,数字万用表代码,void vDigitalMultiMeterMain(void) enum OHMS_1, OHMS_10, , VOLTS_100 eSwitchPosition; while (TRUE) eSwitchPosition = / 读取开关位置 switch (eSwitchPosition) case OHMS_1: / 读硬件来测量欧姆值 / 将结果格式化 break; case OHMS_10: / 读硬件来测量欧姆值 / 将结果格式化 break; / 将
3、结果写入显示设备 ,轮转结构分析,优点 结构简单 缺点 最坏响应时间 缺乏优先级 结构缺乏可扩展性,带中断的轮转结构,带中断的轮转结构 中断程序处理硬件特别紧急的需求,然后设置标记; 主循环轮询这些标记,然后根据这些需求进行后续的处理。,带中断的轮转结构,BOOL fDeviceA = FALSE; BOOL fDeviceB = FALSE; void interrupt vHandleDeviceA(void) fDeviceA = TRUE; void interrupt vHandleDeviceB(void) fDeviceB = TRUE; void main(void) whil
4、e (TRUE) if (fDeviceA) if (fDeviceB) ,带中断的轮转结构示例,通信桥接器 两个端口(同时可作输入、输出) A-B: 加密;B-A: 解密 特点:,通信桥接器代码,static QUEUE qDataFromLinkA, qDataFromLinkB, qDataToLinkA, qDataToLinkB; static BOOL fLinkAReadyToSend = TRUE; static BOOL fLinkBReadyToSend = TRUE; void interrupt vGotCharOnLinkA(void) char ch; ch = /
5、read a character from Link A vQueueAdd(qDataFromLinkA, ch); void interrupt vGotCharOnLinkB(void) void interrupt vSentCharOnLinkA(void) fLinkAReadyToSend = TRUE; void interrupt vSentCharOnLinkB(void) ,通信桥接器代码(续),int main(void) /* initialize the 4 queues */ enable(); while(TRUE) vEncrypt(); if (fQueue
6、HasData(qDataToLinkB) / The same as the above: write ch to Link A ,通信桥接器代码(续),void vEncrypt(void) char chClear, chCryptic; while(fQueHasData(qDataFromLinkA) chClear = chQueueGetData( void vDecrypt(void) ,带中断的轮转结构示例2,无线条形码扫描仪 I/O设备: 功能: 特点? 代码?,带中断的轮转结构分析,优点 为硬件操作提供优先级。实质上,中断程序中的所有操作拥有比主程序中任务代码更高的优先级
7、。 缺点 结构带来一定的复杂度 共享数据问题 优先级机制不彻底!所有任务代码以同样的优先级来执行。 改进方法? 任务的最坏响应时间:,函数队列调度结构,函数队列调度结构 更复杂精细的结构 中断程序在一个函数指针队列中添加一个函数指针,以供主程序调用。 主程序仅需要从该队列中读取相应的指针并且调用相关函数。 引进任务优先级:通过对函数指针排队实现,函数队列调度结构(续),void interrupt vHandleDeviceA(void) / 关注I/O设备A / 将function_A放到函数指针队列中 void interrupt vHandleDeviceB(void) / 关注I/O设备B / 将function_B放到函数指针队列中 void main(void) while (TRUE) while (/ 函数指针队列为空) ; /调用队列中的函数 void function_A(void) / 处理设备A请求 void function_B(void) / 处理设备B请求 ,函数队列调度结构分析,优点 提供了任务优先级 缺点 程序复杂 最坏响应时间?,实时操作系统,明确提出“任务”概念 中断程序和任务代码之间的必要信号发送是通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年克拉玛依市克拉玛依区工会人员招聘考试参考题库及答案详解
- 2026年通化市东昌区政务服务中心(窗口人员)招聘笔试备考题库及答案详解
- 2026年太原市万柏林区政务服务中心(窗口人员)招聘考试备考题库及答案详解
- 遂宁市2026年“筑梦巴蜀·万才兴农”农业农村领域经营主体招聘 (第二期)考试参考题库及答案详解
- 2026年江西省上饶市医疗系统事业编人员招聘笔试备考试题及答案详解
- 2025年南京市浦口区政务服务中心(窗口人员)招聘笔试试题及答案详解
- 2026大湾区大学行政岗位招聘3人笔试备考题库及答案详解
- 2026年8月自贡汇东建设工程有限责任公司市场化选聘职业经理人笔试模拟试题及答案详解
- 2025年大同市南郊区医疗系统事业编人员招聘笔试试题及答案详解
- 2025年鄂州市梁子湖区医疗系统事业编人员招聘笔试试题及答案详解
- 2025年“十八项医疗核心制度”培训考试真题试卷(含答案)
- 2026河北张家口市公安局崇礼分局招聘警务辅助人员50人笔试参考题库及答案详解
- 2026河北石家庄市栾城区殡仪馆公开招聘工作人员2名考试模拟试题及答案详解
- 2026年新疆医科大学第四附属医院(新疆维吾尔自治区中医医院)招聘编制外工作人员(125人)笔试备考试题及答案详解
- 2026年浙江省杭州市辅警招聘考试题(含答案)
- 市政给水管网专项施工方案
- 施工现场安全管理方案
- 2025年曲靖市师宗县城区学校遴选教师考试笔试试卷(附完整参考答案)
- 2026年上半年教师资格证考试《高中英语学科知识与教学能力》真题
- 2026年事业单位结构化面试真题及参考答案(2026年)
- 新版ISO45001培训课件
评论
0/150
提交评论