您的位置:首页 > 其它

嵌入式系统的基本概念

2009-01-02 11:05 381 查看
1.前后台系统

应用程序一般是个无限循环,循环中的函数看做后台行为,而终端服务程序看作前台行为。

2.操作系统

3.实时操作系统RTOS

4.代码的临界区

不允许被打断的那部分

5.资源

6.共享资源

7.任务(线程)

8.任务切换

9.内核

10.调度

11.占先式内核,非占先式内核

12.任务优先级

13.中断

14.时钟节拍:周期性中断

前后台系统 (New Roman" STYLE="line-height:1.3em">Foreground/Background System)

应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为New Roman" STYLE="line-height:1.3em">(background)。中断服务程序处理异步事件,这部分可以看成前台行为(New Roman" STYLE="line-height:1.3em">foreground)。后台也可以叫做任务级。前台也叫中断级。

New Roman" STYLE="line-height:1.3em">

代码的临界段

New Roman" STYLE="line-height:1.3em">代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立即开中断。New Roman" STYLE="line-height:1.3em">

资源

New Roman" STYLE="line-height:1.3em">任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。New Roman" STYLE="line-height:1.3em">

共享资源

New Roman" STYLE="line-height:1.3em">可以被一个以上任务使用的资源叫做共享资源。New Roman" STYLE="line-height:1.3em">

任务

New Roman" STYLE="line-height:1.3em">一个任务,也称作一个线程,是一个简单的程序,该程序可以认为New Roman" STYLE="line-height:1.3em">CPU完全只属该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套New Roman" STYLE="line-height:1.3em">CPU寄存器和自己的栈空间。New Roman" STYLE="line-height:1.3em">

每个任务都处在以下New Roman" STYLE="line-height:1.3em">5种状态之一的状态下,这New Roman" STYLE="line-height:1.3em">5种状态是休眠态,就绪态、运行态、挂起态New Roman" STYLE="line-height:1.3em">(等待某一事件发生New Roman" STYLE="line-height:1.3em">)和被中断态

休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。

就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。

运行态的任务是指该任务掌握了New Roman" STYLE="line-height:1.3em">CPU的控制权,正在运行中。

挂起状态也可以叫做等待事件态New Roman" STYLE="line-height:1.3em">WAITING,指该任务在等待,等待某一事件的发生

发生中断时,New Roman" STYLE="line-height:1.3em">CPU提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。

New Roman" STYLE="line-height:1.3em">

内核(Kernel)

New Roman" STYLE="line-height:1.3em">多任务系统中,内核负责管理各个任务,或者说为每个任务分配New Roman" STYLE="line-height:1.3em">CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。New Roman" STYLE="line-height:1.3em">

调度(New Roman" STYLE="line-height:1.3em">Scheduler

调度(Scheduler),英文还有一词叫dispatcher,也是调度的意思。就是要决定该轮到哪个任务运行了。

多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。

基于优先级的调度法指,CPU总是让处在就绪态的优先级最高的任务先运行。然而,究竟何时让高优先级任务掌握CPU的使用权,有两种不同的情况,这要看用的是什么类型的内核,是不可剥夺型的还是可剥夺型内核。

不可剥夺型内核(New Roman" STYLE="line-height:1.3em">Non-Preemptive Kernel)

不可剥夺型内核允许每个任务运行,直到该任务自愿放弃New Roman" STYLE="line-height:1.3em">CPU的控制权。中断可以打入运行着的任务。中断服务完成以后将New Roman" STYLE="line-height:1.3em">CPU控制权还给被中断了的任务。任务级响应时间要大大好于前后系统,但仍是不可知的,商业软件几乎没有不可剥夺型内核。

New Roman" STYLE="line-height:1.3em">

可重入性(New Roman" STYLE="line-height:1.3em">Reentrancy

New Roman" STYLE="line-height:1.3em">可重入型函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在New Roman" STYLE="line-height:1.3em">CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量予以保护。New Roman" STYLE="line-height:1.3em">

时间片轮番调度法

New Roman" STYLE="line-height:1.3em">当两个或两个以上任务有同样优先级,内核允许一个任务运行事先确定的一段时间,叫做时间额度(quantum),然后切换给另一个任务。也叫做时间片调度。内核在满足以下条件时,把New Roman" STYLE="line-height:1.3em">CPU控制权交给下一个任务就绪态的任务:l当前任务已无事可做l当前任务在时间片还没结束时已经完成了。New Roman" STYLE="line-height:1.3em">目前,μNew Roman" STYLE="line-height:1.3em">C/OS-Ⅱ不支持时间片轮番调度法。应用程序中各任务的优先级必须互不相同New Roman" STYLE="line-height:1.3em">

静态优先级

New Roman" STYLE="line-height:1.3em">应用程序执行过程中诸任务优先级不变,则称之为静态优先级New Roman" STYLE="line-height:1.3em">

动态优先级

应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。

TTL和CMOS电平

1,TTL电平:

=2.0V,输入低电平<=0.8V,噪声容限是0.4V。

2,CMOS电平:

1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。New Roman" STYLE="line-height:1.3em">3,New Roman" STYLE="line-height:1.3em">TTL和New Roman" STYLE="line-height:1.3em">COMS电路比较:New Roman" STYLE="line-height:1.3em">

1)New Roman" STYLE="line-height:1.3em">TTL电路是电流控制器件,而New Roman" STYLE="line-height:1.3em">coms电路是电压控制器件。New Roman" STYLE="line-height:1.3em">

2)New Roman" STYLE="line-height:1.3em">TTL电路的速度快,传输延迟时间短New Roman" STYLE="line-height:1.3em">(5-10ns),但是功耗大。New Roman" STYLE="line-height:1.3em">COMS电路的速度慢,传输延迟时间长New Roman" STYLE="line-height:1.3em">(25-50ns),但功耗低。New Roman" STYLE="line-height:1.3em">COMS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。

New Roman" STYLE="line-height:1.3em">ISP(New Roman" STYLE="line-height:1.3em">In System Programming),即在系统编程。它允许New Roman" STYLE="line-height:1.3em">MCU还在产品电路板上时,对其下载新的程序。这种技术的一个明显优点是,不需要把New Roman" STYLE="line-height:1.3em">MCU芯片从你的电路板上拆下来,再装到传统的编程器上来写入新的程序。你尽可以把具有New Roman" STYLE="line-height:1.3em">ISP功能的New Roman" STYLE="line-height:1.3em">MCU芯片焊接在电路板上,应用更加可靠、方便。

New Roman" STYLE="line-height:1.3em">IAP(New Roman" STYLE="line-height:1.3em">In Application Programming),即在应用中程序。就是说,New Roman" STYLE="line-height:1.3em">MCU自己可以获取新的代码并对自己重新编程。这是一个极为有用的技术,比如可以通过New Roman" STYLE="line-height:1.3em">Internet、程控电话网等给你的产品远程升级,就像常见的杀毒软件可以自动升级一样。有了这项技术,你就可以利用现在的程控电话网、互联网等实现你的嵌入式系统远程自动升级,而无须传统的那种给客户邮寄芯片而带来的不便。

New Roman" STYLE="line-height:1.3em">ISP和New Roman" STYLE="line-height:1.3em">IAP的核心技术是相同的,都是调用内部的标准程序对New Roman" STYLE="line-height:1.3em">Flash存储器进行擦除和重新编程。区别在于:New Roman" STYLE="line-height:1.3em">ISP由片内固化的一个默认的串行加载程序(New Roman" STYLE="line-height:1.3em">Boot Loader)来完成这一动作;而New Roman" STYLE="line-height:1.3em">IAP则由用户在自己的程序中完成这一调用,这就为产品的远程升级提供了可能,甚至可以说是New Roman" STYLE="line-height:1.3em">MCU应用技术的一个里程碑。

先进微控制器总线架构AMBA是ARM公司为高性能片上微控制器定义的一套总线标准,是一种中央多路选择器互连方案,它读数据和写数据的总线分开,完成片上数据传送。AMBA包括先进高性能总线(AHB)、先进系统总线(ASB)和先进外设总线(APB)。AHB和ASB都是高性能总线,采用高性能、高带宽系统设计,它支持多个主 (Master)设备和多个从(Slave)设备,ARM公司推荐使用AHB。APB实际上是二级总线,为AHB/ASB 提供一个低功耗和接口简单的扩展。它从整体上说是一个从设备。APB通过桥与AHB/ASB连接。

分享到新浪微博
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: