赞
踩
嵌套中断向量控制器(Nested Vectoredlnterrupt Controller,NVIC)是一个在Cortex M4F中内建的中断控制器。
存储器保护单元(Memory Protection Unit ,MPU)是指可以对一个选定的内存单元进行保护。
对存储器和寄存器进行调试访问。
具有SWD或JTAG调试访问接口,或两种都包括。
Flash修补和断点单元用于实现硬件断点和代码修补。
数据观察点和触发单元用于实现观察点、触发资源和系统分析。
指令跟踪宏单元用于提供对printf()类型调试的支持。
跟踪端口接口单元用来连接跟踪端口分析仪,包括单线输出模式。
ARM Cortex-M4F处理器提供先进的高性能总线(AHB-Lite)接口,包括的4个接口分别为: ICode存储器接口,DCode存储器接口和系统接口,还有基于高性能外设总线(ASB)的外部专用外设总线(PPB)
位段的操作可以细化到原子位段的读写操作。
对内存的访问是对齐的。
写数据时采用写缓冲区的方式。
处理器可以处理单精度32位指令数据。
结合了乘法和累积指令用来提高计算的精度。
硬件能够进行加减法、乘除法以及平方根等运算操作,同时也支持所有的IEEE数据四舍五入模式。
拥有32个专用32位单精度寄存器,也可作为16个双字寄存器寻址。
通过采用解耦三级流水线来加快处理器运行速度。
存储器映像是指:把这4GB空间当做存储器来看待,分成若干区间,都可安排实际的物理资源。
该处理器直接寻址空间为4GB,2^32=4GB,分为8个空间
地址范围是:Ox0000_o000~OxFFFF_FFFF。
ARM定出的条条框框是粗线条的,它依然允许芯片制造商灵活地分配存储器空间,以制造出各具特色的MCU产品。
CM4F的存储器系统支持小端配置和大端配置。—般具体某款芯片在出广时已经被厂广商定义过,例如MSP432采用小端格式。
学习一个CPU,理解其内部寄存器用途是重要一环。
CM4F处理器的寄存器包含:
ARMCortex-M4F处理器的寄存器——数据处理与控制寄存器
ARMCortex-M4F处理器的寄存器——特殊功能寄存器
ARM Cortex-M4F处理器的寄存器——浮点寄存器
指令简表
寻址方式
举例说明:
;立即数寻址
SUB R1,R0,#1 ;R1<一R0-1
MOV R0,#0xff ;立即数0xff装入R0寄存器
;寄存器寻址
MOV R1,R2 ;<一R2
SUB R0,R1,R2 ;0<一R1-R2
;直接寻址
LDR Rt,label ;号label处连续取4字节至寄存器中
LDRH Rt,label ;址label处读取半字到Rt
LDRB Rt,label ;址label处读取字节到Rt
;偏移寻址及寄存器间接寻址
LDR R3,[PC,#100] ;为(PC + 100)的存储器单元的内容加载到寄存器R3中
LDR R3,[R4] ;为R4的存储单元的内容加载到寄存器中
存储器中内容加载(load)到寄存器中的指令(取数指令)
寄存器中内容存储(store)至存储器中的指令(存数指令)
堆栈(stack)操作指令
PUSH {RO,R4-R7} ;将RO,R4~R7寄存器值入栈
PUSH{R2,LR} ;将R2,LR寄存器值入栈
POP{RO,R6,PC} ;出栈值到RO,R6,PC中,同时跳转至PC所指向的地址
MOV指令:Rd表示目标寄存器;imm为立即数,范围0x00~0xff
算术运算类指令限制条件
AND、EOR和ORR指令把寄存器Rn、Rm值逐位与、异或和或操作;BIC指令是将寄存器Rn的值与Rm的值的反码按位作逻辑“与”操作,结果保存到Rd。
ASR、LSL、LSR和ROR指令,将寄存器Rm值由寄存器Rs或立即数imm决定移动位数,执行算术右移、逻辑左移、逻辑右移和循环右移。
该指令用于改变数据的字节顺序。Rn为源寄存器,Rd为目标寄存器,且必须为R0~R7之—。
;跳转控制指令举例
BEQ label ;条件转移,标志位Z=1时转移到label
BL funC ;调用子程序funC,把转移前的下条指令地址保存到LR
BX LR ;返回到函数调用处
汇编语言的基本语法——操作数注意点
汇编语言的基本语法——操作数:伪运算符
用于程序中插入不同类型常量的常用伪指令:
插入字和字符串常量代码:
.include "filename"
.section .isr vector, "a" @定义一个.isr vector段,"a"表示允许段
.global symbol @定义一个全局符号symbol
.extern main @声明main为外部函数
bl main @进入main函数
.align 3@把当前位置计数器值增加到23的倍数上,若已是23的倍数,不做改变
第一步生成.Ist文件
需要在集成环境里对工程进行设置,让它能够生成.lst文件,在本书里集成环境为ccs。也可对于汇编和C/C++工程编译生成.lst文件。
第二步记录,找规律
将指令按照正确的格式给变量赋值,写入main函数中编译,编译结束后查看main.o.lst文件,找到指令对应的十六进制机器码,进行记录
第三步确定机器码
每个变量注意取不同的值,多次进行编译记录,然后找出规律,确定每个变量变化所改变的机器码的部分。至此就可以完全确定这个指令所对应的机器码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。