【复习】ARM部分

发布于 22 天前  34 次阅读


file

file

C语言编译器使用堆栈来完成参数传递和返回值传递
汇编程序可以使用堆栈来保存局部变量,寄存器值
cpu硬件使用堆栈来保存返回地址和寄存器上下文

Linux是一门什么课程?什么特点?

Linux本来是一种通用的操作系统,并不是针对嵌入式系统开发的,但是由于其自身诸多优点,很快被应用到嵌入式领域,逐渐成为主流的嵌入式操作系统。

嵌入式Linux是以Linux为基础的嵌入式操作系统。

file

特点:
1.开放性
2.多用户
3.多任务
4.良好的用户界面
5.设备独立性
6.丰富的网络功能
7.可靠的系统安全
8.良好的移植性
9.丰富的应用软件支持

嵌入式系统的定义? 特点?

答:IEEE定义:嵌入式系统是:控制\监控或者辅助设备\机器和车间运行的装置.
嵌入式系统是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能,可靠性,成本,体积,功耗等有严格要求的专用计算机系统.

交叉编译概念

利用运行在某机器上的编译器编译某个源程序生成在另外一台机器上运行的目标代码,这种编译器既所谓的交叉编译器(Cross Compiler)。

linux下的交叉编译环境重要包括以下几个部分:

     1,针对目标系统的编译器gcc;

     2,针对目标系统的二进制工具binutils;

     3,目标系统的标准c库glibc,有时出于减小libc库大小的考虑,你也可以用别的c库来代替glibc,例如uClibc、newlib等;

     4,目标系统的linux内核头文件。

典型应用,嵌入式系统构成,软硬件分工

嵌入式系统一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统(可选),以及用户应软件系统等四个部分组成

arm处理器

ARM(Advanced RISC Machines)一个32位元精简指令集(RISC)处理器架构,ARM处理器广泛地使用在许多嵌入式系统设计。ARM处理器的特点有指令长度固定,执行效率高,低成本等。

RISC体系结构(CISC)

固定长度简单指令
大量使用寄存器
加载存储指令批量处理
条件执行
单周期指令中使用逻辑处理和移位处理

ARM处理器特点

小体积,低功耗,低成本,高性能
精简指令系统结构RISC(大量通用寄存器,寻址方式灵活简单\简化指令译码\执行速度快效率高)
支持Thumb(16位)/arm32位双指令集,兼容性极强
寻址方式灵活简单,执行效率高

框图,流程图

file

宿主机,目标机


    这两个概念一般会出现在嵌入式软件的开发中,当采用交叉平台开发时,软件在一个通用平台上开发,在另一个目标平台上运行,前者通用平台称为宿主机系统,后者被开发的系统称为目标机系统。
    宿主机和目标机之间通过一组连接传输信息,将代码、映像从宿主机下载到目标机,连接通信的方式有网口、串口等。

如何编译?过程:

GCC将源码程序转变为可执行程序的过程分为4个相互关联的步骤:
1.预处理(预编译)
2.编译
3.汇编
4.链接
GCC首先调用cpp进行预处理,对源代码文件的include\define进行宏替换处理
接着调用ccl进行编译,生成以.o为后缀的目标文件;
汇编过程是针对源代码中汇编语言代码的步骤,调用as将以.S和.s后缀的汇编语言源代码文件进行汇编后生成.o为后缀的目标文件;
当所有的目标文件都生成以后,GCC就调用ld来完成链接

什么是arm处理器编程模型

arm7种工作模式,特点

file

armv7采用的是32位架构

异常处理机制

1、arm9处理器所支持的异常包括复位异常中断、未定义指令异常中断、指令预取中止异常中断、数据访问中止异常中断、外部中断请求异常中断、快速中断请求异常中断等。
2、arm9处理器对异常中断的响应过程
2.1、在LR中保存当前执行指令的下一条指令的地址,即:LR=PC-4;
2.2、将CPSR复制到适当的SPSR中;
2.3、将CPSR模式位强制设置为与异常类型相对应的值;
2.4、强制PC从相关的异常向量处取指。
2.5、ARM9内核在处理中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。
进入异常的示意图:

file

arm编程模型

中断处理流程

file

arm指令理解语句

LDR ,,,

C汇编

编写arm程序,例1+2+...+100

传送指令

时序概念

A/D转换原理

什么是arm处理器编程模型?

cpsr

file

arm汇编.

file
file
file
file
file

arm处理异常类型

file

file

处理器存储格式

什么是大端模式,什么是小端模式?

所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

所谓小端模式(Little-endian), 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内在的低地址中,这种存储模式将地址的高低和数据位 权有效结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致;

为什么有大小端之分:

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

用图来形象地说明一下:

file

寄存器组织

ARM处理器共有37个寄存器,包括31个通用寄存器和6个状态寄存器,每个寄存器都是32位的,状态寄存器只用了其中的部分位。

哈佛结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。

ARM9微处理器的工作模式

7种工作模式:
1、用户模式,不能直接进行处理器模式的切换,可以通过异常处理过程进行切换
2、系统模式,可直接进行处理器模式的切换,可访问所有系统资源,主要供操作系统任务使用
3、异常模式包括快速中断模式、外部中断模式、特权模式、数据访问中止模式、未定义指令中止模式,每一种异常模式都有一组寄存器供相应的异常处理程序使用。

arm9微处理器的寄存器组织

1、31个通用寄存器,6个状态寄存器。
2、任意时刻(也就是任意的处理器模式下)可见的是未备份寄存器r0-r7,备份寄存器r8-r14,一个或两个状态寄存器和程序计数器PC。
3、r0-r7在所有的处理器模式下都是指同一个物理寄存器,r8-r12在用户模式下指物理寄存器r8_urs-r12_urs,在fiq模式下指物理寄存器r8_fiq-r12_fiq。r13_mode,r14_mode指mode模式下的特定物理寄存器。
4、r13用作栈指针,r14又被称为是链接寄存器,r15被称为是程序计数器。
5、程序状态寄存器,用户模式和系统模式使用CPSR(当前程序状态寄存器)。进入异常模式时,会使用SPSR(备份程序状态寄存器)保存CPSR的内容能够,异常中断程序退出时,用SPSR恢复CPSR的内容。

程序状态寄存器

file

参考资料:csdn:https://blog.csdn.net/sunho89/article/details/8689032


擦肩而过的概率