D1第一讲 ARM 体系结构和接口技术

时间:2021-08-21 13:17:44

1.语言基础     c基础、Linux及c高级、数据结构

2.顶层开发     IO、进程、网络

3.底层开发     ARM、系统移植

操作系统的功能:向下管理硬件,向上提供接口(函数)

接口种类:1,内存管理;2,文件系统;3,进程管理;4,网络协议;5,涉笔管理

ARM学习内容:ARM的编程模型、ARM寄存器组织(重点)、ARM的异常处理、汇编语言

4.逻辑1和0

计算机系统中用高低电平来表示逻辑1和0

数据再计算机中的存储、传输、运算都是以二进制的形式进行的

5.

计算机由输入设备、输出设备、存储器、运算器、控制器五部分组成

运算器和控制器组成CPU

程序时指令的集合

一个处理器能够访问的内存空间的大小,N位地址总线的处理器访问的内存空间时2的N次方

6.C编译

ARM认识唯一的语言只有0和1

x86机器码(二进制)

ARM(汇编语言)

C语言通过不同的编译器生成 X86或者ARM读懂的语言

-------------file a.out: search file information查看文件信息------------

7,GCC编译步骤

1,预处理:将不能参与编译的内容(如宏定义、头文件等)处理,主要进行宏定义替换/头文件展开/注释;gcc -E hello.c -o hello.i

2,编译:C代码生成汇编代码,检查语法错误;gcc -S hello.i -o hello.s

3,汇编:将汇编编译成机器码(二进制)gcc -c hello.s -o hello.o

4,链接:将.o文件链接对应的库函数gcc hello.o -o hello

8,总线:控制总线/地址总线/数据总线

9,RISC:精简指令集处理器(ARM)在功耗、体积、价格等方面有很大优势

      CISC:复杂指令集处理器(x86)处理能力上有优势

10,Cortex-A:面向尖端的基于虚拟内存的操作系统和用户应用

        Cortex-R:实时处理器为要求可靠性、容错功能和实时响应的嵌入式洗头膏提供高性能解决方案

        Cortex-M:针对成本和功耗敏感的MCU和终端应用,一般不跑操作系统

11,System on chip 片上系统(SOC)

12,约定:Byte 8bits  halfword 2Byte 16bits  word 4Byte 32bits

13,一个处理器能够识别指令的集合,ARM指令集32bit,每条指令占用32位存储空间

注:Thumb指令集16bit,实现ARM指令PC自增4byte,实现Thumb指令PC自增2byte

14,当处理器运行ARM指令时:所有的指令必须Word(4byte)对齐,即指令存储的起始地址必须时4的整数倍

15,多字节数据的存储:小端对齐:低地址放低有效位,高地址放高有效位

                                        大端对齐:低地址放高有效位,高地址放低有效位

                                         ARM是小端对齐a[0]=012345678 (78是低有效位)

16,ARM  Cortex-A处理器有8个工作模式

User:用户模式----执行上层应用程序时ARM处于该模式

FIQ:  快速中断模式----处理高优先级的中断

IRQ:  普通中断模式----处理低。。。。。。

SVC: 特限模式----复位或软中断指令执行后ARM进入此模式

Abort:  中止模式模式----存取异常

Undef: 未定义模式----指令未定义

System: 系统模式

Cortex-A处理器特有模式:

Monitor:为安全而扩展出的用于执行安全监控代码的模式

17,CPU 学习 1,寄存器---CPU内部的存储器,没有地址;register存储类型可存在CPU中

                         2,处理器接口-----寄存器,指令集;

注释:extern,state,register,auto四种存储类型

18,R15---PC(Program Counter) 存储当前执行指令的地址

1,执行完一条指令后该基础年起的值自动加4指向下一条指令

2,可人为修改

R14---LR(Link Register)

用于返回主函数 PC = LR

R13---SP(Stack Pointer)

栈的本质时内存,存放的临时数据,指向当前模式下的栈顶(压栈or出栈地址)

---------------nm a.out 查看 .c file中的函数------------------------------

CPSR(current program status register)

10000user 10001fiq 10010irq 10011svc 10111abort 11011undef 11111system 10110monitor

19,ARM的异常处理

a,异常源:FIQ IRQ Reset 软中断 DataAbort PrefetchAbort 

当IQR异常产生后ARM的处理

1,保存CPSR寄存器的值到对应异常模式下的SPSR

2,修改CPSR a修改模式位IRQ模式;b禁止对应的异常;c修改为ARM状态

3,将产生异常处指令的下条指令的地址保存到LR_IRQ

4,PC = 0x00000018=异常处理地址

从异常处理程序返回到main需要做哪些准备

1,SPSR->CPSR回到之前的模式,重新打开中断

2,LR->PC实现程序返回