嵌入式系统设计与实例开发 —— arm 与 c/os-Ⅱ 第二讲...

Post on 02-Jan-2016

134 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

嵌入式系统设计与实例开发 —— ARM 与  C/OS-Ⅱ 第二讲 嵌入式系统的基本概念. 嵌入式系统的基本概念. 1 、什么是嵌入式系统 2 、硬件基础 3 、嵌入式操作系统. IEEE 定义. 根据 IEEE (国际电气和电子工程师协会)的定义: 嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为 devices used to control, monitor, or assist the operation of equipment, machinery or plants )。 - PowerPoint PPT Presentation

TRANSCRIPT

1

嵌入式系统设计与实例开发——ARM 与 C/OS-Ⅱ

第二讲 嵌入式系统的基本概念

2

1 、什么是嵌入式系统

2 、硬件基础

3 、嵌入式操作系统

嵌入式系统的基本概念

3

IEEE 定义

根据 IEEE (国际电气和电子工程师协会)的定义:

嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为 devices used to control, monitor, or assist the operation of equipment, machinery or plants )。

可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。

4

3 、嵌入式系统的几个重要特征

( 1 )系统内核小

由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。

比如 ENEA 公司的 OSE 分布式系统,内核只有5K ,而 Windows 的内核则要大得多。

5

(2)专用性强

嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。

即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。

同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。

6

(3)系统精简

嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。

(4)高实时性 OS

这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。

7

( 5 )嵌入式软件开发走向标准化

嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。

为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配 RTOS( Real- Time Operating System )开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。

8

( 6 )嵌入式系统开发需要开发工具和环境由于其本身不具备自主开发能力,即使设计完成以后,用户通

常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。

这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。

开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。

9

嵌入式系统与 PC 之间的区别

嵌入式系统一般是专用系统,而 PC 是通用计算平台 嵌入式系统的资源比 PC少得多 嵌入式系统软件故障带来的后果比 PC 机大得多 嵌入式系统一般采用实时操作系统 嵌入式系统大都有成本、功耗的要求 嵌入式系统得到多种微处理体系的支持 嵌入式系统需要专用的开发工具

10

典型嵌入式系统基本组成-硬件

MPU

微处理器

电源模块

时钟

复位

Flash

RAM

ROM

USB LCD Keyboard

外围电路

Other

外设

11

典型嵌入式系统基本组成-软件

处理器

存储器

输入 输出

操作系统操作系统

应用程序应用程序

软件结构

硬件结构

12

嵌入式处理器 嵌入式处理器是嵌入式系统的核心,是控制、辅助系

统运行的硬件单元。 4位、 8位单片机, 16位、 32位、 64位嵌入式 CPU 。

实时操作系统 实时操作系统是嵌入式系统目前最主要的组成部分。

实时性需要调度一切可利用的资源完成实时控制任务,着眼于提高计算机系统的使用效率,满足对时间的限制和要求。

13

- 系统响应时间( System response time):系统发出处理要求,到系统给出应答信号的时间。

- 任务切换时间( Context-switching time):任务之间切换而使用的时间。

- 中断延迟( Interrupt latency):计算机接收到中断信号到操作系统作出响应,并完成切换转入中断服务程序的时间。

14

冯 ·诺依曼体系结构和哈佛体系结构 CISC 与 RICS

影响 CPU 性能的因素 存储器系统 I/O 接口

二、硬件基础

15

冯 ·诺依曼体系结构模型

指令寄存器

控制器

数据通道输入 输出

中央处理器

存储器

程序

指令 0指令 1指令 2指令 3指令 4

数据

数据 0数据 1数据 2

16

指令的执行周期 T

1 )取指令( Instruction Fetch) : TF

2 )指令译码( Instruction Decode ): TD

3 )执行指令( Instruction Execute ): TE

4 )存储( Storage ): TS

每条指令的执行周期: T= TF+TD+TE+TS

17

冯 ·诺依曼体系的特点

1 )数据与指令都存储在存储器中

2 )被大多数计算机所采用

3 ) ARM7——冯诺依曼体系

在冯 ·诺依曼体系结构中,数据和程序存储器是共享数据总线的。数据总线共享有很多优点,比如减小总线的开销。另外一个优点在于能够把 RAM映射到程序空间,这样设备也能访问 EEPROM 中的内存。

18

哈佛体系结构

指令寄存器

控制器

数据通道输入 输出

中央处理器

程序存储器

指令 0指令 1指令 2

数据存储器

数据 0数据 1数据 2

地址

指令

地址

数据

19

哈佛体系结构的特点

1 )程序存储器与数据存储器分开

2 )提供了较大的数存储器带宽

3 )适合于数字信号处理

4 )大多数 DSP都是哈佛结构

5 ) ARM9 是哈佛结构

20

对于哈佛体系结构的计算机,程序和数据总线是分开的。这种方式的优势在于能够在一个时钟周期内同时读取程序和数据,这样就相应地减少了执行每一条指令所需的时钟周期。早期的哈佛架构的计算机是不能把查找表储存在程序存储器中的,而这个问题在现在的大多数设备中已经解决了。

  哈佛体系结构计算机中存在的另外一个问题就是,如果要和外部的程序和数据存储器进行交互,对于两部分存储器来说,由于地址总线和数据总线的相互独立性,就需要额外增加大量的芯片管脚。因此,只有当至少有一种存储器的类型是内部的情况下,微处理器才会采用哈佛体系结构。

21

CISC 和 RISC

RISC( 精简指令集计算机 ) 和 CISC( 复杂指令集计算机 ) 是当前 CPU 的两种架构。它们的区别在于不同的 CPU 设计理念和方法。

CISC :复杂指令集( Complex Instruction Set Computer )

具有大量的指令和寻址方式•8/2 原则: 80% 的程序只使用 20% 的指令•大多数程序只使用少量的指令就能够运行。•指令复杂化、编译复杂化,运行时间长,部件效率不高,不利于并行处理和 VLSI 的实现

22

CISC :复杂指令集( Complex Instruction Set Computer )

•早期的 CPU 全部是 CISC架构,它的设计目的是要用最少的机器语言指令来完成所需的计算任务。

•比如对于乘法运算,在 CISC架构的 CPU 上,您可能需要这样一条指令: MUL ADDRA, ADDRB就可以将 ADDRA 和 ADDRB 中的数相乘并将结果储存在 ADDRA 中。将 ADDRA, ADDRB 中的数据读入寄存器,相乘和将结果写回内存的操作全部依赖于 CPU 中设计的逻辑来实现。•这种架构会增加 CPU 结构的复杂性和对 CPU 工艺的要求,但对于编译器的开发十分有利。•比如上面的例子, C 程序中的 a*=b就可以直接编译为一条乘法指令。

•今天只有 Intel 及其兼容 CPU 还在使用 CISC架构。

23

RISC :精简指令集( Reduced Instruction Set Computer)

RISC架构要求软件来指定各个操作步骤。如果要在 RISC架构上实现将ADDRA, ADDRB 中的数据读入寄存器,相乘和将结果写回内存的操作都必须由软件来实现,比如: MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A 。这种架构可以降低 CPU 的复杂性以及允许在同样的工艺水平下生产出功能更强大的 CPU ,但对于编译器的设计有更高的要求。

•在通道中只包含最有用的指令•确保数据通道快速执行每一条指令•使 CPU 硬件结构设计变得更为简单•将频率最高的操作作为指令系统的基本操作 •适于 VLSI 、并行处理的发展趋势

当然, RISC 也有它的缺点:代码密度不高,可执行文件体积较大,汇编代码可读性较差。代码密度不高是个值得关注的问题:若不使用 cache ,会需要更大的指令存储空间,取指时也占用更大的存储器带宽。若采用 cache ,又会降低 cache 的命中率。

24

CISC 与 RISC 的数据通道

IF ID REG ALU MEM开始 退出

IF ID ALU MEM REG

微操作通道

开始 退出

单通数据通道

25

关于周期的概念

执行一条指令所需要的时间称为指令周期 ,指令周期常常用若干个时钟周期来表示。

时钟脉冲的重复周期称为时钟周期,时钟周期是 CPU 的基本时间计量单位,它由计算机主频决定。

一个 CPU 同外部设备和内存储器之间进行信息交换过程所需要的时间称为总线周期。

26

影响 CPU 性能的因素:流水线、超标量和缓存

流水线技术:几个指令可以并行执行

提高了 CPU 的运行效率

内部信息流要求通畅流动

译码取指 执行 add

译码取指 执行 sub

译码取指 执行 cmp

时间

Add

Sub

Cmp

27

超标量执行

超标量执行:超标量 CPU采用多条流水线结构

执行 1

预取

指令 CACHE

译码 2

译码 1

执行 2

执行 1

预取

译码 2

译码 1

执行 2

流水线1

流水线2

数据

28

高速缓存( CACHE )

1 、为什么采用高速缓存

微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。

2 、高速缓存的工作原理

高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。

CPU

高速缓存控制器

CACHE

主存

数据

数据

地址

29

总线和总线桥

CPU 低速设备

数据

高速总线

存储器 高速设备 高速设备

低速总线

30

存储器系统

RAM :随机存取存储器, SRAM :静态随机存储器, DRAM :动态随机存储器

1 ) SRAM 比 DRAM快

2 ) SRAM 比 DRAM耗电多

3 ) DRAM 存储密度比 SRAM 高得多

4 ) DRM 需要周期性刷新

ROM :只读存储器

FLASH :闪存

31

输入输出接口

1 ) I/O

2 ) A/D 、 D/A

3 )键盘

4 ) LCD

5 )存储器接口

6 )设备接口

32

三、嵌入式操作系统

操作系统的分类嵌入式实时操作系统多任务,任务优先级,调度前台与后台实时操作系统中的重要概念

33

操作系统的分类

( 1 )顺序执行系统:系统内只含有一个程序,独占 CPU 的运行时间,按语句顺序执行该程序,直至执行完毕,另一程序才能启动运行。如 DOS 操作系统。

( 2 )分时操作系统:系统内同时可以有多个程序运行,把 CPU 的时间分按顺序分成若干片,每个时间片内执行不同的程序。如 UNIX

( 3 )实时操作系统:系统内有多个程序运行,每个程序有不同的优先级,只有最高优先级的任务才能占有 CPU 的控制权。

34

● 具有强实时特点的嵌入式操作系统

● 具有弱实特点的嵌入式操作系统

● 没有实时特点的嵌入式操作系统

按实时性分类

35

1. 强实时系统,其系统响应时间在毫秒或微秒级(数控机床);

2. 一航实时系统,其系统响应时间在毫秒-几秒的数量级上,其实时性的要求比强实时系统要差一些(电子菜谱的查询)。

3.弱实时系统,其系统响应时间约为数十秒或更长(工程机械)。

36

( 1 ) .循环轮询系统:( Polling Loop )最简单的软件结构是循环轮询,程序依次检查系统的每

一个输入条件,一旦条件成立就进行相应的处理。Initialize()

While(true){

if(condition_1) action_1();

if(condition_2) action_2();

……

if(condition_n) acition_n();

}

按软件结构分类

37

( 2 ) .事件驱动系统:( Event-Driven system )

事件驱动系统是能对外部事件直接响应的系统。它包括前后台、实时多任务、多处理器等,是嵌入式实时系统的主要形式。

应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为( background )。中断服务程序处理异步事件,这部分可以看成前台行为( foreground) 。

后台也可以叫做任务级,前台也叫中断级。

例如,很多基于微处理器的产品采用前后台系统设计,如微波炉、电话机、玩具等。从省电的角度出发,平时微处理器处在停机状态,所有的事都靠中断服务来完成。

38

前后台系统(后台循环、前台中断)

ISR

ISR

后台 前台

ISR

时间

39

嵌入式实时操作系统

实时操作系统的特点:

1 、多任务

CPU寄存器

任务控制块 1

任务控制块 2

任务控制块 n

休眠、就绪、运行、挂起、被中断

任务1

任务2

任务n

……

CPU

寄存器

40

一个任务,也称作一个线程,是一个简单的运行程序。每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级, 有它自己的一套 CPU寄存器和自己的栈空间。

多任务运行的实现实际上是靠 CPU (中央处理单元)在许多任务之间转换、调度。

CPU 只有一个,轮番服务于一系列任务中的某一个。多任务运行使 CPU 的利用率得到最大的发挥,并使应用程序模块化。

在实际应用中,多任务的最大特点是,开发人员可以将很复杂的应用程序层次化-综合实验(时钟、位图、 USB 、 KEY )。

41

任务

实时任务

非实时任务

事件驱动

时间驱动

内部事件:运算结果、设备请求等外部事件:开关量输入等绝对时间驱动相对时间驱动

2 、任务的事件驱动

42

3 、中断与中断优先级

CPU中断控制器 1

中断控制器 2

外部事件

43

4 、同步与异步

一系列时间相关事件称为同步事件,驱动的任务为同步任务

随机发生的事件称为异步事件,驱动的任务为异步任务,如中断

44

5 、资源与临界资源

程序进行时可使用的软硬件环境称为资源, 2 个以上任务可同时访问的共享资源称为临界资源。

任何任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量、一个结构或一个数组等。

任务1

共享内存

任务2

任务N

45

嵌入式操作系统的几个主要概念

任务 Task

调度 Scheduler

优先级 Priority

代码临界区 Critical Section

可预测性 predictability

上下文切换 Context Switch

46

任务 Task

指拥有所有 CPU 资源的简单程序。 在进行实时应用设计时通常要把工作分割成多

个任务,每个任务处理一部分问题,并被赋予一定的优先级、一套自己的 CPU寄存器及堆栈。

实时系统中的大部分任务是周期的,体现在编程上每个任务则是一个典型的无限循环。

任务的状态:睡眠、就绪、运行、延迟、等待

47

任务: example

手持数据采集终端的打印creatTASK(myprintf, priority)

void myprintf( )

{

for (;;)

{

等待接收队列信息; 往打印机发送打印信息; }

}

48

内核 (kernel)

多任务系统的一部分,负责管理任务。占先式 (preemptive) 与非占先式微内核 (Micro kernel) 与单内核 (monolithic kern

el)

49

非占先式与占先式

非占先式( non-preemptive )

非占先式调度法也称作合作型多任务( cooperative multitasking ),各个任务彼此合作共享一个 CPU 。

中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到改任务主动放弃 CPU 的使用权时,那个高优先级的任务才能获得 CPU 的使用权。

非占先式内核的一个特点是几乎不需要使用信号量保护共享数据。运行着的任务占有 CPU ,而不必担心被别的任务抢占。

非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很时间,直到当前运行着的任务释放 CPU 。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到 CPU 的控制权,完全取决于应用程序什么时候释放 CPU 。

50

非占先式 (Non-Preemptive)

低优先级任务

ISR

高优先级任务

( 1 ) ( 2 )

( 3 )

( 4 )

( 5 )

( 6 )

( 7 )

中断服务程序使高优先级任务就绪

低优先级任务释放CPU 使用权

TIME

51

占先式( preemptive )当系统响应时间很重要时,要使用占先式( pree

mptive )内核。最高优先级的任务一旦就绪,总能得到 CPU 的控制权。

当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的 CPU 使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了 CPU 的控制权。

使用占先式内核时,应用程序不应直接使用不可重入型函数。如果调入可重入型函数时,低优先级的任务 CPU 的使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。

52

占先式 (Preemptive)

低优先级任务

ISR 高优先级任务

( 1 ) ( 2 )

( 3 )

( 4 )( 5 )

( 6 )

中断服务程序使高优先级任务就绪

高优先级任务得到CPU 使用权

TIME

53

可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在 CPU寄存器中或堆栈中。

一个不可重入型函数的例子

int Temp;

Void swap (int *x,int*y)

{

Temp=*x;

*X=*Y;

*y=Temp;

}

可重入型函数

54

一个可重入型函数的例子

Void swap (int *x,int*y)

{

int Temp;

Temp=*x;

*X=*Y;

*y=Temp;

}

55

调度 Scheduler

内核的主要职责之一,决定任务运行的次序。 基本的调度算法有先来先服务 FCFS,最短周期优先 SBF

,优先级法 (Priority),轮转法 (Round-Robin),多级队列法 (multi-level queues),多级反馈队列 (multi-level feedback queues)等。

调度的基本方式有可占先式和非占先式。 多数实时内核是基于优先级调度的多种方法的复合。

56

优先级( Priority )

每个任务按其重要性被赋予一定的优先级。 静态优先级与动态优先级。 基于优先级的系统会出现优先级倒置的问题

,一个好的实时内核应该提供解决倒置的方法。

已开发出多种算法用于实时任务的优先级分配,基本的有单调执行率调度法 RMS 和最早期限优先法 EDF等。

57

代码临界区 (Critical Section)

指一段不可分割的代码,一旦执行,不能被中断。

实现代码临界区的方法有:一是屏蔽中断,通常在代码执行前关闭中断,执行后打开中断,只能用于单处理机的情形;二是通过信号量机制。

58

互斥( mutual exclusion)

资源的使用必须独占,叫做互斥。解决办法:开关中断,使用硬件指令,使用信号量

59

任务间通信 (inter task com)

在多任务系统中,任务之间存在相互制约的关系,或者任务之间需要交换信息,称为任务间通信。

方式:邮箱,队列,事件标记等。

60

时钟节拍 (Clock tick)

一种周期性发生的特殊中断,该中断可视为系统心脏的跳动。

中断周期越短,系统响应速度越快,但开销也越大,程序的执行速度越慢。

典型中断时间在 10-200ms 之间,取 20ms较为合适。

61

可预测性 (predictability)

指在系统运行的任何时刻、任何情况下,实时操作系统的资源调配策略都能为争夺资源 (包括 CPU、内存、网络带宽等 )的多个实时任务合理地分配资源,使各实时任务的实时性要求都能得到满足。

简单说:操作系统的行为是可知的。

62

好的实时操作系统需要具备以下功能:

任务管理(多任务和基于优先级的任务调度) 具备消除优先级倒置的机制     任务间同步和通信 实时时钟服务   中断管理服务   操作系统的行为是可知的和可预测的

63

评价实时操作系统几个重要指标

系统响应时间 (System response time ):是指系统发出处理要求到系统给出应答信号的时间。

任务切换时间 (Context-switching time) :是指任务之间切换使用的时间。

中断延迟 (Interrupt latency ) :是指计算机接收到中断信号到操作系统做出响应,并完成切换转入中断服务程序的时间。

top related