历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2020年02月12日 | ARM开发总结的小知识 Code,RO-data,RW-data,ZI-

2020-02-12 来源:eefocus

ARM开发总结的小知识 
字节 8位
半字 16位
字   32位

Code, RO-data
RW-data,ZI-data

Code为程序代码部分
RO-data 表示 程序定义的常量 const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量

Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952  

Code, RO-data,RW-data ..............flash
RW-data, ZIdata...................RAM

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

生成的map文件位于list文件夹下 (KEIL)

    Total RO  Size (Code + RO Data)                18568 (  18.13kB)
    Total RW  Size (RW Data + ZI Data)              4212 (   4.11kB)
    Total ROM Size (Code + RO Data + RW Data)      18828 (  18.39kB)

ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)

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

在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址.若使用后缀“!”,则结果写回到Rn中,且Rn值不允许为R15.指令举例如下:
LDR   Rd, [Rn, #Ox4]!

LDMFD  SP!,{R0-R3,PC}^ ;中断返回
“^”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复

大端格式(Big-endian)
小端格式(Little-endian)

数据0x12345678存储格式
      大端格式
低地址<----0x12|0x34|0x56|0x78---->高地址
      小端格式
低地址<----0x78|0x56|0x34|0x12---->高地址

ARM微处理器支持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])

例如:MSR cpsr_c, #0xD3 ;  CPSR[7...0] = 0xD3

推荐阅读

史海拾趣

Cooper Industries公司的发展小趣事

随着市场需求的不断变化,Cooper Industries不断通过收购来扩大其业务范围和提升技术实力。例如,在2008年,公司宣布收购了三家公司:Sure Power Industries、OMNEX Control Systems和Roam Secure。这三家公司在各自的领域都有着丰富的经验和卓越的技术,收购后极大地增强了Cooper在电力系统管理、无线电远程控制以及文字报警、区域警示系统等领域的能力。这些收购不仅使公司的产品线更加丰富,也为其在全球市场的竞争提供了有力武器。

Chip Technologies Inc公司的发展小趣事

随着电子行业的竞争加剧,Chip Technologies Inc面临着来自各方面的挑战。为了应对这些挑战,公司及时调整了发展策略,加大了在研发和市场拓展方面的投入。同时,公司还加强了内部管理,提升了生产效率和质量水平。这些举措使得公司在激烈的市场竞争中保持了稳健的发展态势。

Bellin Dynamic Systems公司的发展小趣事

在面临激烈的市场竞争时,Bellin Dynamic Systems选择与行业内的其他领军企业展开战略合作。通过与这些企业的合作,Bellin Dynamic Systems不仅获得了更多的技术资源和市场渠道,还共同推动了整个行业的发展。这种合作共赢的模式使得Bellin Dynamic Systems在竞争中保持了领先地位。

明微公司的发展小趣事

随着市场的不断变化,明微公司意识到单一业务领域的发展空间有限。于是,公司决定拓展业务领域,实现多元化发展。在保持数字电视芯片领域优势的同时,明微公司积极进军数据通信、汽车电子等领域,通过引进优秀人才、加强技术研发,成功推出了一系列具有市场竞争力的新产品。这些新业务的拓展不仅为公司带来了新的增长点,也进一步提升了公司的市场竞争力。

Equator Technologies公司的发展小趣事

Equator Technologies公司成立于XX年代初,当时正值数字视频技术飞速发展的时代。公司凭借其在视频DSP(数字信号处理器)领域的独特见解和技术实力,迅速崭露头角。起初,Equator主要聚焦于提供高性能的视频处理解决方案,用于改善电视和其他显示设备的画质。通过不断的技术创新和产品迭代,Equator逐渐在市场中建立了良好的口碑。

品赞(G-Switch)公司的发展小趣事
电路结构相对简单,易于实现和维护。

问答坊 | AI 解惑

介绍RFID技术前沿的一篇文章 很经典

介绍RFID技术前沿的一篇文章 很经典 …

查看全部问答>

双激式开关电源变压器存在的风险 开关电源原理与设计(连载56)

2-1-1-7.双激式开关电源变压器存在的风险 上面我们对双激式开关电源变压器工作原理进行分析,都是考虑双激式开关电源变压器完全工作于理想的情况下而得出的结果。因此,图2-6、图2-7和(2-17)、(2-18)式的分析结果都是在理想的工作条件下进行 ...…

查看全部问答>

大竞争时代 2012年液晶面板将出现供给过剩

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 在中国,京东方科技集团(BOE Technology Group)及华星光电技术(Shenzhen China Star Optoelectronics Technology)等本土企业将从2011年下半年开始利用第7.5代(底板尺寸为1950mm×2250mm) ...…

查看全部问答>

VirtualAlloc,分配的空间大小可以超过32MB吗?

我的开发板有128M的内存。 OS分配32MB RAM分配32MB 显存分配64MB 这样可以吗? 显存的空间需要用VirtualAlloc来做,我的bsp里是这么做的,但是它限制大小为小于32M。…

查看全部问答>

STM32CAN中断的问题

stm32f10x_i。.c里的/******************************************************************************** Function Name  : CAN_SCE_IRQHandler* Description    : This funct ...…

查看全部问答>

求助:F2810 GPIO输入问题

F2810 的引脚CAP1_QEP1、CAP2_QEP2、CAP3_QEPI1作为GPIO信号输入端,我设置了:     GpioMuxRegs.GPAMUX.all = 0x00;       GpioMuxRegs.GPADIR.all = 0xFF00;       GpioMuxRegs.GPAQUAL.al ...…

查看全部问答>

TPS61040升压时-9.1V稳压管发烫严重

各位硬件大神,出来帮我看哈呢。 -7V这路9.1V的稳压管一接上就发烫,且越来越烫。是什么原因呢,当不接稳压管和其相连的电容的时候,输出大约-20V的样子。另一路16V和10.4V输出正常。TPS61040的电感用的是工字型的100uh带屏蔽的功率电感。求分析一 ...…

查看全部问答>

关于SD24的中断

我用的msp430afe253的芯片,之前在调SD24中断时,需要运行时暂停一下才能进中断,当时设置的时钟源为SMCLK。后来无意中将时钟源设置在MCLK,中断完全正常。然后我又将SMCLK和MCLK的时钟都是用DCO,依然SMCLK不正常,MCLK正常。然后我就搞不清楚原因 ...…

查看全部问答>