为什么要学习这部分课程?该课程对成为一名嵌入式软件工程师有什么帮助?课程主要包括哪几部分?
# 体系结构
计算机体系结构有两种类型:RISC和CISC。
精简指令集(RISC):每条机器指令的长度相同,复杂机器指令由多条简单指令构成。具有简单的寻址模式和简单指令格式。
复杂指令集(CISC):
uniform instruction lengths and different methods for loading and storing data.
## 计算机基础知识
计算机是一个二进制世界,无论是信号传输还是数据存储都是用二进制来表示。高电平为 1,低电平为 0 ,即平时所说的*数字信号*。数据表示可以采用原码、反码、补码,高级语言中所使用的整数采用补码表示。计算机中,浮点数都是近似值,其表示方法由3部分组成:符号位、尾数和指数。引入二进制概念后,还要解决不同进制间的转换问题……
计算机构成有两种模型:冯诺依曼模型和哈弗模型
嵌入式操作系统中,总线有多种类型,其主要功能是用来传输数据和指令
## 多级存储结构
CPU运算速度快,内存读写速度慢。多级存储器的引入正是为了解决该问题。通过价格和容量性价比的考量,一般都采用三级存储结构:cache、内存(RAM)、磁盘。
内存容量由地址总线决定。程序执行时并不会全部加载,页表机制使得内存中只包含运行程序当前需要的代码和数据。虚拟地址机制可以扩大内存的逻辑容量。
## CPU工作原理
CPU由运算器和控制器组成,其工作流程包括:取址、译码、执行。
控制器通过总线获取内存中指定地址存储的数据,译码器将其翻译成机器码,最后交给运算器执行。若需要存储,还可以通过总线将运算结果写入指定内存(寄存器->内存)。
## ARM处理器概述
SoC(System on Chip):片上系统,即把系统需要的各个功能部件集成在一块芯片上。
## ARM指令集
ARM处理器有两种指令集:ARM和Thumb。在CPSR寄存器中,Bit[5]为0表示ARM状态,1表示Thumb状态。同一高级语言编写的语句,经不同编译器编译产生不同的指令,汇编后机器码也不同。由指令构成的集合称为指令集。
## ARM存储模型
汇编语言中有三种数据类型:Byte(8bit)、Harfword(16bit)、Word(32bit)。ARM在字节对齐时,采用小端存储:低地址存放高位,高低址存放低位。程序计数器PC,用于存放指令地址。ARM状态,指令执行后,PC自增 4;Thumb状态,自增 2 。
C语言是一种偏向于底层的语言,变量在声明时,可以指定其在内存中存放的位置。存储模式分为以下4种:
## ARM工作模式
ARM有8种工作模式,CPSR中,Bit[4:0]为状态位,用于表示当前处于何种状态。不同状态具有不同权限,上层应用开发时,处理器状态为 User 模式,权限较低,无法对内核直接进行操作,只能够使用内核提供的接口进行开发。异常产生时,通过程序中断进入异常模式:FIQ、IRQ、SVC、Abort、Undef。此时,可以修改操作系统内核层面的一些代码执行流程,用于处理异常。
## ARM寄存器组织
寄存器是CPU中的存储部件,可直接参与算术逻辑运算。`register int number = 8;` 数据直接存储在寄存器中,不可以进行取地址操作。ARM中,寄存器分为:通用寄存器、专用寄存器、控制寄存器。
专用寄存器:
控制寄存器:CPSR
## ARM异常处理
异常处理过程:[关中断、保存断点、寻找中断源]、[保存现场和屏蔽字、开中断、执行中断处理程序、关中断、恢复现场和屏蔽字、中断返回和恢复断点]
当异常发生时,处理器工作模式由 USER 变为 SVC,通过 SWI 指令查询中断向量表,执行中断处理程序。通过屏蔽字控制当前程序是否可以被其它中断打断。
异常是计算机实现交互的方法,中断是异常的一种,由外部设备产生(如:鼠标单击,键盘输入)。陷入也是异常,由程序内部产生(如:除零、溢出)。
中断控制器用于管理不同设备所产生的中断如何与CPU进行交互:
中断控制器编程:
主要包括两个层次,
外设,通过对应的引脚,使外设产生的中断能够发送给中断控制器处理;
中断控制器,管理外设产生的中断信号,并分配给相应的CPU处理。
# 接口技术
## GPIO
通用输入、输出接口。要用 GPIO 点亮 LED 灯,需要执行以下步骤:
## UART
串口是一种全双工通信方式,传送的数据帧格式如下:起始位、数据位、校验位、终止位。
波特率(bps):单位时间内传输符号的个数。
输出重定向:PC上字符输出通常是屏幕,而在嵌入式设备上,输出为串口(Serial)。
## WDT
看门狗定时器(Watch Dog Timer),其实现原理是一个计数器。用于在设备故障时重启系统。
## PWM
在蜂鸣器实验中,通过调节高低电平的周期和占空比,获取所需要的波形,从而控制蜂鸣器的输出。
## ADC
模拟信号转数字信号
## RTC
实时时钟,它是一个可以为系统提供精确时间基准的元器件。
## IIC
IIC全称(Inter-Integrated Circuit)是一种在嵌入式设备中常用的半双工,串行通信总线。