- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式移植实验二
实验二 uC/OS II任务调度实验
一、实验目的
回顾uC/OS II 在Cortex-M3(LM3S9B2芯片)平台上的移植,以及串口、显示等驱动程序的加载。
掌握嵌入是操作系统任务调度的基本原理,熟练使用μC/OS-II任务管理的基本函数调用,并掌握任务堆栈、任务控制块、任务就绪表的结构和作用。
应用μC/OS-II中的多任务任务,处理简单问题。
二、实验要点
1. 基本概念
μC/OS-II操作系统内核的主要工作就是对任务进行管理和调度,μC/OS-II的任务实质就是一个线程,就是一个用来解决用户问题的C语言函数和与之相关联的一些数据结构而构成的一个实体。
从任务的存储结构看,μC/OS-II任务由三部分构成:
任务程序代码: 任务执行部分
任务堆栈: 保存任务工作环境
任务控制块: 保存任务属性
μC/OS-II任务有两种:
用户任务:由应用程序设计者编写的,用于解决实际问题。
系统任务:系统提供的,为应用程序提供某种服务。
μC/OS-II预定义的两个系统任务为:
空闲任务OsTaskIdle( ):每个应用程序必须使用,赋以最低优先级。
统计任务OsTaskStat( ):根据实际需要选用,了解CPU的使用率。
μC/OS-II把每个任务都作为一个节点,把他们链接成任务链表(最多可对64个任务进行管理)。
2. 相关函数介绍
1). 创建任务函数OSTaskCreate()
函数原型:
INT8U OSTaskCreate (
void (*task) (void *pd), //指向任务的指针
void * pdata, //传递给任务的参数
OS_STK *ptos //指向任务堆栈栈顶的指针
INT8U prio //任务的优先级
);
2). 初始化函数OSInit()
函数OSInit()对μC/OS-II的所有全局变量和数据结构进行初始化,同时创建空闲任务OSTaskIdle,并赋以最低的优先级和永远的就绪状态。
3). 启动函数OSStart()
μC/OS-II进行任务管理是从调用启动函数OSStart()开始的。前提条件是在调用该函数之前至少创建了一个用户任务。
此处仅列出了几个相关函数,还有更多的函数请查阅教材或相应的参考书。
三、实验内容
1. 基本部分:主要包括任务的初始化、创建、任务堆栈、任务控制块、任务就绪表的理解与应用;观察在任务创建、删除、查询的过程中,以及用户任务空闲的时候,TCB的变化,并通过单步调试跟踪变化,并说明理由。
1)在Cortex-M3系统下,移植μC/OS-II操作系统,并通过调整os_cfg.h中的宏定义,裁剪/增加μC/OS-II的相关组件;
2)任务调度实验:实现任务创建、调度与切换,并通过查看任务控制块,任务堆栈和任务就绪表加深μC/OS-II工作原理的理解;
3)观察在任务创建、删除、查询的过程中,以及用户任务空闲的时候,TCB的变化,并通过单步调试跟踪变化,并说明理由。
4)加载系统统计任务并记录CPU的变化。
5)驱动程序的加载:学生可以根据自己的兴趣选择性的加载一下驱动程序中至少2个驱动程序:
1 串口(RS232)驱动程序;
2 TFT显示屏驱动程序;
3 触摸屏驱动程序;
4 按键驱动程序;
5 PWM驱动程序;
6 ADC驱动程序;
7 Ethernet驱动程序;
8 Audio驱动程序;
6)设计一个多任务的系统,并应用上面加载的驱动程序,实现一个简单的多任务协同工作的系统,例如:加载串口驱动程序,TFT显示驱动程序,ADC驱动程序,建立一个任务通过采集模拟信号,然后将采集到的值存储在一个全局变量中,然后建立任务二,监视该全局变量的变化,如果改变,通过RS232发送出去;简历任务三,同样监视全局变量的变化,如果改变,显示在TFT显示屏上面。
2. 综合部分:应用μC/OS-II的多任务基础知识解决下面的实际问题
计算器实验(必做):运用多任务制作一个计算器,实现+、—、*、/ 运算。
四、实验流程图
开始
开始
判断优先级
判断优先级
输入算式
输入算式
输出结果
输出结果
五、实验代码
1、main.c
#include includes.h
tContext sContext;
char strjg[30];
static OS_STK startup_task_stk[STARTUP_TASK_STK_SIZE ];
static OS_STK startup_task_stk1[STARTUP_TASK_STK_SIZE ];
static OS_STK startup_task
您可能关注的文档
最近下载
- 2024江苏招生计划专刊(可有哪些信誉好的足球投注网站).pdf
- 高中体育与健康模块教学设计(足球18课时).doc
- 埃森哲-平安银行零售转型零售网点规划及转型、改造方案_201608.pdf VIP
- AP音乐理论 2022年真题 附答案和评分标准 AP Music Theory 2022 Real Exam with Answers and Scoring Guidelines.pdf VIP
- JT-T-1111-2017综合货运枢纽分类与基本要求.docx VIP
- 小学古诗词素养大赛试题及答案.doc
- 晋剧《清风亭》剧本.doc
- 弧微分曲率及其计算公式曲率圆与曲率半径.PPT
- 自建房安全隐患培训课件.pptx VIP
- 如何上好自习课,使晚自习更高效 主题班会课件(共15张ppt)七年级.ppt
文档评论(0)