目录
1 导学~
本节内容都是哔站视频学习整理的,原视频链接在这里~~跳转
1.1 嵌入式系统分层
操作系统的作用:向下管理硬件、向上提供接口:
应用开发:使用系统提供的接口(API),做上层应用程序的开发
底层开发:做操作系统本身的开发
■Linux子系统
1.进程管理:管理进程的创建、调度、销毁等
2.内存管理:管理内存的申请、释放、映射等
3.文件系统:管理和访问磁盘中的文件
4.设备管理:硬件设备及驱动的管理
5.网络协议:通过网络协议栈(TCP、 IP…)进行通信
2 ARM体系结构与接口技术课程导学
现在关注的:是CPU的原理,
程序在CPU里面是怎么运行的。
CPU如何控制硬件,通过各种模块。硬件模块不是基于操作系统的!
接口是为了驱动做准备~ 驱动是在操作系统下的。
3 计算机基础知识
3.1 计算机的组成
输入设备:把光学信号转换成电信号
输出设备:把CPU处理完的数据(电信号)转换成其他信号
存储器:存储程序和数据(变量)
CPU:运算器+控制器——>执行程序。控制器控制运算流程,运算器进行运算if while。
■输入设备
把其他信号转换成计算机能识别和处理的信号并送入计算机中。如键盘、鼠标、摄像头等
■输出设备
把运算结果以人或其他设备所能接受的形式送出计算机外。如显示器、音响、打印机等
■存储器
存储器是用来存储程序和数据的部件,是实现"存储程序控制"的基础。如内存、硬盘等
3.2 总线
- 总线
总线是计算机中各个部件之间传送信息的公共通信干线,在物理上就是一束导线。按照其传递信息的类型可以分为数据总线、地址总线、控制总线 - DMA总线
DMA(DirectMemoryAccess)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器之间进行数据传递。
4 多级存储结构与地址空间
4.1 三级存储结构
4.2 地址空间
5 CPU工作原理
任何运算都是在电路里面完成的——数字电路基础
数字电路用二极管搭门电路——>与或非——>加法器
运算器里面就是各种各样的运算电路。
- 寄存器:像内存一样存东西。
指令寄存器PC——32位的
指令寄存器IR——32位的
指令译码器
CPU执行流程:
CPU执行一条指令过程:
1)取指
2)译码
3)执行
执行之后下一步:
PC的值会自动+1(0x08——>0x0C),然后继续执行这条指令,然后循环,
5.1 指令的执行过程
■一条指令的执行分为三个阶段
-
1.取址:
CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回到CPU中的指令寄存器(IR) -
2.译码:
译码器对IR中的指令进行识别,将指令(机器码)解析成具体的运算 -
3.执行:
控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器
■每执行一条指令后PC的值会自动增加指向下一条指令
6 ARM处理器概述
6.1ARM公司概述
- ARM的含义
ARM (Advanced RISC Machines) 有三种含义:一个公司的名称、一类处理器的通称、一种技术 - ARM公司
成立于1990年11月,前身为Acorn计算机公司;(ARM->Acorn RISC Machines)
主要设计ARM系列RISC处理器内核;
授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片;(ARM7是最经典的处理器ARM7之后开始被全世界广泛使用,后来的ARM9、ARM11都是很经典的)2004年的时候不在用ARM+数字来命名,之后是用ARM cortex 系列来命名cortex 包括3个系列A/R/M。
6.2 RISC处理器和CISC处理器
■RISC处理器
只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令。
RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
■CISC处理器
不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一-般指令长度和周期都不固定。
CISC处理器在性能上有很大优势,多用于PC及服务器等领域.
7 ARM指令集概述
■ 指令
能够指示处理器执行某种运算的命令称为指令人(如加、减、乘…)
指令在内存中以机器码(二进制)的方式存在
每一条指令都对应一条汇编
程序是指令的有序集合
■ 指令集
处理器能识别的指令的集合称为指令集
不同架构的处理器指令集不同
指令集是处理器对开发者提供的接口
7.2 ARM指令集
大多数ARM处理器都支持两种指令集:
■ARM指令集
所有指令(机器码)都占用32bit存储空间
代码灵活度高、简化了解码复杂度
执行ARM指令集时PC值每次自增4
■
Thumb指令集
所有指令(机器码)都占用16bit存储空间
代码密度高、节省存储空间
执行Thumb指令集时PC值每次自增2
编译原理
■机器码(二进制)是处理器能直接识别的语言,不同的机器码代
表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设
计所决定的,不同的处理器机器码不同,所以机器码不可移植
■
汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条
机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
■C语言在编译时我们可以使用不同的编译器将C源码编译成不同架
构处理器的汇编,所以C语言可以移植
8 ARM存储类型
8.1 ARM数据类型
■ARM采用32位架构,基本数据类型有以下三种
Byte 8bits
Ha | fword 16bits
Word 32bits
■数据存储
Word型数据在内存的起始地址必须是4的整数倍
Word
Halfword型数据在内存的起始地址必须是2的整数倍
注:即数据本身是多少位在内存存储时就应该多少位对齐
8.2 字节序
举例查看自己ubuntu是大端还是小端对齐
取出来的是78 说明ubuntu是小段对齐的~ 因为78放在了首地址 ~说明低地址存的是低位
8.3 ARM指令存储
■处理器处于ARM状态时
所有指令在内存的起始地址必须是4的整数倍
PC值由其[31:2]决定,[1:0]位未定义
■处理器处于Thumb状态时
所有指令在内存的起始地址必须是2的整数倍
PC值由其[31:1]决定,[0]位未定义
注:即指令本身是多少位在内存存储时就应该多少位对齐
9 ARM工作模式
- ARM工作模式
ARM有8个基本的工作模式
User非特权模式,一般在执行上层的应用程序时ARM处于该模式
FIQ当一个高优先级中断产生后ARM将进入这种模式
IRQ当一个低优先级中断产生后ARM将进入这种模式
SVC当复位或执行软中断指令后ARM将进入这种模式
Abort当产生存取异常时ARM将进入这种模式
Undef当执行未定义的指令时ARM将进入这种模式
System,使用和User模式相同寄存器集的特权模式
Monitor为了安全而扩展出的用于执行安全监控代码的模式
10 ARM寄存器组织
10.1 概念
寄存器是处理器内部的存储器,没有地址
- 作用
一般用于暂时存放参与运算的数据和运算结果 - 分类
包括通用寄存器、专用寄存器、控制寄存器
10.2 ARM寄存器
注:
在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用
10.2.1 专用寄存器
■R15 (PC, Progr am Counter)程序计数器,用于存储当前取址指令的地址
■R14 (LR,L ink Register)链接寄存器,一般有以下两种用途:
1、执行跳转指令(BL/BLX)时, LR会自动保存跳转指令,下一条指令的地址程序需要返回时将LR的值复制到PC即可实现。
2、产生异常时,对应异常模式下的LR会自动保存被异常打断的指令f一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序
■R13 (SP, Stack Pointer)栈指针,用于存储当前模式下的栈顶地址
10.2.2 CPSR寄存器