复习大纲.docx
《复习大纲.docx》由会员分享,可在线阅读,更多相关《复习大纲.docx(12页珍藏版)》请在冰豆网上搜索。
复习大纲
嵌入式系统复习大纲
第一章嵌入式系统概述
1.嵌入式系统的定义
答:
1以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
2.嵌入式系统的组成,能画出嵌入式系统的组成框架。
答:
嵌入式系统由软件系统和硬件系统两部分组成。
3.单片机是不是嵌入式系统?
它与ARM嵌入式系统有何异同?
答:
单片机是嵌入式系统。
单片机一般是4位、8位或16位的数据总线,一般内置存储器,不运行操作系统,侧重于低成本,主要应用与工业控制等领域;而ARM嵌入式系统是32位的数据总线,运算速度快,外接大容量存储器,能运行操作系统以适合多种应用。
4.嵌入式系统与通用计算机之间的区别。
答:
通用计算机系统采用标准化、模块化的设计,其技术要求是高速、海量的信息处理,技术发展方向是处理速度、总线宽度、存储容量的无限提升。
而嵌入式系统怎采用针对性较强的专业化设计,技术要求是满足具体应用,技术发展方向是在保证应用系统的技术要求和可靠性的前提下,尽可能减小成本、体积和功耗。
5.嵌入式处理器的分类
答:
1嵌入式微处理器MPU2嵌入式微控制器MCU3嵌入式DSP处理器
4嵌入式片上系统SOC5嵌入式可编程片上系统SOPC
6.嵌入式操作系统的作用是什么?
请举出3种常见的操作系统。
答:
用于管理存储器分配、中断处理、任务间通信和定时器响应,以及提供多任务处理等功能。
嵌入式操作系统,大大地提高了嵌入式系统硬件工作效率,并为应用软件开发提供了极大的便利。
3种常见的操作系统:
WinCE、Vxworks、uClinux
7.嵌入式系统开发流程
答:
嵌入式系统开发流程一般可分为4个阶段:
需求分析阶段、硬件开发阶段、软件开发阶段和程序固化阶段。
第二章ARM处理器编程基础
1.计算机中的两种典型体系结构是什么,各自的特点是什么?
冯·诺依曼体系和哈佛体系结构
冯·诺依曼体系:
1)数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。
2)被早期大多数计算机所采用
3)ARM7——冯诺依曼体系
结构简单,但速度较慢。
取指不能同时取数据
哈佛体系结构:
1)程序存储器与数据存储器分开.
2)提供了较大的存储器带宽,各自有自己的总线。
3)适合于数字信号处理.
4)大多数DSP都是哈佛结构.
5)ARM9是哈佛结构
6)取指和取数在同一周期进行,提高速度,
改进哈佛体系结构分成三个存储区:
程序、数据、程序和数据共用
2.在ARM系列中,ARM7,ARM9分别是什么体系结构。
ARM7是冯·诺依曼体系结构ARM9是哈佛体系结构
3.ARM7处理器,PXA270处理器分别采用几级流水线;
ARM7采用的是3级流水线PXA270采用的是7级流水线
4.ARM处理器有几种工作状态,各自的特点。
工作状态之间如何进行转换,异常响应时,处理器处于何种状态。
答:
ARM有两种工作状态:
①ARM状态,此时处理器执行32位的字对齐的ARM指令。
②Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令.
在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且不影响处理器运行模式和相应寄存器中的内容。
ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在上电或复位后,应该处于ARM状态。
执行BX跳转指令,将操作数的状态位(位0)设置为1时,可以使处理器从ARM状态切换到Thumb状态。
此外,当处理器处于Thumb状态时发生异(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。
执行BX跳转指令,将操作数的状态位(位0)设置为0时,可以使处理器从Thumb状态切换到ARM状态。
此外,当处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
THUMB指令集在功能上只是ARM指令集的一个子集,某些功能只能在ARM状态下执行,如CPSR和协处理器的访问.
进行异常响应时,处理器会自动进入ARM状态.
即使是一个单纯的THUMB应用系统,必须加一个汇编的交互头程序,因为系统总是自动从ARM开始启动
5.ARM体系结构所支持的最大寻址空间为4GB;
6.ARM处理器数据存储格式有哪几种?
各自的特点?
能否举例进行说明。
答:
ARM存储器有大端格式和小端。
大端格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中;小端格式则相反。
7.ARM处理器数据类型包括哪些?
各自特点。
答:
字(Word):
在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。
半字(Half-Word):
在ARM体系结构中,半字的长度为16位,而在8位/16位处理器体系结构中字的长度一致。
字节(Byte):
在ARM体系结构和8位/16位处理器体系结构中,字的长度均为8位。
由于一个字数据占用地址空间中的4个字节的地址,因此其地址总是4的倍数,在二进制计数中,字数据的地址低2位总为0,称为地址4字节对齐(地址的低两位为0);同理,半字需要2字节对齐(地址的最低位为0)
8.ARM处理器一共有几种中工作模式,分别是?
那种模式下,专业寄存器最多。
ARM处理器一共有7种运行模式,它们分别是:
用户模式(user)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、数据访问中止模式(abt)
系统模式(sys)和未定义指令中止模式(und)。
9.ARM处理器正常工作时,处于何种工作模式?
答:
用户模式(user)。
9.ARM处理器共有多少个32位寄存器,多少个为通用寄存器,多少个状态寄存器。
答:
共有37个32位寄存器,其中31个为通用寄存器,可用于累加操作,6个为状态寄存器。
10.在ARM指令中,R13寄存器常用?
R14寄存器被称为?
,R15寄存器?
答:
R13常用做堆栈指针,R14被称为子程序连接寄存器或连接寄存器。
R15寄存器用于保存程序计数器(PC)。
R15一般不作为通用寄存器使用
11.弄清楚CPSR每一位的含义,例如:
条件标志位N,Z,C,V;控制位;T标志位
条件码标志位:
N·Z·C·V
N:
Negative/LessThan
当用两个补码表示的带符号数进行运算时,N=1表示运算结果为负;N=0表示运算结果为正或者0
C:
Carry/Borrow/Extend
可以有4种方法设置C的值:
加法运算(包括反值比较指令CMN);当运算产生了进位时(无符号数溢出),C=1,否则C=0;
减法运算(包括比较指令CMP);当运算产生了借进位时(无符号数溢出),C=1,否则C=0;
对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
杜宇其他的非加/减运算指令,C的值通常不改变
V:
Overflow
可以有2种方法设置V的值:
对于加/减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
对于其他非加/减运算指令,V的值通常不改变。
Q:
在ARMv5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生溢出。
其他版本的处理器,Q标志位无定义。
控制位:
程序状态寄存器(PSR)的低8位(包括I·F·T和M【4:
0】)为控制位,当发生异常时,这些位可以被改变,如果处理器运行特权模式,这些位也可以有程序修改。
I·F:
中断禁止位I=1:
禁止IRQ中断F=0:
禁止FIQ中断
T标志位:
T标志位反映处理器的运行状态。
对于ARMv5及以上版本的T系列处理器中,当该位为1时,程序运行Thunm状态,否则运行于ARM状态。
对于ARMv5及以上版本的非T系列处理器中,当该位为1时,执行吓一跳指令以引起未定义指令异常;当该为为0时,表示运行于ARM状态。
运行模式位M【4:
0】M0·1M2·M3·M4是模式位,这些决定了处理器的运行模式
12.ARM指令的寻址方式。
(1)寄存器寻址;
(2)立即寻址;
(3)寄存器偏移寻址;(4)寄存器间接寻址;
(5)基址变址寻址;(6)多寄存器寻址;
(7)堆栈寻址;(8)块拷贝(复制)寻址;
(9)相对寻址。
13.掌握ARM指令集,常用指令的使用。
跳转指令:
BBL
数据处理指令:
MOVADDSUBANDORR
程序状态寄存器访问指令:
MRSMSR
加载/存储指令:
1)LDR指令LDRLDRBLDRH
2)STR指令STRSTRBSTRH
3)批量数据加载/存储指令LDMSTM
14.ARM伪指令(掌握教科书中提到的即可);汇编语言的编程;C语言编程,混合编程。
AREAENTRYENDIMPORTGET(或INCLUDE)
15.ADS集成开发环境的使用
第三章嵌入式硬件开发
1.如何进行ARM芯片的选型
2.最小系统的组成
S3C4510B最小系统包含处理器电路、电源电路、晶体振荡器电路、复位电路和存储器电路。
3.PXA270处理器的特点
QuickCapture为成像设备与无线设备提供接口,有助于改进图像质量以及降低产品整体成本,该项技术包括快速浏览、快速拍照和快速视频拍摄三种操作模式。
SpeedStep技术可以智能切换空闲、待机和深层睡眠三种低功耗状态,以提高动态电压管理性能,可在一定程度上缓解目前手持设备普遍存在电池续航能力较弱的现象,在保证CPU性能的情况下,最大限度地降低移动设备功耗。
Pentium'sMMX是一种基于IntelMMXT先进的多媒体指令集MMX技术,使得基于Bulverde的无线设备在拥有堪与PC相比的多媒体性能同时,能够最大限度减轻系统功耗,另一方面,也有助于软件开发商提供类似游戏、MPEG4视频文件以及语音识别等应用服务。
Intel同时还发表了配合PXA270使用的图形协处理器——2700G多媒体加速器。
这颗芯片可以以每秒30帧,的速度播放MPEG4或WMV的图像,使PXA270的多媒体性能达到极大提升。
第四章无操作系统的嵌入式软件开发
1.无操作系统嵌入式软件开发的流程。
2.什么是初始化程序?
bootloader的作用。
答:
初始化程序是系统加电后运行的第一段软件代码。
在嵌入式系统中,通常整个系统的加载启动任务就完全由BootLoader来完成。
简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软、硬件环境带到一个合适的状态,以便为调用应用程序或者操作系统内核准备好正确的环境。
3.PXA270处理器(重点掌握GPIO,UART,LCD);如:
GPIO的个数(121),UART个数(实验箱4个),分别是哪些,LCD屏的分类,FrameBuffer大小的计算,以及对这些接口的编程。
第五章有操作系统的嵌入式软件开发
1.有无操作系统嵌入式软件开发的流程
2.uCLinux操作系统的特点,与Linux操作系统的区别?
答:
uCLinux具有如下一些主要特点:
(1)通用的LinuxAPI
(2)uCLinuxkernel的大小小于512KB
(3)完整的TCP/IP协议堆栈(4)支持大量其他的网络协议
(5)支持各种文件系统,包括NFS、Ext2、romfs、JFFS、MS-DOS及FAT16/32
uCLinux与Linux具有如下几点区别:
(1)uCLinux针对不含有MMU的处理器进行了修改;
(2)为了减小编译后文件大小,uCLinux重写了函数库;(3)uCLinux的多进程管理通过vfork来实现,uCLinux只能支持vfork,没有使用Linux下的fork.
3.开发环境的建立
建立主机Linux平台
建立交叉开发环境的第一步,是建立一个Linux平台来对应用程序和内核进行编译,通常使用虚拟软件VMware和RedHatLinux来搭建一个在Windows环境下运行的Linux平台。
步骤如下:
1)在PC机上安装并运行VMware
2)安装RedHatLinux操作系统
4.常用Linux命令
ls列出当前目录下的文件名
改变工作目录cd
复制文件cp
移动或更改文件、目录名称mv
建立新目录mkdir
删除目录rmdir
删除文件rm
显示文件或目录大小命令du
显示当前路径命令pwd
备份文件命令tar
5.什么是交叉编译工具。
答:
交叉编译是一个平台上生成另外一个平台上的可执行代码。
使用交叉编译工具有很多种原因,有时是因为目标平台上不允许或不能够安装所需的编译器;有时是因为目标平台资源贫乏,无法运行所需编译器;有时是因为目标平台还没有建立,连操作系统都没有,根本无法运行编译器。
6.make,makefile
答:
makefile文件用来描述源程序之间的相互关系并自动维护编译工作。
Make是一个命令工具,它用来解释makefile中定义的指令或规则。
7.内核编译命令
步骤编号
命令
作用
1
Makedep
读取配置过程生成的配置文件,创建对应于配置的依赖关系树,从而决定哪些需要编译
2
Makeclean
删除以前编译内核时留下的各种文件,以避免出现一些错误
3
Makelib_only
编译库文件
4
Makeuse_only
编译用户应用程序
5
Makeromfs
建立romfs文件系统下的文件目录
6
Makeimage
生成可烧写到Flash并运行的image.rom内核映像文件
7
make
8.如何向内核添加应用程序?
答:
向内核添加应用程序主要由以下几个步骤构成:
编写程序源代码,添加应用程序至内核,编译内核,下载内核至Flash存储器。
其中添加应用程序至内核又包括了:
添加程序文件至内核源代码目录中,为程序文件建立make文件,修改内核make文件,修改内核配置文件config.in,修改内核rc文件设置程序为自启动。
练习一
1.已知R0=8,R2=5,执行MOVR0,R2,LSL#2后,r0=20,r2=5
2.已知r0=0x00000000,r1=0x00009000,
men32[0x00009000]=0x01010101,mem32[0x00009004]=0x02020202
问执行以下指令后,r1,r0的情况
1)ldrr0,[r1,#0x4]!
;r0=0x02020202,r1=0x00009004
2)Ldrr0,[r1,#0x4];r0=0x02020202,r1=0x00009000
3)Ldrr0,[r1],#0x4;r0=0x01010101,r1=0x00009004
3.已知men32[0x80018]=0x03,
men32[0x80014]=0x02,men32[0x80010]=0x01,r0=0x00080010,
r1=0x00000000,r2=0x00000000,r3=0x00000000
问执行ldmiar0!
{r1-r3}后,r0,r1,r2,r3的情况
r1=0x01,r2=0x02,r3=0x03,r0=0x80018
4.已知r1=0x00000002,r4=0x00000003,sp=0x00080014,
问执行stmfdsp!
{r1,r4}后,r1,r4,sp的情况
r1=0x00000002,r4=0x00000003,sp=0x000800010
5.已知r0=0x0,cpsr=0xd3,执行以下指令后r0的情况
Mrsr0,cpsr;r0=0xd3
Bicr0,r0,#0x80;r0=0x53