ARM架构CPU的体系结构及接口技术

该博客是Linux底层课程笔记,聚焦ARM体系结构及接口技术。介绍了ARM处理器含义、指令集,阐述编译原理、数据类型与存储等知识。还涉及ARM工作模式、寄存器、异常处理机制,以及环境搭建、程序编写等内容,如栈应用、点灯实验等。

Linux底层课程笔记

一、ARM体系结构及接口技术

1、底层课程导学

1.1课程回顾

C语言基础:C语言工程师

C高级及Linux:C语言工程师

数据结构:C语言工程师

应用层开发:

IO进程:LinuxC开发  嵌入式软件  嵌入式应用

       网络编程:LinuxC开发  嵌入式软件  嵌入式应用

C++ QT:  QT开发

底层开发:

STM32  嵌入式软件工程师  单片机工程师

ARM   嵌入式软件工程师

      系统移植  嵌入式软件工程师  

      驱动开发  驱动开发工程师

1.2底层课程该怎么学

1.3 课程内容:

ARM体系结构:

   存储模型:程序的存储运行模式   架构

   工作模式:

    处理模式:发生中断或者异常进入

    线程模式:正常时

    寄存器:ARM内核内部的一些寄存器

    异常机制:异常的优先级 异常源  中断向量表

    流水线:三级线

    指令集:ARM指令

接口技术:

        GPIO:使能、配置模式(输入还是输出)、输出类型(推挽输出 开漏输出)、输出速度、输出数据寄存器(ODR\BSRR\BRR)

  PWM:屏幕亮度 电机

  UART:485 232  modbus

  ADC:模数转换  需要得到真实数据的,需要用到ADC   只是开关量,的需要ADC

  RTC\IIC\SPI\485\CAN\232

1.4嵌入式分层

应用层开发:使用系统提供的接口(API),做上层应用开发

底层开发:做操作系统本身

注意:内核层:向上提供接口,向下管理硬件

1.5Linux层次结构

进程管理:管理进程的创建、调度、销毁、通信等

内存管理: 管理内存的申请、释放、映射等

文件管理: 管理和访问磁盘中的文件

设备管理: 硬件设备的驱动的管理

网络协议:通过网通协议栈(TCP\IP)进行通信

1.6计算机基础知识

 在计算机中数据的存储、运算、传输都是以高低电平的方式进行的,所以数字电路中高、低电平表示逻辑0和1

1.7计算机的进制

    在计算机中数据的存储、运算、传输都是以高低电平的方式,所以数字电路中用高、低电平来表示逻辑1和0

1.8计算机的组成

输入设备:把其他信号转换成计算机能够识别的信号并送入计算机中:键盘、鼠标、麦克风

输出设备:把运算结果以人或其他设备能够识别的信号进行送到计算机外:显示器、音响

存储器:用来存储程序和数据的元件,实现存储控制程序的基础 :RAM ROM 软盘

运算器:CPU中负责进行数据运算的逻辑部件,其核心是算数逻辑单元ALU 加法器 减法器

控制器:控制器是CPU的指挥中心

总线(特殊):

   总线是计算机中各个部件之间传送信息的公共通信干线, 在物理上就是一束导线按照其传递信息的类型可以分为数据总线、地址总线、控制总线

 DMA总线

    DMA(Direct Memory Access)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器之间进行数据传递

1.9三级存储结构

2 ARM处理器概述

2.1ARM的含义

ARM公司

      1978年Acorn成立于应该剑桥

1980年晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心

1985年开发出全球第一款商用RISC处理器-ARM1

1990年艾康电脑财务危机,苹果和VLSI投资,独立出子公司Advanced RISC Machines(ARM)

1991年,ARM推出RISC处理器-ARM6  93-ARM7  97--ARM9TDMI 99--ARM9E 

2001--ARMV6  2022--ARM11

2004年,发布ARMV7架构的Cortex系列处理器,同时推出Cortex-M3

2005年,发布Cortex-A8处理器  07 M1和Cortex-A9  09 实现Cortex-A9 发布 M0

2010--M4

微处理器的统称

       早期经典处理器:ARM7 ARM9 ARM11

      A:   高性能 电脑 平板

      R:实时性高  航天  自动驾驶

      M:微处理器:M0  M3  M4

  1. 一种指令集

  指令:能够指示处理器执行某种云端的命令称为指令  +  - <<  >>

指令集:处理器能够识别的指令的集合称为指令集

      ARM指令集:所有指令(机器码),都专用32bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加4

      Thumb指令集:所有指令(机器码),都专用16bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加2

一种指令集(RISC和CISC)

RISC处理器

    只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令

    RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛

 CISC处理器

    不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定

  CISC处理器在性能上有很大优势,多用于PC及服务器等领域

2.2编译原理

机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植

 汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植

 C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植

2.3数据类型(ARM数据的类型)

      ARM采用32位架构,基本数据类型有以下三种:

Byte        8bits

Halfword  16bits

word      32bits   

2.4 数据的存储

word型数据在内存的起始地址必须以4的整数倍存储

  Halfword型数据在内存的起始地址必须以2的整数倍存储

2.5 字节序

大端对齐

低地址存到高地址,高地址存放到低地址

小端对齐

低地址存到低地址,高地址存放到高地址

注:ARM一般使用的是小端对齐

2.6 ARM的工作模式

ARM8个基本的工作方式

User 非特权模式,一般在执行上层的应用程序时ARM处于该模式

FIQ  当一个高优先级中断产生后ARM将进入这种模式

IRQ   当一个低优先级中断产生后ARM将进入这种模式

SVC 当复位或执行软中断指令后ARM将进入这种模式

Abort  当产生存取异常时ARM将进入这种模式

Undef 当执行未定义的指令时ARM将进入这种模式

System 使用和User模式相同寄存器集的特权模式

Monitor 为了安全而扩展出的用于执行安全监控代码的模式(只有A系列才有)

工作模式的理解

不同的模式拥有不同的权限

不同的模式执行的代码不同

不同的模式拥有不同的功能

工作模式的分类

2.7 寄存器

寄存器是什么

通用寄存器

概念:寄存器是处理器内部的存储器,没有地址

作用:一般用于暂时存储参与运算的数据和运算结果

分类:

通用寄存器、专用寄存器、控制寄存器

ARM寄存器

专用寄存器

R15(PC,Program Counter)

程序计数器,用于存储当前取址指令的地址

R14(LR,Link Register)

链接寄存器,一般有以下两种用途:

> 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址

程序需要返回时将LR的值复制到PC即可实现

> 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下

一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回

R13(SP,Stack Pointer)

栈指针,用于存储当前模式下的栈顶地址

CPSR寄存器

CPSR(Current Program Status Register),当前程序状态寄存器

CPSR寄存器分为四个域,[31:24]为条件域用F表示、[23:16]为状

态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示

Bit[4:0]

[10000]User    [10001]FIQ     [10010]IRQ     [10011]SVC

[10111]Abort   [11011]Undef   [11111]System  [10110]Monitor

Bit[5]

[0]ARM状态     [1]Thumb状态

Bit[6]

[0]开启FIQ     [1]禁止FIQ

Bit[7]

[0]开启IRQ     [1]禁止IRQ

Bit[28]

> 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0

> 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1

Bit[29]

> 当运算器中进行加法运算且产生进位时该位自动置1,否则为0

> 当运算器中进行减法运算且产生借位时该位自动置0,否则为1

Bit[30]

当运算器中产生了0的结果该位自动置1,否则为0

Bit[31]

当运算器中产生了负数的结果该位自动置1,否则为0

2.8 ARM异常处理

异常

概念:

  处理器在正常执行过程中可能遇到一些不正常的事件发生,这时处理器就要将当前程序暂停下来转而去执行这个异常事件,异常事件处理完之后返回被异常大端的地方继续执行。

异常处理机制

不同的处理器对异常的处理的流程大体相似,但是不同的处理器在具体实现的机制上有所不同;比如处理器遇到哪些事件认为是异常事件遇到异常事件之后处理器有哪些动作、处理器如何跳转到异常处理程序如何处理异常、处理完异常之后又如何返回到被打断的程序继续执行等我们将这些细节的实现称为处理器的异常处理机制

ARM异常源

 概念

    导致异常产生的事件称为异常源

 ARM异常源

    FIQ 快速中断请求引脚有效

    IRQ 外部中断请求引脚有效

    Reset 复位电平有效

    Software Interrupt 执行swi指令

    Data Abort 数据终止

    Prefetch Abort 指令预取终止

    Undefined Instruction 遇到不能处理的指令

ARM异常模式

    在ARM的基本工作模式中有5个属于异常模式,即ARM遇到异常后会切换成对应的异常模式

ARM异常响应

ARM产生异常后的动作(自动完成)

  1. 拷贝CPSR中的内容到对应的异常模式下的SPSR
  2. 修改CPSR的值

 2.1修改终端禁止位禁止相应的中断

 2.1修改模式位进入相应的异常模式

 2.3修改状态位进入ARM状态

  1. 保存返回地址到对应模式下的LR中
  2. 设置PC位相应的异常向量
异常向量表

异常向量表

> 异常向量表的本质是内存中的一段代码

> 表中为每个异常源分配了四个字节的存储空间

> 遇到异常后处理器自动将PC修改为对应的地址

> 因为异常向量表空间有限一般我们不会再这里

写异常处理程序,而是在对应的位置写一条跳转指令使其跳转到指定的异常处理程序的入口

注:ARM的异常向量表的基地址默认在0x00地址但可以通过配置协处理器来修改其地址

异常返回

ARM异常返回动作(自己编写)

  1. 将SPSR的值复制给CPSR-》恢复为跳转之前的模式
  2. 将LR的值复制给PC-》返回跳转之前程序执行的地方
IRQ异常举例

异常优先级

2.9 ARM微架构

流水线
指令流水线

    指令流水线机制的引入确实能够大大的提升指令执行的速度,但在实际执行程序的过程中很多情况下流水线时是无法形成的,比如芯片刚上电的前两个周期、执行跳转指令后的两个周期等

所以指令流水线的引入以及优化只能使平均指令周期不断的接近1而不可能真正的达到1,且流水线级数越多芯片设计的复杂,程度就越高,芯片的功耗就越高.

多核处理器

3 环境及工程搭建

3.1环境安装

3.2工程创建

4 程序编写

栈的应用-》叶子函数的调用过程

栈的应用-》非叶子函数的调用过程

异常中断产生指令

协处理器指令

伪操作(交叉编译环境安装)

CPU控制硬件原理

点灯实验

闪灯

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值