嵌入式知识总结.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

嵌入式

第一章嵌入式系统概述

1.1嵌入式系统

1.嵌入式系统的概念

嵌入机械或电气系统内部、具有专属功能的智能化计算机算机系统。通常要求实时计算性能,具有一定的复杂性。被嵌入的系统通常是包含硬件和机械部件的完整设备。

2.技术本质:内含计算机、嵌入到对象体系中、满足对象智能化控制要求

1.2嵌入式处理器

.嵌入式处理器可以分为以下几大类:

嵌入式微处理器EMPU、微控制器MCU、DSP处理器、片上系统SOC

1.3嵌入式操作系统

1.三种操作系统:多道批处理操作系统、分时操作系统、实时操作系统

2.基本概念

(1)任务:也称为线程,是一个简单的程序,该程序可以认为CPU完全属于该程序本身。实时应用程序的设计过程,包括如何把问题分割成多个任务,赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间

(2)内核:内核负责管理各个任务,为每个任务分配CPU时间,负责任务间的通信。内核提供的基本服务是任务切换。使用实时内核可以大大简化应用系统的设计,因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2%~5%的CPU运行时间、RAM和ROM等。内核提供必不可少的系统服务,如信号量、消息队列、延时等

(3)调度:是内核的主要职责之一。决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法指CPU总是让处在就绪态的优先级最高的任务先运行。

(4)任务优先级:任务的优先级是表示任务被调度的优先程度。每个任务都具有优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态

(5)中断:中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序(中断服务子程序ISR)。中断服务子程序做事件处理,处理完成后,程序回到:在前后台系统中,程序回到后台程序;对非占先式内核而言,程序回到被中断了的任务;对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。

(6)时钟节拍:时钟节拍是特定的周期性中断。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。

3.μC/OS-II中的数据类型

第二章任务

2.1任务的基本概念

1.任务的5种状态:

Sleep----仅有编码未激活。

Ready----已激活并“万事俱备,只欠调度”

Running----正占用CPU运行自己。

Wait----等待某事件发生。

ISR_Sta----Running状态的任务被中断后进入的状态。

2.用户任务代码的一般结构

voidMyTask(void*pdata)

{……//任务的初始化

for(;;) //超循环构成任务体

{

可被中断的用户代码片断;

OS_ENTER_CRITICAL();//进入临界区(关中断)

不可被中断的用户代码片断;

OS_EXIT_CRITICAL();//退出临界区(开中断)

可被中断的用户代码片断;

tasksw();

}

}

voidMyTask1(void*pdata)

{……}

voidMyTask2(void*pdata)

{……}

voidmain()

{

……

OSInit();

……

OSTaskCreate(MyTask1,……);

OSTaskCreate(MyTask2,……);

……

OSStart();

……

}

2.2任务堆栈

任务堆栈的创建

#defineMyTaskStkSize64

OS_STKMyTaskStk[MyTaskStkSize]//在OS_CPU.H中定义OS_STK

…… //typedefINT32UOS_STK

INT8UOSTaskCreate(

void(*task)(void*pd),//指向任务的指针

void*pdata, //传递给任务的参数

MyTaskStk[MyTaskStkSize-1]//任务堆栈栈顶的指针×?

INT8Upri

文档评论(0)

151****0181 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档