嵌入式重点.docx

上传人:b****2 文档编号:2157788 上传时间:2022-10-27 格式:DOCX 页数:10 大小:194.39KB
下载 相关 举报
嵌入式重点.docx_第1页
第1页 / 共10页
嵌入式重点.docx_第2页
第2页 / 共10页
嵌入式重点.docx_第3页
第3页 / 共10页
嵌入式重点.docx_第4页
第4页 / 共10页
嵌入式重点.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

嵌入式重点.docx

《嵌入式重点.docx》由会员分享,可在线阅读,更多相关《嵌入式重点.docx(10页珍藏版)》请在冰豆网上搜索。

嵌入式重点.docx

嵌入式重点

第一章

IEEE对嵌入式系统的定义为:

嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(devicesusedtocontrol、monitor、orassisttheoperationofequipment、machineryorplants)

这主要是从应用对象上加以定义,涵盖了软、硬件及辅助机械设备。

国内普遍认同的嵌入式系统定义为:

以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

嵌入式系统是“专用计算机应用系统”,它具有一般计算机组成的共性,也是由硬件和软件组成;

嵌入式系统的硬件是以嵌入式处理器为核心,配置必要的外围接口部件。

嵌入式系统的硬件是嵌入式系统软件环境运行的基础,它提供了嵌入式系统软件运行的物理平台和通信接口;

嵌入式操作系统和嵌入式应用软件则是整个系统的控制核心,控制整个系统运行、提供人机交互的信息等。

F嵌入式处理器可以分为三类:

²嵌入式微处理器(Microprocessor)

F嵌入式微处理器的基础是通用计算机中的CPU,是嵌入式系统的核心。

在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点.

²嵌入式微控制器MCU(MicrocontrollerUnit)

²嵌入式DSP(DigitalSignalProcessor)

第二章

Cortex-M3和Cortex-M4属于真正的ARMv7-M架构,采用哈佛总线结构,具有高效的数字信号处理能力和低功耗、低成本和易于使用的优点。

处理器内核:

pARMv7-M构架:

Thumb-2指令集(ISA)子集,包含所有基本的16位和32位Thumb-2指令

#只有分组的SP堆栈指针

#硬件除法指令,SDIV和UDIV

#处理模式(Handlermode)和线程模式(Threadmode)

#Thumb状态和调试状态

Cortex-M3处理器内核是单片机的中央处理单元(CPU)。

完整的基于Cortex-M3的MCU还需要很多其它组件。

Cortex-M3处理器内核采用ARMv7-M架构,建立在一个高性能哈佛结构的三级流水线基础上,实现了Thumb-2指令集,既获得了传统32位代码的性能,又具有16位的高代码密度。

其主要特性如下:

p采用Thumb-2指令集架构(ISA)的子集

p采用哈佛处理器架构

p采用三级流水线+分支预测

Cortex-M3处理器紧密结合一个可配置的嵌套向量中断控制器(NestedVectoredInterruptController,NVIC),具有低延迟的中断和异常处理性能。

NVIC支持11个系统异常和240个优先级可动态配置的中断,每个中断的优先级有256个选择。

除非特别说明,否则所有的NVIC寄存器都可采用字节、半字和字方式进行访问。

不管处理器存储字节的顺序如何,所有NVIC寄存器和系统调试寄存器都是采用小端(LE)字节排列顺序,即低位字节存储在低地址。

###采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,实现流水线操作。

三级流水线:

正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。

Cortex-M3内核采用三级流水线结构,每条指令的执行分取指、译码和执行三个阶段,可实现多条指令的并行执行,在不提高系统时钟频率的条件下减少每条指令的执行时间。

nCortex-M3处理器支持两种工作模式:

线程模式(Threadmode)和处理模式(Handlermode)。

n在复位时处理器进入线程模式,异常返回时也会进入该模式。

特权和用户(非特权代码能够在线程模式下运行。

p出现异常时处理器进入处理模式,在处理模式中,所有代码都是特权访问的。

nCortex-M3处理器有两种工作状态:

pThumb状态:

这是16位和32位半字对齐的Thumb和Thumb-2指令的正常执行状态。

p调试状态:

处理器停机调试时进入该状态。

nCortex-M3处理器支持两种特权分级——特权级和用户级,代码可以是特权执行或非特权执行。

非特权执行时对有些资源的访问受到限制或不允许访问。

特权执行可以访问所有资源。

n处理模式始终是特权访问,线程模式可以是特权或非特权访问。

n线程模式在复位之后为特权访问,但可通过MSR指令清零CONTROL[0],将它配置为用户(非特权)访问。

用户访问禁止:

p部分指令的使用,例如设置FAULTMASK和PRIMASK的CPS指令。

p对系统控制空间(SCS)的大部分寄存器的访问。

n当线程模式从特权访问变为用户访问后,本身不能回到特权访问。

只有处理操作能够改变线程模式的访问特权。

处理模式始终是特权访问的。

Cortex-M3下的操作模式和特权级别如图2-5所示。

n在Cortex-M3运行主应用程序时(线程模式),既可以使用特权级,也可以使用用户级;但是异常服务例程必须在特权级下执行。

复位后,处理器默认进入线程模式,特权级访问。

n在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU规定的禁地之外),并且可以执行所有指令。

n从用户级到特权级的唯一途径就是异常:

如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态,或者手工指定返回的状态。

n操作系统的内核通常都在特权级下执行,所有没有被MPU禁掉的存储器都可以访问。

在操作系统开启了一个用户程序后,通常都会让它在用户级下执行,从而使系统不会因某个程序的崩溃或恶意破坏而受损。

nCortex-M3处理器内核拥有两个堆栈指针,然而它们属于分组寄存器,任一时刻只能使用其中的一个。

当引用SP时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问(MRS,MSR指令)。

n这两个堆栈指针分别是:

p主堆栈指针(MSP):

或写作SP_main。

复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)

p进程堆栈指针(PSP):

或写作SP_process。

由用户的应用程序代码使用(不处于异常服用例程中时)。

n1、通用寄存器

p通用寄存器r0-r12没有在结构上定义特殊的用法

p寄存器r13、r14、r15具有以下特殊功能:

n堆栈指针寄存器r13用作堆栈指针(SP)。

由于SP忽略了写入位[1:

0]的值,因此它自动与字,即4字节边界对齐。

n处理模式始终使用SP_main,而线程模式可配置为SP_main或SP_process。

n链接寄存器

寄存器r14是子程序的链接寄存器(LR)。

p在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于接收来自PC的返回地址。

pLR也用于异常返回。

p其它任何时候都可以将r14看作一个通用寄存器。

n程序计数器

寄存器r15为程序计数器(PC),指向当前的程序地址。

该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。

如果修改它的值,就能改变程序的执行流。

n2、程序状态寄存器(xPSR)

p系统级的处理器状态可分为3类,因此有3个程序状态寄存器。

对程序状态寄存器的访问使用MRS和MSR指令,在访问时可以把它们作为单独的寄存器,3个中的任两个组合,或3个组合。

这3个寄存器为:

n应用PSR(APSR)

n中断PSR(IPSR)

n执行PSR(EPSR)

n3、中断屏蔽寄存器组

p中断屏蔽寄存器组包括PRIMASK,FAULTMASK和BASEPRI三个寄存器,用于控制异常的使能和禁止。

n4、控制寄存器(CONTROL)

p控制寄存器有两个用途,其一用于定义特权级别,其二用于选择当前使用哪个堆栈指针。

由两个比特来行使这两个职能。

nCortex-M3的存储器系统与传统ARM架构的相比,有非常大的变化:

pCortex-M3的存储器映射是预定义的,并且规定总线使用的存储区域。

pCortex-M3的存储器系统支持位带(Bit-band)操作,实现了在特殊的存储器区域对单一比特的原子操作。

pCortex-M3的存储器系统支持非对齐访问和互斥访问。

pCortex-M3的存储器系统支持小端配置和大端配置。

n在SRAM区的下部,有一个1MB的区间,被称为“位带区”。

该位带区还有一个对应的32MB的“位带别名(alias)区”,容纳了8M个“位变量”(对比8051的只有128个位变量)。

位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。

位带操作只适用于数据访问,不适用于取指。

通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。

n处理器存储器映射包括两个位带区域。

它们分别为SRAM和外设存储区域中的最低的1MB。

这些位带区域将存储器别名区的一个字映射为位带区的一个位。

nCortex-M3存储器映射有2个32MB别名区,它们被映射为两个1MB的位带区。

n对32MBSRAM别名区的访问映射为对1MBSRAM位带区的访问。

n对32MB外设别名区的访问映射为对1MB外设位带区的访问。

Cortex-M3处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始终使用小端格式。

小端格式是ARM处理器默认的存储器格式。

异常模型

pCortex-M3在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。

其中,编号为1-15的对应系统异常,大于等于16的则全是外部中断。

除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。

pCortex-M3处理器和嵌套向量中断控制器(NVIC)对所有异常按优先级进行排序并处理。

所有异常都在处理模式中操作。

出现异常时,自动将处理器状态保存到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。

在状态保存的同时取出向量快速地进入中断。

n优先级的数值越小,则优先级越高。

Cortex-M3支持中断嵌套,使得高优先级异常会抢占低优先级异常。

有3个系统异常:

复位,NMI以及硬Fault,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常,所有其它异常的优先级则都是可编程的,但不能被编程为负数。

固态函数库

固态函数库遵从以下命名规则:

PPP表示任一外设缩写,例如:

ADC。

系统、源程序文件和头文件命名都以“stm32f10x_”作为开头,

例如:

常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。

所有常量都由英文字母大写书写。

寄存器作为常量处理。

他们的命名都由英文字母大写书写。

外设函数的命名以该外设的缩写加下划线为开头。

每个单词的第一个字母都由英文字母大写书写,例如:

SPI_SendData。

在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。

名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外设PPP,例如TIM_Init.

名为PPP_DeInit的函数,其功能为复位外设PPP的所有寄存器至缺省值,例如TIM_DeInit.

名为PPP_StructInit的函数,其功能为通过设置PPP_InitTypeDef结构中的各种参数来定义外设的功能,例如:

USART_StructInit

名为PPP_Cmd的函数,其功能为使能或者失能外设PPP,例如:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1