zoukankan      html  css  js  c++  java
  • keil使用日记(一)

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

                   

  • 相关阅读:
    然乌湖
    邦达 八宿
    芒康
    巴塘
    禾尼乡 所波大叔
    世界高城 理塘
    相克宗 藏民家
    骑行川藏--新都桥&塔公草原
    d 3
    D2
  • 原文地址:https://www.cnblogs.com/amywu2015/p/4985536.html
Copyright © 2011-2022 走看看