ARM的基础知识

这篇具有很好参考价值的文章主要介绍了ARM的基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ARM是什么?

        arm即可以是一家芯片设计厂商的名字,也可以代表一类微处理器的通称,还可以表示为一种技术的名称

1、ARM是一个公司:Advanced RISC Machine
2、ARM内核

ARM公司

     1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州SanJoseVLSI技术公司制造。20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。990年成立了Advanced RISC Machines Limited(后来简称为ARM Limited,ARM公司)。20世纪90年代,ARM 32位嵌入式RISC(Reduced lnstruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。

ARM内核   

        对于任何一款ARM芯片,有两个部分,一个是ARM内核,一个是外设ARM内核:包含:寄存器组、指令集、总线、存储映射规则、中断规则和调试组件等。
        外设:定时器、iic、uart等cpu直接的外部模块,由芯片厂商自己设计与ARM内核衔接
        ARM体系/ARM架构:由ARM公司设计的ARM内核的结构,内核中的部件如何协调工作,执行程序。即arm内核的设计方式就叫做架构。

ARM由ARM指令集架构、ARM工作模式、ARM寄存器等构成

ARM指令集架构

        指令集是arm体系结构(处理器结构设计)中最重要的一部分,对于32位处理器cpu,cpu获取到32位的内容,这32位的01代表什么作用,有什么意义,即32位不同的01序列,不同的值代表不同的机器指令(机器要执行什么),如果再arm体系架构中有指令集,在cpu内部知道每串01代表什么,cpu硬件能够完美解析并执行指令,如寻址、异常处理。

指令(机器指令):用二进制表示一串机器码,机器码表示一个特定的动作
arm指令:有arm公司针对armcpu(arm体系架构)设计的指令
指令集:指令的集合

RISC:精简指令集,ARM架构使用精简指令集

CISC:复杂指令集      

ARM指令--:根据ARM汇编了解

架构    处理器

        ARMV1:ARM1
        ARMV2:ARM2、ARM3
        ARMV3:ARM6、ARM600、ARM610、ARM7、ARM700、ARM710
        ARMV4:StrongARM、ARM8、ARM810、ARM9
        ARMV5:ARM9E、ARM10E
        ARMV6:ARM11

        从ARMV7架构开始,以Cortex命名,分为三个系列:A、R、M
        Cortex-A        高端系列
        Cortex-R        实时系列
        Cortex-M        控制系列
        Cortex-SC      安全系列
        ARMV7:Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9
        ARMV8:Cortex-A53、Cortex-A73、Cortex-A78----ARMV8.2

ARM架构工作模式

在ARMV7之前,AARM的工作模式只有七种:

用户模式(user):用户程序的工作模式,运行在操作系统的用户态,不能操作其他硬件资源,只能执行处理自己的数据,也不能切换到其他模式,要切换到其他模式,只能产生中断或其他异常

系统模式(system):系统模式是特权模式,不受用户模式的限制。使用同一套寄存器。操作系统通过该模式使用户访问受限的资源

一般中断模式(IRQ): 用于处理一般的中断请求。一般在硬件产生中断信号后会自动进入该模式,是一种特权模式,可以自由访问系统硬件资源
快速中断模式(FIQ):用于处理时间要求比较紧急的中断请求。一般在高速数据传输及通道种
管理模式(spuer visor):一般CPU上电之后会自动进入该模式,该模式主要完成系统的初始化,软中断也会进入该模式。如果在用户模式下可以通过软中断进入该模式,请求访问硬件资源

未定义模式(undefined):未定义指令中止。CPU在指令的译码阶段不能识别该指令操作时,则会进入该模式

终止模式非法访问(abort):当用户非法访问内存,没有权限读写内存地址时,会进入该模式

在Cortex系列之后,有了第8种工作模式

安全模式(monitor):为了安全而扩展出来的用于执行安全监控代码的模式

只要产生对应的异常就可以切换到对应的模式种

ARM的基础知识

 ARM寄存器

        寄存器:是一种特殊的存储器,在CPU内部,可以用来存储数据,但是存储的内容有一定作用,对于Cortex A 有40个寄存器,每个寄存器有32bit。对于寄存器是没有地址的,用编号表示。

对CPU内部的存储单元存在单位:

        word:字----32bit        halfword:半字---16bit        Byte:字节-----8bit

1、通用寄存器(如下图)

通用存储寄存器: R0-R12:存储各种数据
分组寄存器:R13、R14 还是FIQ:R8-R12        针对于FIQ
程序计数器(指令计数器/程序状态寄存器):R15(PC)

 特殊功能的寄存器:

R13(堆栈指针寄存器SP):存储栈的栈顶位置地址,与内存相关
R14(链接寄存器LR):当程序跳转、函数调用、产生异常
R15(程序计数器PC):当前执行的指令的下一条指令的地址

存储程序下一条要执行的指令地址,会自动由硬件修改,也可以由我们操作改变

ARM指令:大小为4个字节,所以指令偏移大小为4,指令地址也是4的整数倍,所以程序计数器最低2位无效(低2位表示的地址是0-3)
Thumb指令:大小为2个字节,所以程序计数器最低位无效

ARM的基础知识

2、程序状态寄存器CPSR、SPSR

CPSR:程序状态寄存器,存储当前cpu执行程序时的工作状态,cpu在工作时只会有一个工作状态,所以所有的工作模式都是同一个CPSR所有的运行工作模式都可以访问到CPSR

SPSR:备份程序状态寄存器,当产生异常,切换对应的工作模式,SPSR用于保存当前的CPSR的值,然后改变CPSR(修改工作状态),异常结束时,回到之前的工作模式,就把SPSR的值恢复到CPSR。

ARM的基础知识

看一个ARM处理能力怎么样,还关于它的指令流水线。

流水线:让CPU内部的多个功能部件并行工作来缩短程序的执行时间,提高处理器的效率,所以处理器架构设计时作为最重要的技术进行使用。

ARM的基础知识

三级流水线:    1、取址    2、译码    3、执行

·        随着ARM架构的升级,流水线也在增加,但是ARM公司没有提供对应的技术,但是不管是几级流水线都可以按照三级流水线的操作方式来思考

    pc寄存器存储预取址指令的地址,即pc存储取指的地址

    对于流水线而言,当执行某些指令(跳转、中断、异常)打断当前流水线

ARM的基础知识

异常        就是在cpu执行程序(指令),有可能会出现意外情况,需要去解决对应的意外情况。

1、异常源
        在ARM体系结构中设计了7种异常源,ARM架构就需要对这些异常源进行处理,只要执行程序指令时产生对应的异常就会执行对应的异常处理。
        只要发生对应的异常时,处理器就会把PC寄存器设置为特定的存储器地址。这个地址被放在称为向量表的范围内,向量表内就是一些跳转操作。即CPU设计了一个向量表来表示每一种异常的处理方式,只要产生异常,pc寄存器就会被设置为向量表中的对应异常的地址,执行异常向量表中的对应指令(跳转执行,执行对应的处理办法)
异常源:

Reset                上电就执行
undef                当流水线中某个非法指令被执行(undefined)
swi                    当程序执行软中断指令时(supervisor svc)
prefetch            当指令从内存进行存取指令失败时(abort)
data                  当指令从内存存取数据失败时(abort)
irq                     一般中断
fiq                     快速中断

2、异常产生时发生的硬件操作

1、保存执行状态
        把cpsr寄存器的内容复制到对应产生异常的模式下的spsr

2、模式切换
        a、由硬件自动把cpsr中的模式[4:0]设置为与异常相对应的值
        b、处理器设置为ARM状态,执行ARM指令
        c、禁止中断,如进入FIQ模式自动把IRQ中断禁止

3、保存返回地址
        把当前的下一条指令的地址(PC寄存器)保存到 lr_mode 寄存器(异常模式下)

4、跳入异常向量表
        强制设置pc寄存器为对应异常向量地址

3、异常向量表

        异常向量表是一段特定的内存空间,每一种ARM异常都在异常向量中设定出来,对应一个字长空间(4Byte-32bit),刚好就是一条ARM指令大小。当产生异常时,cpu会强制把pc的值设置为异常对应的固定内存地址.

ARM的基础知识

注意:
        当产生异常后硬件能够完成的操作就只是跳转到异常向量表(pc赋值为异常向量地址),剩下的异常处理都是程序员去完成,通常都是在异常向量中写一条跳转指令,表示产生异常应该怎么做,跳转到对应的地址(异常处理的地址)执行,要实现异常向量表,完成每种异常的设定.

4、异常处理(自己实现)

1、保存执行现场(进入异常之前的寄存器的值)    
        把寄存器的值保存到对应异常模式下的栈(内存)(入栈),sp寄存器存栈地址

2、执行对应的异常操作

3、恢复之前现场
        当异常处理完,要返回异常之前的状态,继续执行
        a、恢复之前的寄存器数据(从sp对应的栈出栈存储到对应寄存器)
        b、恢复程序运行是的状态cpsr
        c、通过异常进入时保存的返回地址(lr寄存器),可以返回到被打断的程序继续执行文章来源地址https://www.toymoban.com/news/detail-433066.html

到了这里,关于ARM的基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM的基础知识

    ARM是什么?         arm即可以是一家芯片设计厂商的名字,也可以代表一类微处理器的通称,还可以表示为一种技术的名称 1、ARM是一个公司:Advanced RISC Machine 2、ARM内核 ARM公司      1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州SanJos

    2024年02月02日
    浏览(18)
  • ARM 汇编基础知识

            我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一 上电 SP 指针还没初始化, C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR 、设置 SP 指针等等,当汇编把 C 环境设置好了以后才可

    2024年02月09日
    浏览(30)
  • 自媒体运营入门基础知识,掌握这4步,你也可以拥有百万粉丝

    第一步:申请账号 确定好要做哪一个自媒体平台后,你就需要到相应的平台进行账号的注册申请,在此给大家一个意见,千万不要每个平台都注册,建议注册一到两个平台,集中注意力,毕竟大家精力有限。 大家在申请账号的时候,就需要填写自己在平台里面的用户名和一

    2024年02月04日
    浏览(28)
  • 【基础知识】什么是哈希冲突?

    哈希表(Hash Table)是一种数据结构,它可以快速地在大量数据中查找、插入和删除时数据。哈希表通过使用哈希函数将键(Key)映射到一个位置,然后在该位置存储或查找数据。 哈希函数的作用是,将键转换为一个整数,这个整数通常称为哈希值(Hash Value)。哈希表的范围通

    2024年02月06日
    浏览(28)
  • 什么是网关?网关基础知识介绍

    网关的英文名称:gateway,又叫做网间连接器、协议转换器。网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。 网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的

    2024年02月08日
    浏览(35)
  • URL是什么意思?基础知识普及

    URL(Uniform Resource Locator)统一资源定位器,是计算机Web网络相关的术语,就是网页地址的意思。我们的互联网世界就是由很多的URL组成,也可以说就是已URL来表现的。统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最

    2024年02月04日
    浏览(36)
  • 什么是DNS?DNS基础知识介绍

    DNS是Domain Name System的简写,即域名系统,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 上面的解释很多普通的用户可能无法理解,这里我们来简单的分析一下,让大家知道DNS是用来干什

    2024年02月08日
    浏览(35)
  • 什么是端口映射?端口映射基础知识介绍

    端口映射又叫做端口转发、虚拟服务器,不同的宽带路由器的命名有所不同。内网的一台电脑要上因特网对外开放服务或接收数据,都需要端口映射。 端口映射分为动态和静态。动态端口映射:内网中的一台电脑要访问网站,会向NAT网关发送数据包,包头中包括对方网站IP、

    2024年02月08日
    浏览(37)
  • ARP是什么?ARP基础知识介绍

    ARP是英文Address Resolution Protocol的简称,中文名叫做:地址解析协议,是一个位于TCP/IP协议栈中的底层协议,对应于数据链路层,负责将某个IP地址解析成对应的MAC地址。 ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。从IP地址到物理

    2024年02月08日
    浏览(28)
  • DHCP是什么意思?DHCP基础知识介绍

    前言: 本文主要是为没有IT技术支持的用户服务的,同时结合家用路由器来进行介绍的,主要目的是为了让普通用户在学习本文后,在配置路由器上网的时候对DHCP服务器不在陌生,并知道如何正确的来使用DHCP服务。如果你是IT专业人士,本文的内容并不适合你,请寻找专业的

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包