下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式实时操作系统复习操作系统的基本功能:1、任务管理,2、内存管理,3、文件管理,4、CPUt理5、I/O 口设备管理 操作系统基本特征:1、多任务操作系统,2、多级中断机制,3、优先级调度机制。任务的定义:程序的动态表现,在操作系统中体现为线程,是程序的一次执行过程。任务的状态有:1、睡眠态,2、就绪态,3、运行态,4、阻塞态,5、挂起态。调度算法:根据系统资源的资源分配策略所规定的资源分配算法。有“短作业优先算法”“轮转法”事件:实时操作系统运行过程中发生的重要事件事件处理对象:1、信号量,2、互斥信号量,3、事件标志组,4、邮相,5、消息队列。信号量定义:资源是具体的显示东西,把它数字
2、化后,操作系统就便于管理这些资源信号量的用法:1、建立,2、请求,3、释放。互斥信号量: 是一种特殊的信号量,该信号不仅是只用于互斥资源的访问,还在于信号量管理需要 解决的优先级反转问题。互斥信号量管理:取值0或1,只能有一个任务访问的独占资源,应采用信号来管理,为了保证系统的定时性拒绝优先级反转,对互斥信号量的管理,采用优先级继承机制。时钟:是一种特定的周期性中断,起“心脏”作用。时钟节拍是周期性中断,对应的中断服务程序成为时钟滴答服务。中断:在任务的执行过程中,当出现异常情况或特殊请求时,停止任务的执行,转而对这些异常或特殊进行处理,处理结束后返回当前任务的中断处。Uc/os内存管理方法:
3、Uc/os采用内存控制块管理内存,内存控制块记录了“内存分区地址,分区内存 块的大小和数量,空闲块数量信息”。内存管理含有:“内存分区的创建,分配,释放,使用和等待系统调用时间标志节点,”事件标志组管理的主要数据结构:包括“事件标志组,(XX实体,XX列表,XX节点链表)。”用户调用两个函数创建任务,不允许用户进行修改,被称为系统服务。用户的程序以函数的形式由 用户编写,为用户函数。和操作系统的服务划分了界限。Uc/os采用抢占式任务调度算法,所有信息保存在TCB中。任务就绪组是:为了查找高级优先级的任务与正在运行任务的优先级进行比较,以确定是否进行切换。事件控制块(ECB):是核心的数据结构
4、,被频繁访问,定义出现在操作系统的头文件ucos.h中承载了任务的相关信息。Typedef struct os eve ntINT8UOSEventType; /*事件控制块的类型*/Void *OSEventPtr;/*指向下一个ECB或消息队列的指针*/INT6UOSEventCnt; /*信号量计数值,对除信号量意外其他事件无效 */OS PRIO OSEventGrp/* 事件等待组 */OS PRIO OSEventGblOS EVENT TBL SIZE*;等待事件的任务表 */INT8U *OSEventName; /* 事件名称 */OS EVENT;移植步骤:1、使用开发软件
5、MDK4.7Q为uc/os操作系统建立一个目录,将系统的代码复制到该目 录下,要有一个子目录。2 、在该目录下创建工程。3 、建立主程序main.c。4 、对os_cpu.h说明,根据硬件修改 os_cpu.h。5 、修改 os_cpu.c。6 、编译,下载,运行 信号量函数列表:NameDescriptio nOsSemCreat创建一个信号量OsSemSet设置信号量值OsSemDel删除一个信号量OsSemPe nd等待一个信号量OsSemAccept无等待请求信号OsSemPe ndAbort放弃等待信号量OsSemPost发出一个信号量OsSemQuery查询一个信号量内存管理函数:
6、NameDescriptio nOS MemI nit创建一个内存分区OsMemCreate OsSemCreat分配一个内存块,创建一个信号量OsMemGet释放一个内存块OsMemP,OsSemPend等待一个信号量,OsMemQue,OsSemQuery查询一个内存分区状态,一个信号量OsMemNameSet设定一个内存分区名称OsMemNameGet获取一个内存分区名称编程题例子、#i nclude "sys.h"#in elude "usart.h"#i nclude "delay.h"#i nclude "led
7、.h"#i nclude "in cludes.h"#define START_TASK_PRIO10 设置任务优先级,开始任务的优先级设置为最低#defi ne START_STK_SIZE64设置任务堆栈大小OS_STK START_TASK_STKSTART_STK_SIZE; 任务堆栈void start_task(void *pdata); 任务函数#defi ne LEDO_TASK_PRIO7 设置任务优先级#defi ne LED0_STK_SIZE64设置任务堆栈大小OS_STK LEDO_TASK_STKLEDO_STK_SIZE;任务堆栈vo
8、id led0_task(void *pdata);/LEDO 任务#defi ne LED1_TASK_PRIO6设置任务优先级#defi ne LED1_STK_SIZE64设置任务堆栈大小OS_STK LED1_TASK_STKLED1_STK_SIZE;任务堆栈void led1_task(void *pdata);/LED1 任务int main(v oid)Stm32_Clock_lnit(9); / 系统时钟设置 delay_i nit(72);延时初始化LED_Init();/初始化与LED连接的硬件接口OSIn it();OSTaskCreate(start_task,(vo
9、id *)0,(OS_STK*)&START_TASK_STKSTART_STK_SIZE-1,START_TASK_PRIO );/创建起始任务OSStart();/开始任务void start_task(void *pdata)OS_CPU_SR cpu_sr=0;pdata = pdata;OS_ENTER_CRITICAL();/进入临界区 (无法被中断打断 )OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STKLED0_STK_SIZE-1,LED0_TASK_PRIO); OSTaskCreate(led1_
10、task,(void*)0,(OS_STK*)&LED1_TASK_STKLED1_STK_SIZE-1,LED1_TASK_PRIO); OSTaskSuspend(START_TASK_PRIO); /挂起起始任务 .OS_EXIT_CRITICAL();/退出临界区 (可以被中断打断 )void led0_task(void *pdata)/LED0 任务while(1)LED0=0;delay_ms(80);LED0=1; delay_ms(920);void led1_task(void *pdata)/LED1 任务while(1)LED1=0;delay_ms(300);
11、LED1=1;delay_ms(300);#include "sys.h"#include "usart.h"#include "delay.h"#include "led.h"#include "includes.h"OS_EVENT *myMBox;#define START_TASK_PRIO10 /设置任务优先级 ,开始任务的优先级设置为最低#define START_STK_SIZE64/设置任务堆栈大小OS_STK START_TASK_STKSTART_STK_SIZE;/ 任务堆
12、栈void start_task(void *pdata);/ 任务函数#define MBOX_SEN_PRIO6 /设置任务优先级#define MBOX_SEN_STK_SIZE64/设置任务堆栈大小OS_STK MBOX_SEN_STKMBOX_SEN_STK_SIZE;/ 任务堆栈void TaskMessageSen(void *pParam);/ 邮箱发送任务#define MBOX_REC_PRIO7 /设置任务优先级#define MBOX_REC_STK_SIZE64/设置任务堆栈大小OS_STK MBOX_REC_STKMBOX_REC_STK_SIZE ;/ 任务堆栈v
13、oid TaskMessageRec(void *pParam);/ 邮箱接收任务int main(void)Stm32_Clock_Init(9); / 系统时钟设置delay_init(72);/ 延时初始化uart_init(72,9600);OSInit();OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STKSTART_STK_SIZE-1,START_TASK_PRIO );/ 创建起始任务OSStart();/开始任务void start_task(void *pdata)OS_CPU_SR cpu_sr=
14、0;pdata = pdata;OS_ENTER_CRITICAL();/进入临界区 (无法被中断打断 )OSTaskCreate(TaskMessageSen,(void *)0,(OS_STK*)&MBOX_SEN_STKMBOX_SEN_STK_SIZE-1,MBOX_SEN_PRIO);OSTaskCreate(TaskMessageRec,(void *)0,(OS_STK*)&MBOX_REC_STKMBOX_REC_STK_SIZE-1,MBOX_REC_PRIO);OSTaskSuspend(START_TASK_PRIO); / 挂起起始任务 .OS_EXIT
15、_CRITICAL();/退出临界区 (可以被中断打断 )void TaskMessageSen(void *pParam)INT32U scount;scount=0;myMBox=OSMboxCreate(&scount);if(myMBox=(OS_EVENT *)0)printf(" 时间: %d,TaskMessageSen 创建邮箱失败 n",OSTimeGet();OSTaskDel(OS_PRIO_SELF);return;printf(" 时间: %d,TaskMessageSen 创建邮箱成功 n",OSTimeGet();w
16、hile(1)OSTimeDly(100);scount+;printf(” 时间:d,任务 TaskMessageSen准备发消息,消息为 dn",OSTimeGet(),scount); OSMboxPost(myMBox,&scount);void TaskMessageRec(void *pParam)INT8U *perr;INT8U err;INT32U *prcount;perr=&err; err=OS_ERR_NONE;if(myMBox=(OS_EVENT *)0)printf(" 时间: %d,TaskMessageRec 判断邮箱不存在! n",OSTimeGet(); OSTaskD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山东济南市妇幼保健院招聘卫生高级人才和博士(控制总量)26人备考题库及参考答案详解(培优)
- 2026山东日照市老年大学春季兼职教师招聘备考题库及答案详解(真题汇编)
- 2026广东广州番禺区第二人民医院高层次人才招聘6人备考题库及答案详解(典优)
- 2026诏安县霞葛中心卫生院编外人员招聘2人备考题库及答案详解(典优)
- 2026年及未来5年市场数据中国电商摄影行业市场调查研究及投资前景展望报告
- 隧道工程质量通病防治方案
- 卷烟卷接设备操作工操作评估评优考核试卷含答案
- 西藏自治区林芝市2026年高三下学期一模考试数学试题(含答案解析)
- 制浆废液利用工班组建设竞赛考核试卷含答案
- 纺丝原液制备工安全培训效果测试考核试卷含答案
- RTK使用原理及应用
- 身份证籍贯对照表(自动)
- 颅内高压患者的监护
- 铁道概论高职PPT完整全套教学课件
- 《山东省情省况》知识考试参考题库(含解析)
- 医生进修申请表(经典版)
- 100+华为云高层主打胶片-华为云+智能+见未来
- 第六章消费者学习与记忆对消费者行为的影响
- 医院麻醉精神药品的管理与使用
- GB/T 39501-2020感官分析定量响应标度使用导则
- 2022年苏州市事业单位招聘笔试试题及答案解析
评论
0/150
提交评论