嵌入式移植实验二.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

dajia1qi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档