ARM开发---基础认识

article/2025/11/9 10:23:50

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

文章目录

  • 前言
  • 一、ARM是什么?
  • 二、ARM的特点
  • 三、ARM的使用场景
    • 1.计算机组成
    • 2.架构
    • 3.指令集
    • 4.指令解析
    • 5.工作模式
  • 四、寄存器
  • 总结


前言

提起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。

百度百科-华为mate50参数
百度百科-天玑9000参数

  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的基础知识点,希望对初学者有所帮助。


http://chatgpt.dhexx.cn/article/cFgJSTpS.shtml

相关文章

【嵌入式】Linux开发工具arm-linux-gcc安装及使用

arm-linux-gcc 知识架构及层次 — 程序编译及调试嵌入式交叉编译器安装配置主机目标板开发模式ARM微处理器/Linux系统下编译器编译器下载及安装 arm-linux-gcc工具使用-E-S-c -o-include file-I dir-I-iprefix prefix 和 -iwithprefix dir-l库名 -L目录gcc 优化 课后作业 Linux…

ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介

目录 1, Introduction to Arm Compiler 6 1.1 armclang 1.2 armasm 1.3 armlink 1.4 armar 1.5 fromelf 1.6 Arm C libraries 1.7 Arm C libraries 1,8 Application development ,ARM程序开发流程 2,ARM 编译器 5和ARM 编译器 6的兼容性 3&…

ARM处理器开发详解

目录 第一章 嵌入式系统基础知识(不考)嵌入式系统特点交叉调试调试器 第二章 嵌入式 ARM 技术概论ARM的基本数据类型(不考)选择ARM芯片的一般原则Cortex-A9内核的八种工作模式流水线(不考)寄存器组织程序状…

ARM嵌入式常用开发工具介绍及插画开发流程(更新)

这里接着前边的开发环境的配置说,其实用于开发的话,基本的开发环境已经架构好了,不过由于嵌入式开发环境的特殊性(交叉编译),我们还会用到一些其他的外围工具,这里做简要的说明。并重新介绍一下整个开发环境中&#xf…

ARM介绍

什么是ARM? ARM即可以是一家芯片设计厂商的名字,也可以代表一类微处理器的通称,还可以表示为一种技术的名称(这个问题面试的时候可能问道) 1、ARM是一个公司:Advanced RISC Machine Acorn RISC Machi…

《 Arm Compiler 5.06 》__ARM编译器官网下载、安装和使用说明(小白也能懂)

目录 一、前言 二、官方网站下载 三、编译器安装在 Keil 软件上 四、Keil选择编译器V5 “ V5.06 update 7(build 960) ” 五、测试 六、我的资源 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏和评论喔。 一、前言 Keil MDK-Arm5.37不再默认…

arm-linux开发板相关软件的使用

文章目录 1. 串口调试1.1 简介1.2 secureCRT使用步骤 2. 文件传输2.1 文件传输: tftp2.2 文件传输: NFS (相当于将主机作为一个u盘插入开发板) 3. 交叉编译3.1 下载3.2 配置 1. 串口调试 1.1 简介 一般而言,嵌入式开发板使用串口来监控后台。可以使用串口线连接开…

嵌入式:ARM相关开发工具概述

文章目录 JTAG仿真器J-LINK仿真调试器J-Link ARM主要特点 U-LINK仿真调试器ULINK2特点ULINK和JLINK的比较 ADS1.2集成开发环境使用ADS创建工程 JTAG仿真器 JTAG(Joint Test Action Group;联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容&…

嵌入式:ARM常用开发编译软件介绍

文章目录 编译器介绍1、ADS1.22、ARM RealView Developer Suite (RVDS)3、IAR EWARM4、KEIL ARM-MDKARM5、WIN ARM-GCC ARM 编译器介绍 1、ADS1.2 ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。…

北京邮电大学计算机考研资料汇总

北京邮电大学研招网 北京邮电大学计算机学院 北京邮电大学软件学院 北京邮电大学网络空间安全学院 北京邮电大学(Beijing University of Posts and Telecommunications),简称北邮,是中华人民共和国教育部直属、工业和信息…

23届计算机保研经验帖(北邮)

21届计算机保研经验帖 本文非常适合保研非实力派选手,越早阅读离心仪学校就越近一步。有很多同学担心自己拿到推免资格却无学可上,这大可放心,我们学校很多同学都轻松得到西南985高校的offer,但如果想保到北上广的计算机强校的话…

2019年北理工计算机北航计算机中山大学计算机北邮网研院保研夏令营

目录 1.个人情况 2.夏令营入营情况 3.报名准备建议 3.1 准备一个txt 文本,上面有个人信息,方便填写每个大学的报名申请,包括以下信息: 3.2 电脑上新建一个文件夹和一个网页收藏夹 3.3 一些可能需要使用的工具和软件&#xf…

北邮考研复试机试准备过程(已上岸)

纯自用请勿转载,用来给自己最后复习和捋思路用的,主要参考牛客网王道机试指南,C、C混用。考研人太久不写代码了…什么都不记得了,从头开始过一遍吧。 黑色代码段是要记住的重点函数/方法。每天下午做几个小时,一共不到…

2024考研北京邮电大学计算机/软件/网安/智能考研信息汇总

一、北京邮电大学简介 二、各院官方网址 北京邮电大学研究生院官网 计算机学院(国家示范性软件学院)官网 网络空间安全学院官网 人工智能学院官网 三、招生目录和导师重要性介绍 北邮以前共有四个学院属于计算机类,分别为:计…

所有计算机专业考研都变了!西安邮电大学计算机考研改考

西安邮电大学是一所双非大学,位于陕西省西安市。虽然是双非,但是计算机学科评估C,软件工程学科评估C,计算机实力在双非大学中还算不错。邮电类大学的计算机专业一般都比较强,比如北京邮电大学,南京邮电大学…

2019北邮计算机院机试真题

目录 19计算机院机试真题Problem A 二进制Problem B 二叉树Problem C 最短路径Problem D 方块阵 19计算机院机试真题 计算机院的机试题真难,没有4A的,第四题的题目看了一下,好像是矩阵的,题目记不清了,如果你考计算机…

北邮 计算机网络

一、前言 本文总结北邮计算机学院《计算机网络》的学习资料,希望能帮到学弟学妹,打好基础。 计算机网络也是计算机专业考研的必考科目之一,4学分,重要性不言而喻。学科特点是知识点非常多,每一章都要画一整张的思维导…

北邮考研_2019_计算机学院/网研院_时间和各科目规划安排

时间安排 科目 3-7月 7-9月 10-11 12月 数学 暑假前争取将一轮数学复习完 中期复习书:李正元数学全书(比李永乐写的好) 《李永乐真题大全解》 掐表做题 英语 3-4月:单词 预计7月中旬,将英语第一遍阅读做完&…

录取清华/北大/中科院/北邮都有!双非北京信息科技大学计算机考研光荣榜

上次我们看了几个二本大学的计算机考研光荣榜,发现虽然有上岸985/211大学的同学,但是不多。可以说,上岸好大学的概率非常非常低,是一件很难的事情。 那么有没有考上好大学多一些的,成绩比较好的双非大学呢?…

北邮考研上岸历程

考研初试倒数第一上岸北邮心路历程 嗨,准研究生们! 从去年到现在考研终于算是告一段落,所以想记录一下,与君共勉。 本人概况 本科双非,本科信息安全专业,一志愿北京邮电大学网络空间安全专业。初试总分…