资源描述
第1章 嵌入式系统概述
1,什么是嵌入式系统 嵌入式系统的特点是什么
嵌入式系统概念:
(1) IEEE对嵌入式系统的定义:用于控制,监视或者辅助操作机器和设备的装置.
(2)一般定义:以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统.
嵌入式系统的特点:
(1) 专用的计算机系统
(2) 必须满足环境要求
(3) 必须能满足对象系统的控制要求
(4) 是集成计算机技术与各行业应用的集成系统
(5) 具有较长的生命周期
(6) 软件固化在非易失性存储器中
(7) 必须能满足实时性要求
(8) 需要专用开发环境和开发工具
2,简单分析几种嵌入式操作系统的主要特点,包括嵌入式Linux,Windows CE,uCOS II 及VxWorks.
(1)嵌入式Linux:有多个主流版本,根据应用需求,性能略有差别.μCLinux是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从0x1C处取出指令执行.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(Advanced System Bus)即先进的系统总线,用于连接高性能的系统模块.它支持突发数据传输.
APB(Advacned 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,空递减
(3)在指令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 R0,R1,#0x0F ;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) 执行R1=R2+R3加法操作,else执行下一条指令.
(5)EOR R0,R0,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,READONLY
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
(3)从a所指向的地址,拷贝20个32位数据到b所指向的地址
AREA DataCopy,CODE,READONLY
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,READONLY
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,READONLY
Array DCD 0x11
DCD 0x22
DCD 0x33
DCD 0
END
9,写一个汇编程序,求一个含64个带符号的16位数组组成的队列的平方和.
程序:
AREA SquareSum,CODE,READONLY
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,READONLY
Array DCD 0x00010002
DCD 0x00030004
END
第五章 嵌入式系统程序设计基础
4,简要说明EXPORT和IMPORT的使用方法.
答:EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其它的文件中引用.EXPORT可用GLOBAL代替.标号在程序中区分大小写.[WEAK]选项声明其它的同名标号优先于该标号被引用.
IMPORT伪指令用于通知编译器要使用的标号在其它的源文件中定义,但要在当前源文件中引用,而且无论当前源文件中是否引用该标号,该标号均会被加入到当前源文件的符号表中.
5,分析说明下段程序完成什么功能
AREA ChangeState,CODE,READONLY
CODE32
LDR R0,=Start+1
BX R0
CODE16
Start MOV R1,#1
END
解:程序功能实现程序的跳转并从ARM状态切换到Thumb状态.
6,设计一段程序完成数据块的复制,数据从源数据区snum 复制到目标数据区dnum.复制时,以8个字为单位进行.对于最后所剩不足8个字的数据,以字为单位进行复制.
程序:
AREA BlockDataCopy,CODE,READONLY
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,利用跳转表的思想编写一个汇编程序,实现当R0分别为0,1,2时完成跳转到3个不同的子程序.
程序:
AREA JumpTable,CODE,READONLY
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,简述软,硬件协同设计的过程.
⑴需求分析; ⑵软,硬件协同设计; ⑶软,硬件实现; ⑷软,硬件协同测试和验证
展开阅读全文