(完整版)嵌入式系统课后答案马维华
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 1 章嵌入式系统概述
1, 什么是嵌入式系统嵌入式系统的特点是什么
嵌入式系统概念:
(1) IEEE 对嵌入式系统的定义:用于控制,监视或者辅助操作机器和设备的装置.
(2) 一般定义: 以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能, 可靠性,成本,体积,功耗有严格要求的专用计算机系统.
嵌入式系统的特点:
(1) 专用的计算机系统
(2) 必须满足环境要求
(3) 必须能满足对象系统的控制要求
(4) 是集成计算机技术与各行业应用的集成系统
(5) 具有较长的生命周期
(6) 软件固化在非易失性存储器中
(7) 必须能满足实时性要求
(8) 需要专用开发环境和开发工具
2, 简单分析几种嵌入式操作系统的主要特点, 包括嵌入式Linux,Windows CE,uCOS II 及
VxWorks.
(1) 嵌入式Lin ux:有多个主流版本,根据应用需求,性能略有差别•卩CL in ux是Linux小型化后, 适合于没有MMU的微处理器芯片而裁剪成的操作系统,卩CLinuX呆持了传统Linux操作系统的主要特性,包括稳定,强大的网络和文件系统的支持,卩CLinux裁剪了大量的Linux内核以缩小尺寸,适合像512KB RAM,1MB Flash 这样小容量,低成本的嵌入式系统•RT_Linux 即能兼容通常的Linux,又能保证强实时性•
(2) Windows CE: 开发平台主要为WinCE Platform Builder,有时也用EVC 环境开发一些较上层的应用•WinCE 开发难度远低于嵌入式Linux,实时性略低,常用于手机,PDA 等手持设备中•(3) uCOS II: 结构小巧,抢先式的实时嵌入式操作系统,具有执行效率高,占用空间小,可移植性
强,实时性能好和可扩展性能等优点•主要用于小型嵌入式系统•
(4) VxWorks: 集成开发环境为Tornado,Vxworks 因出现稍早,实时性很强,并且内核可极微(最小8K),可靠性较高等•通常应用在通信设备等实时性要求较高的系统中•
第 2 章嵌入式处理器体系结构
1,具体说明ARM7TDMI 的含义,其中的T,D,M,I 分别代表什么
ARM7TDMI是ARM7处理器系列成员之一,采用V4T版本指令.T表示Thumb,该内核可从16位指令集切换到32位ARM指令集;D表示Debug,该内核中放置了用于调试的结构,支持
片内Debug调试;M表示Multiplier,支持位乘法;I表示Embedded ICE ,内含嵌入式ICE宏单元,支持片上断点和观察点•
2, ARMV4及以上版本的CPSR的哪一位反映了处理器的状态若CPSR=0x000000090,分析系
统状态•CPSR=0x000000090 表示当前处理器工作于ARM 状态,系统处于用户模式下•
CPSR的BIT5(T)反映当前处理器工作于ARM 状态或Thumb状态.
3,ARM 有哪几个异常类型,为什么FIQ 的服务程序地址要位于0x1C 在复位后,ARM 处理器处于何种模式,何种状态
ARM 的7 种异常类型:复位RESET 异常,未定义的指令UND 异常,软件中断SWI 异常,指
令预取中止PABT 异常,数据访问中止DABT 异常,外部中断请求IRQ 异常,快速中断请求FIQ 异常.在有快速中断发生时,CPU从Ox1C处取出指令执行.ARM复位后处于管理模式,工作于ARM 状态•
4, 为什么要使用Thumb模式,与ARM代码相比较,Thumb代码的两大优势是什么为了兼容数据总线宽度为16 位的应用系统,使用了ARM 指令系统的一个子集Thumb 指令系统.与等价的32位代码相比,Thumb 指令集在保留32位代码优势时,大大节省了系统的存储空间.
5, 说明AMBA,AHB,ASB 以及APB 的英文全称及其含义.
AMBA(Advanced Microcontroller Bus Architecture) 即先进的微控制器总线体系结构, 是ARM 公司公布的总线标准,这一标准定义了AHB,ASB,APB 及AMBA 共 4 种高性能的系统总线规范.
AHB(Advanced High_performance Bus) 先进的高性能总线,用于连接高性能系统组件或高宽带组件.它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟.
ASB(Advaneed System Bus)即先进的系统总线,用于连接高性能的系统模块•它支持突发数据传输. APB(Advaened Peripheral Bus) 即先进的外围接口总线,是一个简单的接口•它支持低性能的外围接口,APB 是用来连接系统的周边组件•
6, 简述MMU 从虚拟地址到物理地址的转换过程和方法• 虚拟地址到物理地址的转换过程:
当ARM 要访问存储器时,MMU 先查找TLB 中的虚拟地址表,如果ARM 的结构支持分开的地址TLB 和指令TLB, 那么它在取指令时使用指令TLB, 其它的所有访问类别使用数据TLB; 如果TLB 中没有虚拟地址的入口,则是转换表遍历硬件从存储在主存储器中的转换表中获取访问权限,一旦取到,这些信息放在转换TLB 中,它会放在1个没有使用的入口处或覆盖 1 个已有的入口•
虚拟地址到物理地址的转换方法:
(1) 确定1 级页表的基地址•
(2) 合成转换表的1 级描述符•
(3) 根据不同的1级描述符获取第2 级描述符地址并找出第2 级描述符•
(4) 将第2级页描述符指示的页基地址,与虚拟地址指示的页内偏移地址相加,得到相应页的物理地址,完成虚拟地址到物理地址的转换•
第三章典型嵌入式处理器
1,简述LPC2000 系列微控制器的内部有哪些重要的外设组件向量中断控制器,外部存储控制器,I2C 中行总线控制器,SPI 同步接口控制器,UART 串口控制器,定时器,AD 转换器,CAN 总线控制器,看门狗定时器等•
2,S3C44B0X 如何组织8,16,32 位的存储器,地址线如何连接
S3C44B0X 不同宽度的存储器地址线连接方法• 存储器地址引脚
8 位总线
16 位总线
32 位总线
A0
A0
A1
A2
A1
A1
A2
A3
A2
A2
A3
A4
A3
A3
A4
A5
Am-1
Am-1
Am-2
Am-3
3, 说明I2C 的数据有效性和起停条件.
数据有效性:当SCL信号为高电平时,SDA上的数据传输有效,传输时高位在前,低位在后,每个字节长度限制为位,而每次传送的字节总数没有限制.满足启动条件后的第一个字节应为地址
域.每一个字节有一个应答位.
起停条件:启动条件,在SCL信号保持高电平时SDA信号由高电平变为低电平;停止条件,要求在SCL 信号保持高电平时SDA 信号由低电平变为高电平.
4,简述AT91FR40162 处理器的特点.
AR91FR40162 采用ARM7TDMI 处理器核,内部集成了256KB 的片内SRAM 和1024K 字的16位Flash存储器,完全可编程的外部总线接口, 8个优先级且可以独立屏蔽的向量中断控制器,32个可编程的I/O 接口线,3通道16位定时/计数器,2个同步/异步收发器及可编程的看门狗定时器,能完成全静态操作,具有先进的省电特性.
第四章嵌入式处理器指令系统
1,填空题
(1) 在源操作数为立即数时,应在前加#作为前缀,在#后加0x 或&表示十六进制数,在#后加%表示二进制数,#后加0d 或默认表示十进制数.
(2) 根据堆栈指针指向的数据位置不同,堆栈可分为满堆栈和空堆栈.
(3) 用一条指令完成人条件加法运算,并更新CPSR中的条件码,R1+R2->R3 ADDS R3,R1,R2.
(4) 在程序执行过程中,是通过寄存器R15 控制程序的运行的.
(5) 转移指令的跳转范围是-32MB-32MB.
2,选择题
(2) 堆栈随着存储器地址的增大而向上增长,基址寄存指向存贮有效数据的最高地址或者说指
向第一个要读出的数据位置,是(A)堆栈.
A,满递增B,空递增C,满递减D,空递减
⑶在指令LDR R0,[R1,#4]!执行后,R1中的值为(C).
A,R1 不变B,R1=R1+1 C,R1=R1+4 D,R1=4
3, 说明下列指令完成的功能
(1) ADD R0,R1,R3,LSL #2 ;R0=R1+4R2
(2) ANDNES RO,R1,#OxOF ;if (CPSR 寄存器中Z=0) R1的高28位清零后送寄存器R0并更新CPSR寄存器,else执行下一条指令.
(3) LDRB R0,[R1,R2,LSR#2];把存储器地址为(R1+R2>>2)的字节数据加载到R0,R0的高24
位清零.
(4) ADCHI R1,R2,R3; if(CPSR 寄存器中Z=0并且C=1)执行R仁R2+R3加法操作,else执行下一条指令.
(5) E0R RO,RO,R3,ROR R4; R3寄存器中的内容根据R4寄存器中的内容循环右移后与R0寄存器进行逻辑异或操作后,其结果存在R0 寄存器内.
(7) MLA R0,R1,R2,R3; R0=R1 R2+R3 MLA 是32位乘加指令,运算结果的高32位自动丢掉.
(8) LDR R1,[R0,-R5,LSL #4];将存储器地址为R0-16R5的字数据加载到寄存器R1中•
4, 用汇编语言实现下列功能的程序段,令R1=a,R2=b.
(1) if(a!=b)&a-b>5)) a=a+b
CMP R1,R2
BEQ Next
ADD R3,R2,#5
CMP R1,R3
BLS Next
ADD R1,R1,R2
Next B Next
(2) while(a!=0)
{
b=b+b*2;
a--;
}
AREA TestWhile,CODE,READONL Y
a equ 5
b equ 1
ENTRY
MOV R1,#a
MOV R2,#b
LOOPCTL CMP R1,#0
ADDNE R2,R2,R2,LSL#1
SUBNES R1,R1,#1
BNE LOOPCTL
END
⑶从a所指向的地址,拷贝20个32位数据到b所指向的地址
AREA DataCopy,CODE,READONL Y
ENTRY
LDR R0,=SrcData
LDR R1,=DstData
MOV R2,#20
LOOPCTL LDR R3,[R0],#4
STR R3,[R1],#4
SUBS R2,R2,#1
BNE LOOPCTL
Wait B Wait
AREA DataDef, DATA,READWRITE
SrcData DCD 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
DstData SPACE 4*10
END
6,试比较TST 与ANDS,CMP 与SUBS,MOV 与MVN 指令的区别.
(1) TST 指令把两个操作数进行按位的与操作,并根据运
算结果更新CPSR 中的条件标志位的
值.该指令通常用来检测是否设置了特定的位,一般操作数 1 是要测试的数据,而操作数2是一
个位掩码.
ANDS 指令用于在两个操作数上进行逻辑与运算,并把结果放到目的寄存器中,操作数1 应是
一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或是1个立即数.该指令常用于设置操作数 1 的某些位.
TST和ANDS两条指令都影响CPSR寄存器;TST指令不改变参与运算的数据,而ANDS指令对目的寄存器进行更新.
(2) CMP指令用于把2个操作数进行比较,同时更新CPSR中条件标志位的值•该指令进行一次
减法运算,但不保存运算结果,只更改条件标志位.标志位表示的是操作数 1 和操作数 2 的关
系(大,小,相等)•
SUBS 指令用于把操作数1 送去操作数2,并将结果存放到目的寄存器中•操作数1 应是一个
寄存器,操作数2可以是一个寄存器,被移位的寄存器,或是一个立即数•指令影响CPSR值• CMP 和SUBS 指令都影响CPSR 寄存器;CMP 指令不保存运算结果,而SUBS 指令可以保存运算结果,并且减数和被减数的值也不发生变化•
(3) MOV 指令将一个寄存器,被移位的寄存器或一个立即数的值装入目的寄存器内,可以指定相同的寄存器实现NOP 的效果,还可以移位一个寄存器•
MVN 指令与MOV 指令的不同之处是在传送数据之前先按位取反,即把一个被取反的值传送到目的寄存器中•
8,写一段ARM汇编程序:循环累加队列中的所有数据,直到碰到零值位置,结果放在R4•源程序末尾队列如下:
Array:
DCD 0x11
DCD 0x22
DCD 0x33
DCD 0
R0 指向队列头,ADR R0,ARRAY •
使用命令LDR R1,[R0],#4来装载,累加至R4,循环直到R1为0,用死循环来停止•
程序:
AREA Cond_Sum,CODE,READONL Y
ENTRY
LDR R0,=Array
MOV R4,#0
LooPCtl LDR R1,[R0],#4
CMP R1,#0
ADDNE R4,R4,R1
BNE LooPCtl
Wait B Wait
AREA SrcData,CODE,READONL Y
Array DCD 0x11
DCD 0x22
DCD 0x33
DCD 0
END
9,写一个汇编程序,求一个含64个带符号的16位数组组成的队列的平方和•
程序:
AREA SquareSum,CODE,READONL Y
ENTRY
LDR R0,=Array
MOV R3,#4
MOV R4,#0
LooPCtl LDRH R1,[R0],#2
MLA R4,R1,R1,R4
SUBS R3,R3,#1
BNE LooPCtl
NOP
AREA SrcData,CODE,READONL Y
Array DCD 0x00010002
DCD 0x00030004
END
第五章嵌入式系统程序设计基础
4, 简要说明EXPORT和IMPORT的使用方法.
答:EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其它的文件中引
用.EXPORT可用GLOBAL 代替•标号在程序中区分大小写.[WEAK]选项声明其它的同名标号优先于该标号被引用.
IMPORT伪指令用于通知编译器要使用的标号在其它的源文件中定义,但要在当前源文件中引用,而且无论当前源文件中是否引用该标号,该标号均会被加入到当前源文件的符号表中.
5, 分析说明下段程序完成什么功能
AREA ChangeState,CODE,READONL Y
CODE32
LDR R0,=Start+1
BX R0
CODE16
Start MOV R1,#1
END
解:程序功能实现程序的跳转并从ARM状态切换到Thumb状态.
6, 设计一段程序完成数据块的复制,数据从源数据区snum|复制到目标数据区dnum .复制时,
以8个字为单位进行.对于最后所剩不足8个字的数据,以字为单位进行复制.
程序:
AREA BlockDataCopy,CODE,READONL Y
num EQU 20
ENTRY
Start LDR R0,=snum
LDR R1,=dnum
MOV R2,#num
MOV R13,#400
BlockCopy MOVS R3,R2,LSR#3
BEQ CopyWords
STMFD R13!,{R4-R11}
OctCopy LDMIA R0!,{R4-R11}
STMIA R1!,{R4-R11}
SUBS R3,R3,#1
BNE OctCopy
LDMFD R13!,{R4-R11}
CopyWords ANDS R2,R2,#7
BEQ Stop
WordsCopy LDR R3,[R0],#4
STR R3,[R0],#4
SUBS R2,R2,#1
BNE WordsCopy
Stop B Stop
AREA BlockData, DATA,READWRITE
snum DCD 1,2,3,4,5,6,7,8,9,10,11
DCD 12,13,14,15,16,17,18,19,20
dnum SPACE 20*4
END
7, 利用跳转表的思想编写一个汇编程序,实现
3 个不同的子当R0 分别为0,1,2 时完成跳转到
程序.
程序:
AREA JumpTable,CODE,READONL Y
num EQU 3
ENTRY
Start MOV R0,#1
MOV R1,#3
MOV R2,#2
BL JumpTblCtl
Stop B Stop
JumpTblCtl CMP R0,#num
MOVHS PC,LR
ADR R3,JumpTblEntry
LDR PC,[R3,R0,LSL#2]
JumpTblEntry DCD Subroutine1
DCD Subroutine2
DCD Subroutine3
Subroutine1 MOV R3,#0x55
MOV PC,LR
Subroutine2 MOV R4,#0xAA
MOV PC,LR
Subroutine3 MOV R5,#0x5A
MOV PC,LR
END
第六章嵌入式操作系统
1, 简述卩CLinux的特点,说明其主要应用的环境.
答:卩CLinux主要是为控制领域定做的LINUX版本其设计思想就是对标准LINUX内核进行
裁剪,去除虚拟管理部分代码,并且对内存分配进行优化,以达到提高系统运行效率的目的. 特点:
(1) 包含通用LINUX API 函数.
(2) 内核体积小于512KB
(3) 内核及文件系统体积小于900KB
(4) 具有完整的TCP/IP 协议栈
(5) 支持多种文件系统.
2, 简述CLinux的移植过程.
答:(1)配置内核
(2) 编译内核
(3) 下载,运行,调试内核
第七章嵌入式系统的BootLoader
1, 简述Boot Loader 与嵌入式系统的关系.
Boot Loader 是在操作系统内核或用户应用程序运行之前运行的一段小程序.其作用为:初始
化硬件设备,建立内存空间的映射图,将系统的软件件环境带到一个合适的状态,为最终调用操作系统内核或用户应用程序准备好正确的环境.
2, Boot Loader 的主要功能有哪些
答:初始化硬件设备,检测系统内存映射,将内核映像和根文件系统从Flash 传到RAM 空间,并
为内核设置启动参数,最后调用内核.
3, Boot Loader 分为几个阶段,各阶段主要完成什么功能
答:Boot Loader通常分为2个阶段.阶段1完成基本硬件的初始化加载阶段2的RAM空间, 复制阶段2到RAM,设置堆栈指针,跳转到阶段2的C程序入口点.在阶段2初始化阶段2要使用的硬件设备,检测系统内存映射,加载内核映像和根文件系统映像,调用内核.
第八章嵌入式系统设计
1, 简述嵌入式系统设计的一般步骤.
答:⑴需求分析;⑵体系结构设计;⑶硬件,软件,执行机构设计;⑷系统集成
⑸系统测试
2, 简述软,硬件协同设计的过程.
⑴需求分析;⑵软,硬件协同设计;⑶软,硬件实现;⑷软,硬件协同测试和验证。