您的位置:首页 > 其它

keil使用日记(一)

2015-11-22 11:55 344 查看
kile文件编译以后生成

CODE 程序代码部分

RO-data 程序中定义的常量 const

RW-data 已初始化的全局/静态变量

ZI-data 未初始化的全局/静态变量

ROM(flash) size = code + ro-data + rw-data

RAM size = RW-data + ZI-data

code编译后,MDK将程序中赋初值的全局/静态变量放到Flash中,紧靠在可执行code之后

程序进入main之前,会运行一段库代码,将这部分数据拷贝到相应RAM位置

初始化时候,RW-data从flash拷贝到RAM

生成map文件

total RO SIZE = CODE + RO DATA

total RW SIZE = RW DATA +ZI DATA

total ROM SIZE = CODE + RO DATA + RW DATA

ARM指令长度为1个字(4B) Thumb指令长度半字(2B )

R0-R15 (R15-PC R14-LR R13-SP ) 32位

每个异常模式带有一个程序状态保存寄存器 SPSR 用于堡村子啊异常事件发生之前的CPSR

LDMIA R1!,{R2-R7,R12}   将R1单元中的数据读出到R2-R7 R12 , R1 自动加1

STMIA RO! ,{R3-R6,R10} 将R3-R6,R10的数据保存到RO指向的地址 RO自动加1

^这条指令从存储器中装载PC的同时,CPSR也得到回复

0x12345678

大端 低地址 12 34 56 78 高地址

小端 低地址 78 56 34 12 高地址

7种运行模式 CPSR M[4:0]

用户模式(usr):ARM处理器正常的程序执行状态 10000

快速中断(fiq): 用于高速数据传输或通道处理 10001

外部中断(irq): 用于通用的中断处理 10010

管理模式(svc):操作系统使用的保护模式 10011

数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储和存储保护 10111

系统模式(sys): 运行具有特权的操作系统任务 11111

定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。 11011

ARM正常工作一般在用户模式和系统模式,复位时进入管理模式

对于ARM指令集来说 PC指向当前指令的下两条指令的地址

注意PC,在调试的时候显示的当前指令地址,而用MOV LR,PC 的时候,lr保存的此指令向后数两条指令的地址

假设反汇编代码: 0x000001 :mov lr pc

pc寄存器的值 0x000001 实际上PC值0x000003,lr里面保存的是0x000003

fields指定传送的区域(psr CPSR 或 SPSR)

c 控制域屏蔽字节(psr[7..0])

x 控制域屏蔽字节(psr[15..8])

s 控制域屏蔽字节(psr[23..16])

f 控制域屏蔽字节(psr[31..24])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: