本文为我在复习嵌入式系统这门课程时对该课程的知识点的归纳总结,不定期更新,希望可以有所帮助。
考试相关
考试内容
单片机(80C51)
- Ch2 单片机芯片的硬件结构
- Ch5 单片机存储器的扩展
ARM9(S3C24XX)
- Samsung S3C2410/S3C2416/S3C2440
- Ch1~Ch6、Ch8、Ch9、Ch10(了解)
考试题型(开卷)
论述题(20分)
简答,100~200字,题目怎么问怎么回答,简单分析
设计题(40分)(80C51/S3C2410)
按题目给出的点回答,没让写代码不要写代码,画框图
设计题(40分)(S3C2410)
同上
单片机(80C51)
Ch2 单片机芯片的硬件结构
单片机概念
集成中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能 —— 一台计算机
单片机结构
电源引脚
VCC:芯片主电源,外接+5V。
GND:电源地线。
时钟引脚
XTAL1与XTAL2为内部振荡器的两条引出线。
控制引脚
- ALE/PROG:地址锁存控制信号/编程脉冲输入端
- PSEN:片外程序存储器读选通有效信号
- EA/VPP:访问程序存储器控制信号/编程电源输入端
- RST:复位,掉电保护信号输入端
输入输出引脚
- P0.0~P0.7:通道0是一个8位漏极开路的双向输入输出通道。在外接存储器或者扩展I/O接口时,P0端口作为复用的低8位地址总线和双向数据总线。在不扩展存储器或者I/O接口时,作为准双向输入输出接口。
- P1.0~P1.7:只有一种功能,即准双向I/O接口,带内部电阻上拉。
- P2.0~P2.7:可作为准双向I/O接口使用,带内部电阻上拉;但在接有片外存储器或扩展I/O接口范围超过256B时,则该口一般只能作为高8位地址总线使用。
- P3.0~P3.7:该口除了作为准双向口,带内部电阻上拉外,还具有第二功能。
P3端口的第二功能如下表所示:
端子 | 名称 | 功能 |
---|---|---|
P3.0 | RXD | 串行输入 |
P3.1 | TXD | 串行输出 |
P3.2 | INT0 | 外部中断0输入 |
P3.3 | INT1 | 外部中断1输入 |
P3.4 | T0 | 定时器0外部输入 |
P3.5 | T1 | 定时器1外部输入 |
P3.6 | WR | 片外数据存储器写选通输出 |
P3.7 | RD | 片外数据存储器读选通输出 |
单片机存储器结构
ROM
RAM
特殊功能寄存器
- 程序计数器(PC):不可寻址,不可读写
- 累加器(ACC):操作数/运算中间结果
- B寄存器:乘除运算/乘积高8位/除法余数
- 程序状态字(PSW)
功能 | 标志符号 | 位地址 |
---|---|---|
进位标志(又是C寄存器) | CY | PSW.7 |
辅助进位标志 | AC | PSW.6 |
用户标志 | FO | PSW.5 |
工作寄存器组选择 | RS1 | PSW.4 |
工作寄存器组选择 | RS0 | PSW.3 |
溢出标志 | OV | PSW.2 |
保留 | PSW.1 | |
奇偶标志 | P | PSW.0 |
引脚内部结构
P0
P1
P2
P3
Ch5 单片机存储器的扩展
系统总线
地址总线(AB)(16位)
数据总线(DB)(8位)
控制总线(CB)
存储器扩展
- 当/EA=1时,80C51单片机所有片内程序存储器有效
- P0:分时输出程序存储器的低8位地址和8位数据
- ALE:输出,在ALE下降沿时,P0上出现稳定的程序存储器的低8位地址,用ALE信号锁存这低8位地址
- P2:在整个取指周期中,输出稳定的ROM的高8位地址
- /PSEN:输出,低电平有效。在ALE的下降沿之后,/PSEN由高变为低,此时片外ROM的内容(指令字)送到P0口,而后在/PSEN的上升沿将指令字送入指令寄存器。因而,/PSEN信号作为片外程序存储器的“读”选通信号。
-
当/EA=0时,80C51单片机所有片内ROM无效,只能访问片外ROM。
ARM9(S3C24XX)
Ch1 嵌入式系统概论
嵌入式系统定义(无严格定义)
一般认为,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,可满足系统功能与要求的专用计算机系统。
嵌入式系统组成
嵌入式微处理器(核心)、外围硬件设备、嵌入式操作系统、用户应用软件
嵌入式微处理器分类
按数据总线宽度
8位、16位、32位、64位
按体系结构
冯·诺依曼体系结构:程序和数据共用存储空间
哈佛体系结构:程序和数据分用存储空间
按指令系统
精简指令集系统 RISC (Reduced Instruction Set Computer):MIPS、ARM (Advanced RISC Machines Limited)
复杂指令集系统 CISC (Complex Instruction Set Computer):Intel 80x86、8086、Pentium
按应用
嵌入式微处理器 EMPU
嵌入式微控制器 MCU
嵌入式数字信号处理器 DSP
嵌入式片上系统 SoC
Ch2 ARM9体系结构
五级流水线
取指 —— 译码 —— 执行 —— 访存 —— 回写
ARM指令集分类(可相互切换)
ARM指令集(默认):32位(功能全)
Thumb指令集:16位(代码密度高)
ARM9工作模式(7种)
- 用户模式(usr):ARM处理器正常执行程序时的处理
- 快速中断模式(fiq):用于高速数据传输或通道处理
- 外部中断模式(irq):用于通用的中断处理
- 管理模式(svc):操作系统使用的保护模式
- 指令/数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护
- 系统模式(sys):运行具有特权的操作系统任务时的模式
- 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真
ARM9存储器组织结构
32位,4GB,4字节/字
小端存储:高对高,低对低(默认为小端存储,可通过硬件输入引脚BIGEND配置,默认低电平)
程序计数器PC总是指向取指的指令(字对齐)
PC寄存器中的值 = 当前执行的指令地址 + 8(ARM指令)
PC寄存器中的值 = 当前执行的指令地址 + 4(Thumb指令)
目的地址 = 当前执行的指令地址 + 8 + 偏移量(分支指令)(不可溢出)
I/O端口的访问方式
存储器映射方式:端口地址和存储器统一编址(ARM9)
I/O映射方式(独立编址):I/O端口地址与存储器分开独立编址
内部寄存器(37个32位)P30~35
通用寄存器(31个)R0~R15(在不同工作模式下会映射到不同寄存器,如上图所示)
未分组寄存器 R0~R7
分组寄存器 R8~R14
R13 常用作 堆栈指针(SP)
R14 常用作 子程序链接寄存器(LR)
程序寄存器 R15(PC)(ARM:末两位为0;Thumb:末一位为0)
状态寄存器(6个)CPSR(R16)/ SPSR(5个,如上图,用于备份CPSR)
条件码标志
控制位
- 中断禁止位(I=1:禁止IRQ中断;I=0:允许IRQ中断)(F=1:禁止FIQ中断;F=0:允许FIQ中断)
- T标志位(T=1:Thumb状态;T=0:ARM状态(默认))
- 工作模式位(M [4:0])
ARM9异常
S3C2410嵌入式微处理器
Ch3 ARM指令系统
ARM指令分类
- 数据处理指令 数据传输指令、算术指令、逻辑指令、比较指令、乘法指令、前导零计数
- 程序状态访问指令 MRS、MSR
- 分支指令 B、BL、BX
- 访存指令 单数据访存指令、多数据访存指令、数据交换指令
- 异常产生指令 SWI、BKPT
- 协处理器指令 CDP、LDC、STC、MCR、MRC
数据处理指令
例:MOVEQ R0,R1 ; if z==1 then R0 = R1
ARM指令寻址方式(P58)
寄存器寻址
例:ADD R0,R1,R2 ; R0 = R1 + R2
立即寻址
例:ADD R3,R3,#10 ; R3 = R3 + 10
寄存器移位寻址
例:ADD R3,R2,R1,LSL #3 ; R3 = R2 + 8 × R1
例:MOV R0,R1,ROR R2 ; R0 = R1 循环右移 R2 位
寄存器间接寻址
例:LDR R0,[R1] ; R0 = [R1]
变址寻址
- 前变址方式 例:LDR R0,[R1,#4] ; R0 = [R1 + 4]
- 自动变址方式 例:LDR R0,[R1,#4]! ; R0 = [R1 + 4] , R1 = R1 + 4
- 后变址方式 例:STR R0,[R1],#12 ; [R1] = R0 , R1 = R1 + 12
多寄存器寻址
例:LDMIA R1,{R0,R2,R5} ; R0 = [R1] , R2 = [R1 + 4] , R5 = [R1 + 8]
堆栈寻址(P62)
块复制寻址(P63)
相对寻址
例:BL ROUTE_A ; 调用 ROUTE_A 子程序
常用ARM指令(P64~P79)这个太多了,先跳过吧
ARM汇编伪指令(4条常用)
特殊指令助记符,不属于ARM指令集,为了编程方便而定义,在汇编时被合适的机器指令替代
- ADR(小范围的地址读取伪指令)
- ADRL(中等范围的地址读取伪指令)
- LDR(大范围的地址读取伪指令)
- NOP(空操作伪指令)
ARM汇编伪操作
为汇编程序所用,在源程序进行汇编时由汇编程序处理,只在汇编过程起作用,不参与程序运行
符号定义伪操作
- GBLA,GBLL,GBLS 声明全局变量
- LCLA,LCLL,LCLS 声明局部变量
- SETA,SETL,SETS 给变量赋值
- RLIST 给通用寄存器列表定义名称
数据定义伪操作
- LTORG 用于声明一个数据缓冲池(文字池)的开始
- SPACE 用于分配一块字节内存单元,并用0初始化
- DCB 用于定义并且初始化一个或者多个字节的内存区域
- DCD,DCDU 用于分配一段字对齐的内存单元,并初始化
汇编控制伪操作
- IF,ELSE,ENDIF 有条件选择汇编
- WHILE,WEND 有条件循环(重复)汇编
- MACRO,MEND,MEXIT 宏定义汇编
其他伪操作(P83~P86)
ARM程序常用文件格式
源程序文件 | 文件扩展名 | 说明 |
---|---|---|
汇编程序文件 | *.s | 用ARM汇编语言编写的ARM程序或Thumb程序 |
C程序文件 | *.c | 用C语言编写的程序代码 |
头文件 | *.h | 为了简化源程序,通常将程序中经常使用的常量名、宏定义、数据结构定义等单独存放在一个文件中,该文件一般称为头文件 |
ARM预定义变量(大小写敏感)
- R0 ~ R15 和 r0 ~ r15
- a1 ~ a4:参数、结果或临时寄存器,与 r0 ~ r3 同义
- v1 ~ v8:变量寄存器,与 r4 ~ r11 同义
- sb 和 SB:静态基址寄存器,与 r9 同义
- sl 和 SL:堆栈限制寄存器,与 r10 同义
- fp 和 FP:帧指针,与 r11 同义
- ip 和 IP:过程调用中间临时寄存器,与 r12 同义
- sp 和 SP:堆栈指针,与 r13 同义
- lr 和 LR:链接寄存器,与 r14 同义
- pc 和 PC:程序计数器,与 r15 同义
- cpsr 和 CPSR:程序状态寄存器
- spsr 和 SPSR:程序状态寄存器
- f0 ~ f7 和 F0 ~ F7:FPA 寄存器 (Floating Point Accelerator)
- p0 ~ p15:协处理器 0 ~ 15
- c0 ~ c15:协处理器寄存器 0 ~ 15
C语言与汇编混合编程
C程序嵌入汇编程序
_asm("指令[;指令]")
或 asm("指令[;指令]")
Ch4 时钟及电源管理
主时钟来源于外部晶振(XTIpll / XTOpll)或外部时钟(EXT-CLK)
启动时的时钟源选择方式
OM[3:2] | MPLL状态 | UPLL状态 | 主时钟源 | USB时钟源 |
---|---|---|---|---|
00 | On | On | 晶振 | 晶振 |
01 | On | On | 晶振 | 外部时钟 |
10 | On | On | 外部时钟 | 晶振 |
11 | On | On | 外部时钟 | 外部时钟 |
S3C2410电源管理模式
正常模式
所有外围设备和基本模块(包括电源管理模块、CPU 核、总线控制器、存储控制器、中断控制器、DMA 和外部控制单元)都在运行。但每个外围设备的时钟,不包含基本模块,都可以通过软件控制运行或停止,以便降低功耗。
空闲模式
停止供给CPU 核时钟,但总线控制器、存储控制器、中断控制器和电源管理模块仍然供给时钟。
低速模式
通过低速时钟频率来降低功耗。
休眠模式
模块断开内部电源连接,除了唤醒逻辑。休眠模式有效的前提是系统需要两套独立的电源,其中一套给唤醒逻辑供电,另一套则给其他设备包括CPU供电,并且电源上电可控制。在休眠模式下,给CPU和内部逻辑供电的第二套电源被关闭。
相关特殊功能寄存器
- PIL锁定时间计数器(LOCKTIME)
- PLL控制寄存器(MPLLCON 和 UPLLCON)
- 时钟控制寄存器(CLKCON)
- 低速时钟控制寄存器(CLKSLOW)
- 时钟分频控制寄存器(CLKDIVN)
常用单元电路设计
电源电路设计
晶振电路设计
复位电路设计
Ch5 存储器与I/O接口原理
SRAM(静态随机存储器)
一般容量为64KB,16根地址引脚(A0~A15),读/写速度快,功耗大,不需要周期性刷新,数据线有8位/16位
DRAM(动态随机存储器)
功耗小,集成度高,容量大,需要周期性刷新
存储系统机制
存储器接口方式
高速缓存机制(Cache)
存储管理单元(MMU)
S3C2410存储空间
I/O端口引脚(共117个引脚)
- PortA(GPA)23个输出端口;
- PortB(GPB)11个I/O端口;
- PortC(GPC)16个I/O端口;
- PortD(GPD)16个I/O端口;
- PortE(GPE)16个I/O端口;
- PortF(GPF)8个I/O端口;
- PortG(GPG)16个I/O端口;
- PortH(GPH)11个I/O端口;
I/O端口控制寄存器
- 端口配置器(GPACON ~ GPHCON)
- 端口数据寄存器(GPADAT ~ GPHDAT)
- 端口上拉寄存器(GPBUP ~ GPHUP)
Ch6 中断与定时技术
中断向量 = 中断程序入口地址(56个中断源/IRQ/FIQ)
- 固定中断向量:地址不可修改,响应速度快
- 可变中断向量:地址可以修改,响应速度慢
中断屏蔽
- 可屏蔽中断请求(INTR):受本身屏蔽位和IF=1(开中断)控制,打印机中断
- 不可屏蔽中断请求(NMI):无条件执行,电源掉电
中断控制寄存器
- 中断请求寄存器(SRCPND)
- 中断模式寄存器(INTMOD)
- 中断屏蔽寄存器(INTMSK)
- 优先级寄存器(PRIORITY)
- 中断允许寄存器(INTPND)
定时器计算
定时器控制寄存器
- 定时器配置寄存器0(TCFG0)
- 定时器配置寄存器1(TCFG1)
- 定时器控制寄存器(TCON)
- Timer0计数缓冲寄存器和比较缓冲寄存器(TCNTB0/TCMPB0)
- Timer0计数观察寄存器(TCNTO0)