首页 > 其他 > 详细

keil使用日记(一)

时间:2015-11-22 12:33:23      阅读:329      评论:0      收藏:0      [点我收藏+]

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])

               

 

keil使用日记(一)

原文:http://www.cnblogs.com/amywu2015/p/4985536.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!