第一章
嵌入式系统概述
谭小波
嵌入式系统定义:
1、 Device used to control,monitor,orassist the operation of equipment,machinery or plants.
2、
嵌入式系统是以嵌入式应用为目的的计算机系统。
3、
嵌入式系统是一应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等有严格要求的计算机系统。
嵌入式系统的特点:
1、
专用计算机系统
2、
代码固化
3、
实时性要求
4、
可靠性要求
5、
操作系统的支持
6、
专门的开发工具、环境和方法
7、
知识集成系统
嵌入式系统的组成结构
应用程序
文件系统
图形用户接口
网络组件
实时操作系统
|
D/A A/D I/O
嵌入式微处理器
通用接口 ROM SDRAM
人机交互接口
|
功能层
软件层
中间层
硬件层
|
硬件抽象层
|
硬实时系统是指系统对响应时间有严格要求,如果响应时间不能满足,就会引起系统崩溃或者致命的错误。
软实时系统是指系统对响应时间有一定要求,如果响应时间不能满足,不会导致系统崩溃或者出现致命的错误。
循环轮询流程图:
初始化
|
处理1
|
处理2
|
事件1
?
|
事件2
?
|
N
|
N
|
Y
|
Y
|
前后台系统:
ISR1
|
初始化
|
事件1
?
|
处理1
|
处理2
|
事件2
?
|
|
|
|
|
|
|
|
|
|
ISR2
|
ISR3
|
多任务系统流程图:
后台
|
开发任务
|
Tasks
|
前台
|
ISRS
|
嵌入式系统应用领域:
1
、消费电子领域
2
、通信网络领域
3
、工业控制领域
4
、汽车电子领域
5
、医疗仪器领域
6
、航空航天与军事国防领域
嵌入式系统发展趋势:
1
、发展行业性的嵌入式硬件平台,制定行业标准。
2
、随着相关技术的发展SOC
将成为应用主流
3
、发展功能更强大的开发工具和嵌汝式操作系统,支持复杂度越来越高的嵌入式应用软件。
4
、面向网络互连的嵌入式系统成为必然趋势
5
、嵌入式系统向新的嵌入式计算模型方向发展
第2章 嵌入式处理器
嵌入式处理器的分类:
1
、嵌入式微控制器 单片机 8051、C166/167、MCS-系列、MCU
2
、嵌入式微处理器 在应用中,只保留与嵌入式应用紧密相关的功能硬件 AM186/88 POWERPC 、ARM、MIPS、MOTOROLA68K
3
、嵌入式DSP
4
、嵌入式片上系统SOC 嵌入式微处理器/DSP“集成电路”级转向“集成系统”级设计
典型的嵌入式处理器:
1
、ARM处理器
2
、PowerPC处理器
3
、MIPS处理器
4
、Sparc sun公司研发的
5
、龙芯一号处理器
ARM
处理器系列:
1
、ARM7系列
2
、ARM9系列
3
、ARM9E系列
4
、ARM10系列
5
、SecurCore系列
6
、Intel的StrongARM
7
、intel的Xscale
ARM
编程模型:
三级流水线:
1
、取指
2
、译码
3
、执行
流水线延时:
多装载指令LDMIA:
取指
译码
执行
ld r2 执行ld r3
|
取指
|
译码
执行
|
取指
译码
执行
|
Ldmia ro
|
数据类型:
Byte:
字节,8位
Halfword
半字 16位
Word
字 32位
当数据类型被说明成unsigned类型时,N位数据值表示范围是0—2N-1的非负整数
当数据类型被说明成signed类型时,N位数据值表示范围是-2N-1—+2N-1的整数
ARM
处理器模式:
处理器模式
|
说明
|
用户 usr
|
程序正常执行
|
FIQ fiq
|
支持高数据传输或通道处理
|
IRQ irq
|
通用中断处理
|
管理 svc
|
操作系统保护模式
|
中止 abt
|
虚拟存储器或存储保护
|
未定义 und
|
支持硬件协处理器的软件防真
|
系统 sys
|
运行特权操作系统任务
|
寄存器组织:
ARM
处理器共有37个寄存器,32位,含有程序计数器PC;6个状态寄存器,32位,只使用了其中12位
当编写程序时37个寄存器中只有通用寄存器R0-R14、程序计数器PC和当前状态寄存器CPSR需要考虑
不分寄存器组R0-R7
分寄存器组R8-R14
R8-R12
有两组物理寄存器:一组为FIQ模式,另外一组为FIQ以外的模式
R13
通常用于堆拽指针SP
R14
通常用于子程序链接寄存器LR
程序计数器R15(程序计数器PC):
1
读程序计数器PC:用指令读出的R15的值为指令地址加8个字节
2
写程序计数器PC:写R15的结果是将写到的R15的值作为指令地址,并根据这个地址发生转移。
存储器和存储器映射I/0
存储器格式包括小端和大端模式,大小端的存储格式如下图:
大端存储器模式
31 24 23 1615 8 7 0
地址A的字
| |||
地址A的半字
|
地址A+2的半字
| ||
地址A的字节
|
地址A+1的字节
|
地址A+2的字节
|
地址A+3的字节
|
小端存储模式
地址A的字
| |||
地址A+2的半字
|
地址A的半字
| ||
地址A+3的字节
|
地址A+2的字节
|
地址A+1的字节
|
地址A的字节
|
例:STR R0,[R1] 将R0中的字存入R1的地址
LDRB R2
,[R1] 将R1中的一个字节加到R2中,设R1=0X100
R0
: 31 0
11
|
22
|
33
|
44
|
STR R0
,[R1] 后: 0X100:
11
|
22
|
33
|
44
|
0X100
: 31
0 31
11
|
22
|
33
|
44
|
R2
:大端模式: R2:小端模式:
00
|
00
|
00
|
11
|
00
|
00
|
00
|
44
|
ARM
寻址方式:
1
,寄存器寻址
2
、立即寻址
3
、寄存器移位寻址
4
、寄存器间接寻址
5
、基址寻址
6
、多寄存器寻址
7
、堆拽寻址
8
、块拷贝寻址
9
、相对寻址
第3章 嵌入式硬件平台
嵌入式系统的硬件是以嵌入式处理器为中心,由存储器、I/0单元电路、通信模块、外部设备等必要的辅助接口组成。通常,嵌入式系统还包括人机交互界面,用于系统和人交互。
四周期握手协议:
设备
1
|
设备
2
|
查询
|
应答
|
设备
1
|
设备
2
|
动作
|
典型微处理器总线:
CPU
|
设备
1
|
存储器
|
有以下总线:
CLOCK
:提供总线各部分的同步
R/W
‘读写信号
Address
为访问提供地址
Data
是一个N位信号束,它从CPU得到数据或者向CPU传送数据
Data ready/
数据准备信号
总线时序图:
Data ready’
|
启动address
|
CLOCK
|
R/W
|
address
|
Data
|
t
|
存储器子系统设计的首要目标是使存储器在 工作速度 上很好的与处理器匹配,并满足各种存取需要。
全部存储器分为四级:寄存器组、高速缓存、内存、外存
RAM(Random Access Memory,
随机存储器)
1
、静态RAM SRAM
CE
‘
R/W
‘
Adrs
Data
|
CE’
|
R/W’
|
Address
|
Data
|
2
、动态RAM DRAM 需要DRAM控制器
CPU
|
DRAM
控制器
|
DRAM
|
CE’
R/W’
RAS’
CAS’
Address
Data
|
CE
‘
|
R/W
‘
|
RAS
‘
|
CAS
‘
|
Address
|
Data
|
ROM
(Read-Only Memory只读存储器),分为工场可编程ROM、现场可编程ROM。
Flash Memory
按块擦除存储器
标准串行通信接口:
RS-232
:全双工,数据传输速度慢、传输距离短
RS-422
:全双工,数据传输速度快、传输距离长
RS-485
:半双工,是RS-422的变形
USB
:通用串行总线,Universal Serial Bus,四根线:电源线、接地线、两根差模信号线
USB
总线软件结构:USB总线接口、USB系统、USB客户软件
阻容式复位电路:
VCC
RST
VSS
|
VCC
|
10MS
|
第4章 Bootloader与设备驱动
Bootloader
是系统加电后首先运行的一段程序,它的目的是将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好正确的环境。
Bootloader
的操作模式:
启动加载模式(自主模式):在嵌入式产品发布的时候
下载模式:第一次安装操作系统和根目录文件时使用,另外在系统更新的时候使用
第5章 嵌入式操作系统
典型的嵌入式操作系统:
1 VxWorks
2 windows CE
3 pSOS
4 QNX
5 Plam OS
6
嵌入式Linux
7 UC/OS II
国内:
Delta OS
Hopen OS
HBOS
任务:一个任务也称一个线程,是一个程序,有以下5种状态:
1
、休眠态
2
、就绪态
3
、运行态
4
、挂起态
5
、被中断态
任务调度:
1
、非占先式内核:各个任务彼此合作,共享CPU,。中断服务可以使一个高优先级的任务由挂起态变为就绪态,但中断服务后,CPU的使用权交回给原来被中断的任务,知道任务主动释放CPU的控制权,一个新的高优先级别的任务才能运行。
非占先式的优点:
响应中断快
可以使用不可重入函数
共享数据方便
ISR
|
|
底优先级任务
|
高优先级任务
|
t
|
2
、占先式内核:最高优先级别的任务一旦就绪,便能得到CPU的使用权,当一个运行着的任务使一个比它优先级别高的任务进入就绪态时,当前任务被挂起,那个高优先级的任务立即得到CPU的使用权开始运行。如果是中断服务程序使一个高优先级的任务进入就绪态,当中断完成时,被中断的任务被挂起,有限级别高的任务开始运行。
非占先式内核的特点:
中断响应较快
不应直接使用不可重入函数。只有对不可重入函数加锁保护后才能使用,对共享数据要使用互斥、信号量等保护机制。
|
|
|
|
t
|
uC/OS-II
的特点:
1、
源代码公开
2、
可移植性
3、
可固定
4、
可裁剪
5、
占先式
6、
多任务
7、
可确定性
8、
任务栈
9、
系统服务
10、
中断管理
11、
稳定性与可靠性
第6章 嵌入式应用程序设计
状态机:(设计安全带)
此系统有三个输入和一个输出。输入分别是感知乘客下的座位传感器、检查安全带是否系牢的传感器和对限定时间即时的计时器,输出是蜂鸣器。
Idle
|
Buzzer
|
Seated
|
Belted
|
坐
/
计时器开
|
定时器
/
蜂鸣器
|
未坐
/
蜂鸣器关
|
系好安全带
/
蜂鸣器开
|
系好安全带
/-
|
未系安全带
/
计时器开
|
系统的工作情况是:当座位上无人时,Idle状态被激活;当有人坐下时进入Seated状态并打开计时器;如果计时器在系安全带牢之前关闭,则转入Buzzer状态,反之进入Belted状态;当人离开座位时,返回Idle状态。
假设已经将三个输入(seat,belt,timer)的当前值载入变量,并临时保持输出到变量(timer_on,buzzer_on)中。变量state用来保持当前状态。
#define IDLE 0
#define SEATED 1
#define BELTED 2
#define BUZZER 3
Switch(state){
Case IDLE:
If(seat){state=SEATED;timer_on=TRUE;}
Break;
Case SEATED:
If(belt){state=BELTED;}
Else if(timer){state=BUZZER;buzzer_on=TRUE;}
Break;
Case BELTED:
If(!seat){state=IDLE;}
Else if(!belt){state=STEATED;timer_on=TRUE;}
Break;
Case BUZZER:
If(!seat){state=IDLE;buzzer_on=FLASE;}
Else if(belt){state=BELTED;}
Break;
}
嵌入式程序编译过程:
高级语言代码—》编译程序—》汇编语言代码——》汇编程序——》目标代码——》链接程序——》可执行二进制代码——》装入程序——》执行
嵌入式优化:
1、
执行时间优化
2、
能量优化
3、
长度优化
第7章 基于网络的嵌入式系统设计
OSI
模型:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
|
网络编程主要是指报文传递编程,常用的报文传递编程有两种:
1
、请求/应答方式
2
、推移方式
嵌入式系统网络包括有:I^2C总线、CAN总线、Ethernet、GPRS、蓝牙、internet协议中的基本概念。