嵌入式整理.docx
- 文档编号:9457038
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:38
- 大小:526.76KB
嵌入式整理.docx
《嵌入式整理.docx》由会员分享,可在线阅读,更多相关《嵌入式整理.docx(38页珍藏版)》请在冰点文库上搜索。
嵌入式整理
第一章
嵌入式系统是----“以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统”
1.4嵌入式系统与通用计算机系统
应用程序
编译器
编辑器
解读器
操作系统
机器语言
微体系结构
数字逻辑层
两者体系结构相同
1.4.1嵌入式系统与计算机的区别
特征
通用计算机
嵌入式系统
形式和类型
看得见的计算机。
按其体系结构、运算速度和结构规模等因素分为大、中、小型机和微机。
看不见的计算机。
形式多样,应用领域广泛,按应用来分。
组成
通用处理器、标准总线和外设
•软件和硬件相对独立。
面向应用的嵌入式微处理器,总线和外部接口多集成在处理器内部。
软件与硬件是紧密集成在一起的。
※开发方式
开发平台和运行平台都是通用计算机
采用交叉开发方式,开发平台一般是通用计算机,运行平台是嵌入式系统。
二次开发性
应用程序可重新编性
一般不能再编程
1.6嵌入式系统的特点
◆嵌入式系统通常是形式多样、面向特定应用的。
◆嵌入式系统得到多种类型的处理器和处理器体系结构的支持。
◆嵌入式系统通常极其关注成本。
◆嵌入式系统有实时性和可靠性的要求。
◆它使用的操作系统一般是适应多种处理器、可剪裁、轻量型、实时可靠、可固化的嵌入式操作系统。
◆嵌入式系统开发需要专门工具和特殊方法。
1.7嵌入式系统的分类
按嵌入式处理器的位数来分类、按应用来分类、按速度分类、按确定性来分类
按嵌入式系统软件复杂程度来分类
1.7.3按速度分类——这三者按系统响应时间分的
◆强实时系统:
其系统响应时间在毫秒或微秒级。
◆一般实时系统:
其系统响应时间在几秒的数量级上,其实时性的要求比强实时系统要差一些。
◆弱实时系统:
其系统响应时间约为数十秒或更长。
这种系统的响应时间可能随系统负载的轻重而变化。
1.7.4按确定性来分类——不能及时响应后果分的
根据确定性的强弱,可将嵌入式系统分为硬实时、软实时系统:
◆硬实时:
系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要引起系统崩溃或致命的错误。
◆软实时:
系统对系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。
1.7.5.2前后台系统
是中断驱动系统的一种
◆后台是一个循环轮询系统一直在运行。
◆前台是由一些中断处理过程组成的。
○当有一前台事件(外部事件)发生时,引起中断,进行前台处理,处理完成后又回到后台(通常又称主程序)。
1.8几种主流嵌入式操作系统简介
◆VxWorks是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),出现时间较早。
具有可裁剪微内核结构、高效的任务管理、灵活的任务间通讯、微秒级的中断处理。
现在主要应用于航空航天、国防科技以及电信等领域的高端应用。
缺点价格昂贵,只提供二进制码
◆嵌入式Linux
Linux是一种免费、开源的操作系统,因此其支持软件多,可用资源丰富,广泛应用于服务器和PC机器上。
针对嵌入式系统的特点,出现了多种Linux的变形,这些可以应用于嵌入式系统应用的Linux操作系统被统称为“嵌入式Linux操作系统”。
主要缺点是一般开发人员不太熟悉Linux以及相关的开发环境。
◆WindowsCE
WindowsCE与Windows系列有较好的兼容性,支持Win32应用程序接口(API)。
该操作系统在效率、功耗方面的表现并不出色,与Windows一样占用系统内存过多,运用程序庞大;版权许可费也是厂商不得不考虑的因素。
现在该操作系统主要应用实时性要求不高的消费电子类嵌入式产品上。
◆μC/OS-Ⅱ
μC/OS-Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单微控制器或数字信号处理器(DSP)。
由于它仅是一个实时内核,这就意味着还有很多工作需要用户自己去完成。
◆T-Kernel
T-Kernel实时内核,全世界最大操作系统(日本)。
它在工业控制方面以及信息化家电方面得到广泛的应用,在这些领域是事实上的嵌入式操作系统标准。
T-Kernel是开放式标准,可以免费下载源码,实时处理速度比Linux、WindowCE等嵌入式操作系统快,实时处理速度可以达到微秒级。
第三章
3.1计算机体系结构——指的是存储的体系结构
冯-诺依曼体系结构:
物理上程序和数据在一起的
哈佛体系结构:
程序和数据是分开的
特殊:
程序和数据在一起,但有独立缓存的也是哈佛体系
3.2
◆字长:
就是CPU一次能从内存读取的比特数目。
从处理器内部角度来看,这与处理器内部数据总线宽度、寄存器位数以及ALU相关。
◆边界对齐:
因为处理器处理数据是按字长操作的,而内存是按字节处理的,两者不匹配,所以要按字长处理需要边界对齐
◆端序:
他是对内存操作来说的,数据按端序网内存写数据。
物理内存到逻辑内存的映射有两种方式:
2小端序(little-endian):
小端序模式中,多字节数据的低位字节放在低地址存储单元中;
②大端序(big-endian):
大端序中,高位字节放在低地址存储单元中。
Inter80x86是小端序结构。
◆比特:
用来面熟构造计算机信息的基本单位(字节bit)
3.5.3寻址方式
1.立即数寻址MOVA,#20;——速度最快,其他了解
立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。
2.直接寻址MOVA,20;
指令中给出操作数所在的存储单元的地址。
3.寄存器直接寻址MOVA,R0;
在寄存器直接寻址中,操作数是存放在寄存器中的,指令中给出寄存器的名称。
4.寄存器间接寻址MOVA,@R0
寄存器间接寻址中,操作数的地址存放在寄存器中,指令给出存放操作数地址的寄存器名。
间接寻址的优点是使得对数据的存取成为动态的。
5.变址寻址MOVCA,@A+DPTR
这种寻址方式以16位的程序计数器PC或数据指针DPTR作为基址寄存器,以8位的累加器A作为变址寄存器。
基址寄存器和变址寄存器的内容相加形成16位的地址,该地址即为操作数的地址。
3.5.5堆栈操作与函数调用
堆栈(stack)是函数调用机制的基础,对于程序员来说,这是一个比较重要的概念。
从数据结构角度来
讲,堆栈具有“先进后出”(LIFO,LastInFirstOut)的特点。
从数据存储的角度来讲,堆栈就是内存的一个
连续区域,在函数调用时候通常用来保存程序的返回地址。
处理器内部有一个专用寄存器保存着栈顶地址,称为堆栈指针(stackpointer)
两种堆栈的操作:
压栈、出栈
压栈2种模式:
前递减增长模式:
先移指针,再放数据往低地址压
后递增增长模式:
先放数据,然后移动指针,往高地址压
前指:
先移指针递减:
从内存的高地址向低地址压
后指:
后移指针递增:
从低地址向高地址压
从内存地址变化角度来看,两种模式增长方向相反,一个向上增长,一个向下增长。
两种模式中,SP的操作有所不同,一个“先压后增”,另一个“先减后压”。
Intelx86处理器是“前递减增长模式”,8051微控制器是“后递增增长模式”
3.5.5堆栈操作与函数调用例子
intfunc1(void)
{
return100;
}
voidmain(void)
{
func1();
}
下条要执行的指令地址压栈
第四章
4.1.4按存储特点分类
◆块设备(blockdevice)块设备将信息存储在固定大小的块中,每个块有自己的地址,每个块都能够独立于其它块被读写。
磁盘是最常见的块设备。
◆字符设备(characterdevice)字符设备发送或接收的是字符流。
数据的存储不具备块的特征,因而不能对数据做寻址操作。
4.3I/O互连
I/O互连就是外部设备通过总线连接在一起。
IO总线--状态线,控制线,设备选择线,数据线…
4.3.1总线
◆总线的概念:
总线在计算机术语中表示一个物理连接,用来将信号从一点传送到另一点。
通常总线由一些线路组成,每条线路被称为总线线路(busline)。
◆总线分类
按传送信号:
地址总线、数据总线、控制总线。
按和CPU的关系:
内部总线、系统总线、外部(I/O)总线。
读地址的读数据的输入/出,传送信号
4.3.6UART/SPI/I2C三总线区别
SPI总线由三条信号线组成:
时钟(SCLK)、数据输出(SDO)、数据输入(SDI)。
SPI总线可以实现多个SPI设备互相连接。
提供SPI串行时钟的SPI设备为SPI主机或主设备,其他设备为SPI从机或从设备。
主从设备间可以实现全双工通信。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。
在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。
UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
SPI和UART可以实现全双工,但I2C不行。
因为I2C不是全双工的,因为只有一条数据总线。
4.5中断的一些概念
◆中断源:
发出中断请求的来源。
◆中断向量:
中断服务例程的入口地址。
◆中断向量表:
多I/O设备时,所有的中断向量集中存放到存储器的某一区域,这一区域称之为中断向量表。
◆中断屏蔽:
使CPU(暂时)不响应中断请求。
4.5.1中断基本过程
中断基本过程可以分成四个阶段:
中断请求→中断响应→中断服务→中断返回
4.5.2中断嵌套
在一个中断执行过程中,又来一个中断,这种现象是中断嵌套。
第五章
单片机体系结构
三总线:
1.地址总线:
将CPU发出的地址信号传送到存储器或I/O接口的信号线路。
2.控制总线:
在CPU与存储器或I/O接口进行数据交换时控制时序等的信号传送线路。
3.数据总线:
在CPU与存储器或I/O接口间进行数据交换的信号传送线路。
震荡电路功能:
给CPU提供基准时钟。
内部时钟(一般称为BCLK)的一个周期称为”时钟周期“。
执行一条指令需要多少个时钟周期是预先规定的。
5.2.4时钟和时钟周期的关系
○振荡周期:
振荡脉冲的周期。
○状态周期:
2个振荡周期为一个状态周期,也称为时钟周期。
○机器周期:
一个机器周期包含6个状态周期,用S1‾S6表示;共12个节拍(12个振荡周期),依次可表示为S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。
○指令周期:
执行一条指令所占用的全部时间,它以机器周期为单位。
复位端口功能:
等晶体振荡器稳定下来。
接通电源后的一瞬间微处理器的内部状态不定,为了使微处理器
能正常地工作,必须按给定的状态对微处理器内部进行初始化。
初始复位状态:
堆栈指针sp07H,端口P0~P3FFH(高电平),其他都为0
5.3单片机(MCS51)存储结构—单片机内存模型----哈佛体系结构
程序存储器内部数据存储器外部数据存储器
◆程序存储器:
分为内部和外部;内、外不都是从0000开始的,所以用EA引脚来区分用哪个部分。
当EA=1时PC指针指向高电平内,即指向内部;相反,EA=0指针指向外部。
◆数据存储器:
分为内部和外部;它靠语法关键字区分数据位置。
内部与外部都是针对芯片来说的,最大都是64K程序
5.3.1程序存储器
MCS51微控制器属于哈佛体系结构,具有分离的程序存储器ROM和数据存储器RAM,对应的有两个地址寄存器,这样可以同时读取指令和数据,提高运行效率。
5.3.2程序的6个特殊入口地址
○两个特殊单元0000H—0002H、0003H—002AH
操作
入口地址
复位
0000H(程序开始地址,只有3个字节)
外部中断0
0003H
定时器/计数器0溢出
000BH
外部中断1
0013H(每个中断服务程序只有8个字节单元)
定时器/计数器1溢出
001BH
穿行口中断
0023H
◆异常向量表在程序存储区低地址开始向量=地址复位后处理地址0000H
◆为什么特殊:
每个中断入口都先存入一个跳转指针(Ljmp)如Ljmp100,程序与此指针自动跳转到100地址处
5.3.3RAM存储器空间的分配
处理器每次只使用四组寄存器组中的一组,如果程序员不指明,则处理器默认使用的是第0组R0。
8051中的RAM空间分配通用寄存器组
5.3.4通用寄存器组---->怎么切换寄存器组
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0~R7来命名,常称这些寄存器为通用寄存器。
这四块中的寄存器都称为R0~R7。
程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0和RS1),即可选中这四组通用寄存器。
若程序中并不需要用4组,那么其余的可用做一般的数据缓冲器,CPU在复位后,选中第0组工作寄存器
5.3.5位可寻址(bit-addressable)--可对位操作
8051中RAM空间分配中,地址20到2F中的内存空间是字节可寻址,同时也是位可寻址的,作为字节来寻址,该区域是16个字节的空间,按位来寻址则是128位空间。
所谓“位可寻址”是指处理器可以直接读写相应的位的数据,并进行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。
位可寻址是8051微控制器最强大的特点之一,从程序角度来看这一特性能减少代码尺寸并提高执行速度,更重要的是位可寻址性实际上是与I/O的操作密切相关的,例如通过在程序中对改写相应位的数值(从0到1)可以改变对应端口的输出电平以达到对外部设备进行控制的作用。
5.3.7堆栈和堆栈指针
在片内RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下的80个单元就是供用户使用的一般RAM区了,地址单元为30H-7FH。
对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。
Sp用的时候可调整,指向30H。
不调整他指向默认处
FFH
80H
特殊功能寄存器
区(SFR)
可字节寻址也可
位寻址
7FH
30H
数据缓冲区
堆栈区
工作单元
只能字节寻址
2FH
20H
位寻址区
全部可位寻址
共16字节128位
1FH
00H
3区
4组通用寄存器
R0-R7也可作为
RAM使用
2区
1区
0区
5.3.8特殊功能寄存器SFR---查表
5.4通用I/O
◆P0口:
P0.0~P0.7统称为P0口。
在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。
在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。
◆P1口:
P1.0‾P1.7统称为P1口,可作为准双向I/O口使用。
◆P2口:
P2.0‾P2.7统称为P2口,一般可作为准双向I/O口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。
◆P3口:
P3.0‾P3.7统称为P3口。
除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),准双向口其特点是在输入数据时,应先把口置1!
5.5通信的两种基本方式---a)并行通信;b)串行通信
5.5.1串行通信传输方式:
异步传输方式、同步传输方式
◆异步传输方式--串行异步传送的字符格式:
(a)字符格式;(b)有空闲位的字符格式
异步串行通信的特点:
1.以字符为单位发送,字符之间的间隔不受限制;
2.由起始位和停止位使收发双方同步;
3.通信的精确格式可以由收发双方选择。
在串行异步传送中,通信双方必须事先约定:
(1)字符格式:
双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。
例如用ASCII码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。
当然停止位也可以大于1位。
(2)波特率(Baudrate):
波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。
它与字符的传送速率(字符/秒)之间有以下关系:
波特率=一个字符位数×字符/秒
○要求发送端与接收端的波特率必须一致。
◆同步传输方式
同步通信格式
同步通信是由一个起始同步符和若干个数据位以及一个检验字段组成,传输的数据可以以字符为单位,也可以以二进制位为单位,因此同步传输也称为数据流传输。
同步通信的特点:
①同步通信以同步符作为一帧数据的起始标志,因此在传输的数据中不能包含有同步符。
在实际应用中采用自动加“0”技术避免数据中出现同步符。
②同步通信中一般数据位可达上千位,因此传输效率较高,传输速度较快。
③同步通信中传输位数较多,因此要求收发时钟严格同步。
传输中采用“曼彻斯特”编码,数据中隐含时钟信息。
比较:
并行:
一次发送数据位数大于1位。
串行:
一次一位。
起始位低电平,传数据时,它默认第一个为起始位,这是硬件自动的。
通讯双方速度必须相同。
5.5.1串行通信传输方式(续)--(a)单工方式;(b)半双工方式;(c)全双工方式
5.6定时器/计数器
对于定时器/计数器来说,不管是独立的定时器芯片还是单片
机内的定时器,大都具有以下特点:
(1)定时器/计数器有多种方式,可以是计数方式也可以是定时
方式。
(2)定时器/计数器的计数值是可变的,当然计数的最大值是有限的,这取决于计数器的位数。
计数的最大值也就限定了定时的最大值。
(3)在到达设定的定时或计数值时发出中断申请,以便实现定时控制。
MCS-51单片机内带有两个16位定时器/计数器T0和T1,它们均可作为定时器或计数器使用。
5.6.1定时器/计数器结构
定时器/计数器的核心是16位加法计数器,图中用特殊功能寄存器TH0、TL0及TH1、TL1表示。
TH0、TL0是定时器/计数器0加法计数器的高8位和低8位,TH1、TL1是定时器/计数器1加法计数器的高8位和低8位。
作计数器用时,加法计数器对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数。
每输入一个脉冲,加法计数器增加1。
加法计数溢出时可向CPU发出中断请求信号。
作定时器用时,加法计数器对内部机器周期脉冲Tcy计数。
由于机器周期是定值,所以对Tcy的计数就是定时.
如Tcy=1μs,计数值100,相当于定时100μs。
加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。
5.7中断
◆中断源:
中断请求信号的来源。
包括中断请求信号的产生及该信号怎样被CPU有效地识别。
◆中断响应与返回:
CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地执行。
◆优先级控制:
多个中断源情况。
中断系统优先级控制所要解决的问题。
中断优先级的控制形成了中断嵌套。
5.7.2中断源
◆外部中断
外部中断是指从单片机外部引脚INT0、INT1输入中断请求信号的中断,即外部中断源有两个。
输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为外部中断源,从引脚INT0、INT1输入。
外部中断请求INT0、INT1有两种触发方式:
电平触发及跳变(边沿)触发。
◆内部中断
内部中断是单片机芯片内部产生的中断。
单片机的内部中断有定时器/计数器T0、T1的溢出中断,串行口的发送/接收中断。
第六章
标准C与C51的差异:
c51根据单片机存储结构及内部资源定义相应的C语言中的数据类型和变量,其它的语法规定、程序结构及程序设计方法都与标准的C语言程序设计相同。
6.2C语言编译过程
C源文件—>预处理阶段—>编译阶段—>汇编阶段—>连接
①预处理:
包含头文件,条件编译,加载库文件
静态库:
预处理把函数名加载进来,但在连接阶段把所有代码也加进来
库文件所以很大,但是运行速度快
动态库:
它只加载函数名,但在运行时在回去找相应函数名中的代码
②编译:
把高级语言文件转到低级格式文件
③连接:
作用是几个目标文件合并结合成一个二进制代码。
6.3KeilCx51Compiler支持的基本数据类型
数据类型
位数
字节数
取值范围
数据类型
位数
字节数
取值范围
bit
1
0or1
signedshorint
16
2
-32768-+32768
sbit
1
0or1
Unsignedshorint
16
2
0-65535
sfr
8
1
0-255
Signedlongint
32
4
Sfr16
16
2
0-65535
Unsignedlongint
32
4
Signedchar
8
1
-128-+127
Foat
32
4
unsignedchar
8
1
0-255
double
32
4
6.3.1sfr数据类型
sfrname=address;其中:
name---对应特殊功能寄存器SFR名称;
address---对应特殊功能寄存器SFR地址。
例如:
sfrP0=0x80;sfrP1=0x90;sfrP2=0xA0;sfrP3=0xB0;
sfr变量的变量名与对应的特殊功能寄存器同名。
在C语言中,一个变量被定义为“内存的一块区域以及该区域的解释规则”,变量名对应的是就是该内存区域的地址。
将sfr变量与具体的特殊功能寄存器SFR通过同一地址关联对应起来,这就是sfr变量定义的含义。
sfr数据类型是与特殊功能寄存器SFR相对应的。
这两者中,一个是C语言扩展数据类型,一个是微控制器中的硬件。
引进sfr数据类型是为了使程序员能够通过软件的方法来读写SFRs,通过sfr变量读写与之相对应的特殊功能寄存器SFR,实现对相关硬件部件的软件控制。
6.3.2sbit(SFRbit)数据类型----定义位的
bit-position是SFR比特在SFR中的位置;其中name是sbit变量名;名字可以随便起
sfr-address是SFR的地址;sfr-name是预先定义过的SFR名;
sbit-address是S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 整理
![提示](https://static.bingdoc.com/images/bang_tan.gif)