历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2021年11月26日 | ARM基础学习-寄存器

2021-11-26 来源:eefocus

大学的时候学习过一段时间汇编,现在出来工作发现还需要捡起这些东西重新去学习,接下这一段时间先集中整理ARM的基础知识,然后扩展到ARMv8学习64位框架,然后学习MMU,学习它的中断处理方式;这篇文章以基础为主学习ARM寄存器;


寄存器分类


ARM也可以理解成一个芯片,它也有自己的寄存器,实现与memory之间的数据传递; ARM处理器共有37个寄存器,其中包括:


i. 31个通用寄存器,包括程序计数器(PC)在内。都是32位寄存器

ii. 6个状态寄存器,都是32位寄存器;


下面位arm 的6中模式所对应的寄存器:

这里写图片描述

ARM处理器有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。在所有的寄存器中,有些是各模式共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。


简单介绍下ARM处理器模式:

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

快速中断模式(FIQ): 用于高速数据传输或通道处理;

外部中断模式(IRQ): 用于通用的中断处理;

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

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

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

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


通用寄存器可以分为3类:未备份寄存器(R0~R7)、备份寄存器(R8~R14)和程序计数器PC(R15)。对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一个物理寄存器。应备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器(中断模式和非中断模式);


特殊寄存器


下面依次介绍几个特殊寄存器:


PC(程序计数器) R15 = windows 中 EIP

处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址.程序计数器(PC)正是起到这种作用,所以通常又称之为‘指令计数器’;


因为ARM采用流水线机制,当正确读取PC值得时候,该值为当前指令地址加八个字节,也就是指向当前指令下两个条指令的地址;PC的第0位和第1为始终为0;


backtrace:

    #00 pc 00000988  /system/vendor/lib/libcancer.so (_ZN7android6Cancer15destroyInstanceEv+39)

    //#00 pc表示异常发生时的PC值在库函数里的偏移;

    #01 pc 0001db9d  /system/vendor/lib/libcam.client.so (_ZN7android15NSDisplayClient13DisplayClient4initEv+60)

    //#01 pc表示在DisplayClient4initEv函数调用下一个函数接口在库函数里里的偏移;

    #02 pc 0000d145  /system/vendor/lib/libcam.device1.so (_ZN7android14Cam1DeviceBase17initDisplayClientEP18preview_stream_ops+684)


2.栈指针寄存器 SP (寄存器 R13)


ARM处理器中通常将寄存器R13作为栈指针(SP)。ARM处理器针对不同的模式,共有 6 个栈指针(SP),其中用户模式和系统模式共用一个SP,每种异常模式都有各自专用的R13寄存器(SP)。它们通常指向各模式所对应的专用栈,也就是ARM处理器允许用户程序有六个不同的栈空间,ARM处理器中的R13被用作SP。当不使用堆栈时,R13 也可以用做通用数据寄存器.

这里写图片描述

3.R14称为子程序链接寄存器LR(Link Register)


当执行子程序调用指令(BL)时,R14可得到R15(程序计数器PC)的备份.在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值复制给R14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。以上的描述可用指令完成。


i. 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。


ii. 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方式与子程序返回方式基本相同。


00000764 :

     764:   b082        sub sp, #8

     766:   2002        movs    r0, #2

     768:   9001        str r0, [sp, #4]

     76a:   b002        add sp, #8

     76c:   4770        bx  lr //返回地址


4.PSR 寄存器(状态寄存器)


CPSR(当前程序状态寄存器)它包含了条件标志位,中断禁止位,当前处理器模式标志以及一些控制和状态位,SPSR 备份程序状态寄存器,当特定的异常中断模式发生时。这个寄存器存放当前程序状态寄存器的内容,异常中断程序退出时候,可以用SPSR来恢复CPSR,由于用户模式和系统模式不是异常中断模式,所以没有SPSR;

这里写图片描述

高4位(28-31):条件标志位(Condition code flags): N,Z,C,V. 这些位可以通过逻辑或者算术操作, 或者 MSR 和 LDM 指令来操作. 处理器会测试这些标志位,以确定是否操作一些指令.


-   N: 负数 ? 1 : 0

-   Z: 运算结果为0 ? 1 : 0

-   C: 进位标志.(4中情况)

    1. 加法指令(包括CMN): 当结果产生了进位,则为1,表示无符号数运算发生溢出;

    2. 减法指令(包括CMP): 当运算中发生了错位,为1, 表示运算发生下溢出;

    3. 对已在操作数中包含移位操作的运算指令,C被置为被移位寄存器最后移出去的位;

    4. 对于其他非加/减的运算指令,c一般不收影响;

-   V: 溢出标志位: 对于加减法,当操作数和运算结果都是以二进制的补码表示的带符号的数,切运算结果超出了有符号运算的范围溢出,V=1.


低8位(0-7):当发生异常时, 这些为的值将发生相应的变化.在特权模式下,也可以通过软件来修改这些位.用的比较多.


 1.  *中断禁止位* (I=1, IRQ禁止;       F=1, FIQ禁止).

 2.  *状态控制位* (T=0, 处于ARM状态,即可执行32的ARM指令, 否则处于Thumb状态).

 3.  *模式控制位* ( M[4:0],这5位组合控制处理器处于什么工作模式)

这里写图片描述

参考书籍


ARM体系结构编程 - 杜春雷

推荐阅读

史海拾趣

Hayashi Denko Co Ltd公司的发展小趣事

HARTING公司自1945年成立以来,在电子行业里经历了多个重要的发展阶段,以下是五个与HARTING公司发展相关的事实性故事:

1. 创立与初期发展

创立背景:1945年,Wilhelm和Marie Harting在德国创立了HARTING公司,起初以生产日常所需的设备为主,如节能灯泡、电炉等。随着德国工业的发展,他们逐渐意识到新兴行业对技术产品的需求,于是将公司转向开发和生产电气连接器及连接系统。这一转变标志着HARTING正式进入电子行业,并为其后续发展奠定了基础。

初期产品:早期,HARTING开发的Han®连接器在市场上取得了巨大成功,该连接器以其坚固耐用、易于操作的特点,迅速成为行业内的标准产品,为HARTING在电子行业树立了良好的口碑。

2. 技术创新与全球化拓展

技术创新:HARTING始终致力于技术创新,不断推出新产品以满足市场需求。例如,他们研发的矩形连接器在1965年问世后,迅速替代了传统的圆形军用规格连接器,成为工业连接的新标准。此外,HARTING还在数据通信、网络技术、芯片卡、多媒体技术等领域取得了显著成就。

全球化拓展:随着业务的不断发展,HARTING开始在全球范围内设立子公司和生产工厂。目前,HARTING已在40多个国家设立了附属公司,生产工厂遍布德国、英国、瑞士、美国、罗马尼亚及中国等7个国家。这种全球化布局不仅提升了HARTING的市场占有率,还使其能够更好地服务全球客户。

3. 进入中国市场

中国市场布局:1988年,HARTING正式进入中国市场,并在珠海投资兴建了生产基地。这一举措标志着HARTING对中国市场的重视和承诺。随着在中国市场的不断深耕,HARTING已在中国设立了多个销售和服务中心,覆盖了包括香港、珠海、深圳、广州在内的多个城市。

本地化生产与服务:为了更好地服务中国客户,HARTING在中国实现了本地化生产和服务。他们不仅提供高质量的产品,还为客户提供设计咨询、系统集成、定制化解决方案等一系列专业服务。这些举措使HARTING在中国市场赢得了广泛认可。

4. 工业4.0与数字化转型

工业4.0引领者:面对工业4.0和数字化转型的浪潮,HARTING积极投入研发和创新,推出了多款面向未来的产品和技术。例如,HARTING MICA®是一款将工业4.0功能引入现有机器和设备的工业边缘网关,它能够帮助企业实现生产过程的智能化和自动化。

数字化转型服务:除了产品创新外,HARTING还为客户提供数字化转型的解决方案和服务。他们利用自身在连接技术领域的优势,帮助企业构建高效、可靠的数字化生产体系,提升生产效率和产品质量。

5. 定制化解决方案与行业应用

定制化解决方案:HARTING深知不同行业对连接技术的不同需求,因此他们始终致力于为客户提供定制化的解决方案。无论是电力、通信、自动化还是航空、汽车等行业,HARTING都能根据客户的具体需求,提供最适合的连接技术和产品。

行业应用案例:在多个行业领域,HARTING的产品和技术都得到了广泛应用。例如,在汽车行业,HARTING的3D-MID技术帮助客户将复杂的电子设备集成到汽车中,提高了汽车的安全性和舒适性;在轨道交通行业,HARTING的连接器产品被广泛应用于信号传输和电源分配等领域,确保了轨道交通的安全运行。

通过以上五个故事,我们可以看出HARTING公司在电子行业里的发展历程和成就。从创立初期的艰难探索到如今的全球化布局和技术创新,HARTING始终保持着对技术的热爱和追求,为客户提供高质量的产品和服务。

AZM [Arizona Microtek, Inc]公司的发展小趣事

为了进一步提升公司的国际竞争力,AZM公司开始实施国际化战略。公司积极寻求与国际知名企业的合作机会,通过技术合作、市场合作等方式,共同开拓全球市场。同时,AZM公司还在海外设立了研发中心和生产基地,以便更好地了解当地市场需求和技术发展趋势,实现全球布局和资源整合。

请注意,这些故事是基于假设和推测构建的,并非AZM公司的真实发展历程。如果需要了解AZM公司的具体发展历程和故事,建议查阅该公司的官方网站、新闻报道或相关文献资料。

安普康(AMPCOM)公司的发展小趣事

在电子行业竞争日益激烈的背景下,安普康深知创新是企业发展的核心动力。因此,公司始终将研发投入作为重要战略之一。通过引进先进的生产设备和技术,安普康不断提升产品的品质和性能。同时,公司还积极与国内外知名企业和研究机构合作,共同开展技术研发和创新。这些努力使得安普康在光纤产品、布线产品等领域取得了多项专利,并成功推出了一系列具有市场竞争力的新产品。

科达嘉CODACA公司的发展小趣事

在追求技术创新的同时,科达嘉电子也积极承担社会责任。公司关注环境保护,推行绿色生产,努力减少生产过程中的环境污染。此外,科达嘉还积极参与社会公益活动,为社区的发展贡献力量。通过不断创新和履行社会责任,科达嘉电子在电子行业中树立了良好的企业形象。

Cypress(赛普拉斯)公司的发展小趣事

在发展历程中,Cypress经历了多次并购和业务整合。这些并购不仅扩大了公司的规模和业务范围,也带来了更多的技术和人才资源。通过并购和整合,Cypress能够更好地满足客户的需求,提供更加全面的解决方案。同时,公司还加强了内部管理和资源整合,提高了整体运营效率。

申风(everanalog)公司的发展小趣事

申风(everanalog)公司于2013年在上海成立,由一群充满激情和梦想的电子工程师组成。创始人施嘉铭凭借其深厚的行业经验和前瞻性的视野,带领团队开始了集成电路设计的探索之旅。在初创阶段,公司面临着资金紧张、人才短缺等挑战,但团队凭借着坚定的信念和不懈的努力,逐渐在市场上站稳了脚跟。

问答坊 | AI 解惑

专业人员教授如何测试MP3音质

前言 随着市场的发展,现在的MP3播放器品种越来越多,价钱也越来越实惠。也越来越多的MP3进入了用户的口袋。可以说是MP3随身听丰富了个人的世界,能随时随地随心所欲地欣赏美妙音乐。作为随身听,MP3的最终目的是还原真实的音乐。作为音响爱好者, ...…

查看全部问答>

谁有做过简易电压表的

本帖最后由 paulhyde 于 2014-9-15 04:03 编辑 最近我在做简易电压表,有没有哪位大虾做过的,给我提供点资料,谢啦。。  …

查看全部问答>

低频数字式相位测量仪

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 低频数字式相位测量仪  …

查看全部问答>

1602LCD液晶显示器地址问题

我在用1602LCD液晶时,它要求在30H-33H输出一组数据,34H-35H输出一组数据,这个地址是怎么回事?这个地址是连续的可输出的时候中间还有一段字符是怎么输出 的。请教高手,谢谢…

查看全部问答>

wince的系统时钟问题

各位大虾,小弟这几天调试ARM板,发现一个问题,本来开机后系统运行的很流畅,过一会后发现系统时间变成0:00了,于是小弟打开了时间设置界面进行时间设置,发现系统变得极卡无比,关机开机后也运行的很卡,不知道有没有人遇见这种问题,请各位大虾 ...…

查看全部问答>

【lbing7】 您好,麻烦您能给推荐几本PIC单片机方面的经典书籍吗?希望能够以实践为主来讲的电子书籍,最后把下载地址也告诉我下,谢谢

您好,麻烦您能给推荐几本PIC单片机方面的经典电子书籍吗?希望能够以实践为主来讲的电子书籍,最好把下载地址也告诉我下,谢谢…

查看全部问答>

windows xp 与 windows ce 嵌入式系统的usb通信

现有一个条形码识别掌机, 掌机系统为 windows ce.net 6.0, 有usb接口。 将掌机usb接口直接与windows vista电脑相接,不需要任何操作就可以实现通信。 但将掌机与windows xp相接,用了很多方法都不行,比如安装一个activesync 4.5,在连接 ...…

查看全部问答>

USB接口主,从控制器有什么不同?

可用于主控制的接口有CH375,SL811,还有吗?用于从控制的就多了,如PDIUSBD12,还有MCU内置,如C8051F340就内置USB控制器. 这写USB从控制器能用作主控制器吗?谢谢!…

查看全部问答>

LM3S811 uart0

上一贴:跟着套件光盘入门LM3S811 https://bbs.eeworld.com.cn/thread-290441-1-1.html   刚拿到手一看,以为白色那块是LCD来的,细看一眼,原来就是一块塑料板导光板而已。之前看到带OLED Display的LM3S811,原来是另有其板。后来看了光盘 ...…

查看全部问答>

DSP2812的I/O口异常,导致复位功能异常的分析,请大家帮忙?

本人最近遇到一个问题,DSP2812在环境温度较高时复位功能异常的问题。 具体情况是: 1)70°环境温度下,DSP2812工作10分钟之后,人工将DSP2812的复位XRS引脚强制拉低,随后恢复XRS引脚至高电平状态,则DSP2812死机。 即在高温情况下,DSP2812的复 ...…

查看全部问答>