ARM开发---基础认识

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

本文适合初次接触ARM的的初学者,主要以基础知识点和科普为主.


前言

提起ARM,没有接触过的朋友可能第一反应是英语单词arm(手臂),事实上,ARM确实如同手臂对于人类一般,在我们生活中有着举足轻重的地位,本文会对ARM进行基础知识的讲解及科普,为大家介绍ARM。

学习arm重点学习两方面:程序运行原理、硬件控制原理。


一、ARM是什么?

  1. ARM代表一个公司,即ARM公司( Advanced RISC Machine[高级精简指令集计算机]),而ARM公司不生产芯片,做技术的授权,提供解决方案。 ARM公司授权芯片的公司,芯片产家在内核的基础上,增加了一些外设,发布一款芯片,这些芯片可以统称为SOC(即片上系统
  2. ARM表示一种技术
  3. ARM可以表示一些处理器的统称,ARM处理器是英国Acorn有限公司(ARM前身)设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器本身是32位设计,但也配备16位指令集,一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。

二、ARM的特点

最主要的特点是:耗电少功能强、16位/32位双指令集以及有众多的合作伙伴。
1.体积小、低功耗、低成本、高性能;
2.支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3.大量使用寄存器,指令执行速度更快;
4.大多数数据操作都在寄存器中完成;
5.寻址方式灵活简单,执行效率高;
6.指令长度固定。

三、ARM的使用场景

实际上,ARM已经在日常生活中极度常见。现代生活中人们的通信移不开手机,而关注手机性能的朋友们经常会注意手机的处理器,这些处理器即采用的是ARM。

ARM开发---基础认识
ARM开发---基础认识

  1. Cortex-A:
    高通,联发科,海思,三星,飞思卡尔、面向尖端的基于虚拟内存的操作系统和用户应用。
  2. Cortex-R:
    实时处理器为要求可靠性、容错功能和实时响应的嵌入式系统,提供高性能解决方案。汽车电子,照相机摄像机。
  3. Cortex-M:单片机
    针对成本和功耗敏感的MCU和终端应用,一般不跑操作系统,可以运行实时操作系统:FreeRTOS,uCosII,LiteOS(华为),意法半导体(ST)STM32系列

看到这里又有很多朋友问了,这上面这不都是cortex吗?看着与ARM毫不相干啊?各位看官不要急,且看下面的讲解。

1.计算机组成

讲解之前我们先看一看我们日常使用的计算机,了解下究竟什么是计算机。
输入设备、输出设备、存储器、运算器、控制器共同组成了cpu
1.输入设备:将其他信号转换为计算机可以识别的信号(电信号) 。
2.输出设备:将电信号(0、1)转为人或其他设备能理解的信号。
3.存储器:存放程序和数据的部件,也是计算机能够实现“存储程序控制”的基础。
程序:指令的有序集合 //汇编指令
ROM: flash (EMMC)、磁盘空间 、掉电不丢失数据
RAM: 内存、掉电丢失数据
4.运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALUCPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加法、减法等。
5.控制器:整个计算机的指挥中心

2.架构

架构指支持的汇编指令集,由ARM公司设计的ARM内核的结构,内核中的部件如何协调工作,执行程序。
在较早的时期,ARM推出的架构几乎都是以ARM开头,诸如:
ARM-V1:ARM1
ARM-V2:ARM2、ARM3
ARM-V3:ARM6、ARM600、ARM610、ARM7、ARM700、ARM710
ARM-V4:StrongARM、ARM8、ARM810、ARM9
ARM-V5:ARM9E、ARM10E
ARM-V6:ARM11
从ARM-V7架构(即ARM11)开始,ARM的架构便以Cortex命名,该架构又分为三个系列,分别是:
Cortex-A :高端系列,应用于尖端的精准设备,例如手机等
Cortex-R : 实时系列,实时响应,高性能高可靠容错强,衍生产品中体积最小的ARM处理器
Cortex-M: 控制系列,单片机常用该系列,针对成本和功耗敏感的MCU和终端应用,可操作系统(只可跑小型系统)
Cortex-SC : 安全系列
ARMV7:Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9
ARMV8:Cortex-A53、Cortex-A73、Cortex-A78----ARMV8.2

3.指令集

有80%指令为通用指令,其余20%指令一般可以被通用指令替代
●精简指令集(RISC)–>微处理器
在复杂指令集里边选取了一些比较简单,使用频率较高的指令
指令的宽度固定,多为单周期指令。(ARM固定8位4字节)
举例:如有加法运算器 ,没有乘法运算器 3*3 —》3+3+3
●复杂指令集(CISC)–>电脑CPU
注重的指令的功能性,指令的周期,指令的宽度不固定

注:
伪指令与错误指令:
若指令无对应运算器,则会转变为已有的其他运算器执行功能(例如3*3可变为3+3+3的两条加法运算),
运算器越少,处理速度越慢,重量越少(故而游戏本性能高但更重),反之亦然。
上述没有对应的指令,用其他指令实现了相应功能,该类替代指令被称作伪指令,若无法实现(无替代指令)
则原指令为错误指令

4.指令解析

1)取指:控制器将PC寄存器中的值发送给内存,内存将对应地址中的指令(机器码)传送回CPU的指令寄存器IR中
2)译码:指令译码器对IR中的指令进行识别,即将指令(机器码)翻译成具体的运算操作(+/-/*…)
3)执行:运算器执行对应的指令并将结果写入寄存器

执行完一条指令后CPU内对应的硬件会将PC的值自动增加使PC指向内存中的下一条指令

5.工作模式

七种工作模式(重点):

除用户模式外其余都为特权模式

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

2.系统模式(system):
系统模式是特权模式,使用和User模式相同寄存器集的特权模式,保证不同任务每次调用同一个函数都是从头开始。
使用同一套寄存器。
操作系统通过该模式使用户访问受限的资源

3.一般中断模式(IRQ):
用于处理一般的中断请求(低优先级中断)。
一般在硬件产生中断信号后会自动进入该模式,是一种特权模式,可以自由访问系统硬件资源

4.快速中断模式(FIQ):
用于处理时间要求比较紧急的中断请求(高优先级中断)。一般在高速数据传输及通道中。

5.管理模式(SVC–super visor):
一般CPU上电之后会自动进入该模式,该模式主要完成系统的初始化,软中断也会进入该模式。
如果在用户模式下可以通过软中断进入该模式,请求访问硬件资源

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

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

8.cortex后增加安全模式(monitor):
为了安全而扩展出来的用于执行安全监控代码的模式,也是一种特权模式

四、寄存器

寄存器:是一种特殊的存储器,在CPU内部,可以用来存储数据,但是存储的内容有一定作用,ARM之前的架构有37个32-Bits长的寄存器
对于Cortex A 有40个寄存器,每个寄存器有32bit。对于寄存器是没有地址的,用编号表示。
●A32:每个寄存器可以存储一个32位数据
●A64:每个寄存器可以存储一个64位数据

R13:栈指针寄存器SP(the stack pointer)
存放栈顶的地址

R14:链接寄存器LR(the link register)
函数调用时,保存返回地址
(保存调用函对应指令的下一条指令地址,返回的时候把lr值给pc,可以继续执行接下来的代码)

R15:程序计数寄存器PC(the program counter)
存放当前取指指令的地址

PSR程序状态寄存器:共有6个,当前程序状态寄存器CPSR是所有运行模式所共享的,而另外5个PSR为模式私有,用来对CPSR进行备份的寄存器叫做SPSR。

CPSR:当前程序状态寄存器(current program status register)

存储当前程序运行状态
31-28   NZCV四个条件代码标记位(运算结果为负,运算结果为0,进位,溢出)
27-8    无用保留位
7-5     IFT   I和F为中断标记位,0为中断打开,都为1表示静止状态;
              T为0表示ARM状态,T为1表示Thumb状态.
4-0     M4-M0 处理器模式位(8种模式)

SPSR:保存程序状态的寄存器(saved program status register)
用于保存cpsr

注:
CPU识别的是机器码,但由于不同的CPU运算器不同,处理指令不同,则导致对应指令集的不同(即机器码不同)。
汇编最接近机器码,则指令集不同,故而汇编代码不能移植到不同的机器中.
为何不同系统都可以实现C程序?
因为C针对不同的系统有不同的编译器,交叉编译工具编译C,实现C的程序移植ARM系统。

总结

本文简单介绍了ARM的基础知识点,希望对初学者有所帮助。文章来源地址https://www.toymoban.com/news/detail-440783.html

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

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

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

相关文章

  • Linux 驱动开发基础知识——认识LED驱动程序 (二)

     个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755@qq.com 🦉个人WeChat:Vir2021GKBS 🐼 本文由妄北y原创,首发CSDN 🎊🎊🎊 🐨座右铭:大多数人想要改造这个世界,但却罕有人想改造自己。 专栏导

    2024年01月21日
    浏览(40)
  • ARM开发基础知识

    概念:寄存器是处理器内部的存储器,没有地址 作用:一般用于暂时存储参与运算的数据和运算结果 分类: 通用寄存器、专用寄存器、 状态 寄存器 注意:有标签(带三角光标)的是独有的寄存器 总结: ARM7,9,11 有37个寄存器 30 个通用寄存器 1 个用作PC( program counter) 1个

    2024年02月02日
    浏览(39)
  • ARM学习(25)链接装载高阶认识

    ARM学习(25)链接装载高阶认识 笔者先引入几个编译链接的例子来介绍一下: 声明无效:declared implicitly?,属于编译错误还是链接错误? 编译阶段的错误 ,属于编译错误,因为编译器发现这个函数没有声明,声明异常 标识符/符号找不到:xxxx is undefined? undefined xxxxx? 无法解

    2024年03月27日
    浏览(43)
  • ARM/FPGA/DSP板卡选型大全,总有一款适合您

    创龙科技ARM/FPGA/DSP嵌入式板卡选型大全2023.2版本正式发布!接下来,跟着我们一起看看有哪些亮点吧! 6大主流工业处理器原厂 创龙科技现有30多条产品线,覆盖工业自动化、能源电力、仪器仪表、通信、医疗、安防等工业领域,与6大主流工业处理器原厂强强联合,包括德州

    2023年04月15日
    浏览(50)
  • Vue实战【Vue开发中的的前端代码风格规范】

    大家好,上一期的导航守卫篇不知大家在私底下是否进行了尝试?之前收到好多小伙伴的私信说什么时候能给大家出一期前段代码风格规范呀,有的同学觉得自己的代码编写的不是很漂亮,虽然自己知道是干啥,但是可读性一点也不高;今天博主也是根据自己多年的开发经验

    2023年04月09日
    浏览(47)
  • 【前端|HTML系列第1篇】HTML的基础介绍与初次尝试

    大家好,欢迎来到前端入门系列的第一篇博客。在这个系列中,我们将一起学习前端开发的基础知识,从零开始构建网页和Web应用程序。本篇博客将为大家介绍HTML(超文本标记语言)的基础概念和标签,帮助你快速入门。 本期学期目标是: 了解什么是HTML 学习了解一个完整

    2024年02月11日
    浏览(42)
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01

    书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的

    2024年01月20日
    浏览(60)
  • ARM学习(24)Can的高阶认识和错误处理

    笔者来聊一下CAN协议帧的认识和错误处理。 CAN 差分信号,是经过CAN收发器转成差分信号的,CAN RX和TX是逻辑电平。CAN的基础知识,可参考笔者这边文章:ARM学习(21)STM32 外设Can的认识与驱动编写。 CAN总线拓扑结构。 CAN总线上面要接120欧姆的电阻,形成闭环。 CAN的总线电平

    2024年02月03日
    浏览(56)
  • ARM学习(23)AMP和SMP的认识与理解

    笔者来聊聊AMP和SMP架构理解(多核下系统)。 笔者经常听到ARM架构时,谈到SMP的架构或者AMP的架构,今天特意来了解一下,主要是针对多core处理,对于常见的MCU应用场景,可以比较少,往往是需要较强的性能或者应付复杂的场景,会碰到多核的场景。 SMP:Symmetric multiproces

    2024年02月12日
    浏览(106)
  • 在接触新的游戏引擎的时候,如何能快速地熟悉并开发出一款新游戏?

    大家好,今天分享点个人经验。 有一定 编程经验 或者 游戏开发经验 的小伙伴,在接触 新的游戏引擎 的时候,如何能 快速地熟悉并开发 出一款 新游戏 ? 利用现成开发框架。 开发框架 ,顾名思义,它是一个 框架 。 通常会把 引擎 看似复杂的 内容 , 整理和浓缩 到一套

    2024年02月03日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包