嵌入式重点Word文档下载推荐.docx
- 文档编号:15075788
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:10
- 大小:194.39KB
嵌入式重点Word文档下载推荐.docx
《嵌入式重点Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《嵌入式重点Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
嵌入式微控制器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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 重点