嵌入式复习
第1章
什么是嵌入式系统
嵌入到对象体系中的、用于执行独立功能的专用计算机系统
第2章
处理器模式
- 用户模式
- 系统模式
- 管理模式
- 外部中断模式
- 快速中断模式
- 数据访问终止模式
- 未定义指令终止模式
第3、4章
编写程序段:B卷7题
1
2
3
4
5
6
AREA example, CODE, READONLY
ENTRY
CMP R3, R4
MOVHI R1, R5, LSR#1
ADDLS R1, R5, 5
END
编写程序段:B卷8题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
AREA BlockData, DATA, READWRITE
src DCD 1,2,3,4,5
dst DCD 0,0,0,0,0
number EQU 5*4
AREA text, CODE, READONLY
ENTRY
start
LDR R4, =src ;加载源数组首地址
LDR R5, =dst ;加载目的数组首地址
MOV R3, #number ;取出数组的总长度
data_copy
LDR R2, [R4] ;加载当前源地址的数字
STR R2, [R5] ;将当前数字的总长度
ADD R4, #4
ADD R5, #4
CMP R1, #number
BEQ stop
ADD R1, #4
B data_copy
stop
END
混合编译应用:A卷6题
1
2
3
4
5
6
7
8
9
#include <stdio.h>
extern void str_copy(char *str1, char *str2);
int main() {
const char *source = "Hello World!";
char des[20];
strcopy(source, des);
printf("des is %s\n", des);
return 0;
}
1
2
3
4
5
6
7
8
9
AREA copy, CODE, REANONLY
EXPORT str_copy
str_copy
LDRB R2, [R0], #1
STRB R2, [R1], #1
CMP R2, #0
BNE str_cpy
MOV PC, LR
END
如何实现汇编源程序和C语言源程序之间的数据互访
- 在C语言中内嵌汇编指令
- 在汇编中使用C程序全局变量
- C程序中调用汇编的函数(EXPORT)
- 在汇编程序中调用C的函数(EXPORT)
第5章
GPIO程序:B卷9题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define GPFCON(*(volatile unsigned *)0x56000050)
#define GPFDAT(*(volatile unsigned *)0x56000054)
#define GPFUP(*(volatile unsigned *)0x56000058)
void Delay(unsigned int x) {
unsigned int i, j, k;
for (i = 0; i <= x; i++)
for (j = 0; j <= 0xff; j++)
for (k = 0; k <= 0xff; k++)
}
int Ledlamp() {
int i;
GPFUP &=0xffffff3f; // 使能上拉F7 F6
GPFCON &= 0x0fff; // 复位F7 F6
GPFCON |= 0x5000; // 设置F7 F6为输出口
while (1) {
GPFDAT = 0x3f;
Delay(100)
GPFDAT = 0xff;
Delay(70);
}
return 0;
}
1
2
3
4
5
6
AREA |DATA|, CODE, READONLY
ENTRY
LDR r13, =0x1000
IMPORT Ledlamp
B Ledlamp
END
UART的工作原理和特点
UART以异步方式发送数据,在UART通信中,两个UART直接相互通信,发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据
特点:串行、异步、数据帧可编程、只是用两根电线、不需要时钟信号
UART在接收数据时能够识别哪些传输错误
- 溢出错误
- 奇偶校验错误
- 帧错误
- 通信中断
第7、8、9章
什么是Bootloader
Bootloader程序是在操作系统内核运行之前运行的小程序,通过这段小程序可以初始化系统硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境
Bootloader主要功能
- 初始化系统硬件设备
- 建立内存空间的映射图
- 将系统的软硬件带到一个合适的状态,为最终调用操作系统内核准备好正确的环境
内核移植步骤
- 内核修改:1.解压内核源码;2.修改Makefile;3.修改目标板输入时钟;4.修改MTD分区;5.配置YAFFS2文件系统的补丁
- 内核配置
- 内核编译
设备驱动程序的功能
- 对设备初始化和释放
- 把数据从内核传送到硬件和从硬件读取数据
- 读取应用程序传送给设备文件的数据和回送应用程序的数据
- 检测和处理设备出现的错位
设备驱动分类
- 字符设备
- 块设备
- 网路设备
一些提示
批量数据加载/存储指令
- IA
- IB
- DA
- DB
- FD:满递减堆栈
- ED:空递减堆栈
- FA:满递增堆栈
- EA:空递增堆栈
异常
当异常发生,CPU进入相应的异常模式时,以下工作是由CPU自动完成的:
- 在异常模式的R14中保存前一工作模式的下一条即将执行的指令地址;
- 将CPSR的值复制到异常模式的SPSR中;
- 将CPSR的工作模式设为该异常模式对应的工作模式;
- 令PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常向量表中的相应指令;
从异常工作模式退回到之前的工作模式时,需要由软件来完成以下工作:
- 将异常模式的R14减去一个适当的值(4或8)后赋给PC寄存器;
- 将异常模式SPSR的值赋给CPSR;