嵌入式实验思考题10页文档资料.docx
《嵌入式实验思考题10页文档资料.docx》由会员分享,可在线阅读,更多相关《嵌入式实验思考题10页文档资料.docx(19页珍藏版)》请在冰点文库上搜索。
嵌入式实验思考题10页文档资料
思考题
要练说,得练听。
听是说的前提,听得准确,才有条件正确模仿,才能不断地掌握高一级水平的语言。
我在教学中,注意听说结合,训练幼儿听的能力,课堂上,我特别重视教师的语言,我对幼儿说话,注意声音清楚,高低起伏,抑扬有致,富有吸引力,这样能引起幼儿的注意。
当我发现有的幼儿不专心听别人发言时,就随时表扬那些静听的幼儿,或是让他重复别人说过的内容,抓住教育时机,要求他们专心听,用心记。
平时我还通过各种趣味活动,培养幼儿边听边记,边听边想,边听边说的能力,如听词对词,听词句说意思,听句子辩正误,听故事讲述故事,听谜语猜谜底,听智力故事,动脑筋,出主意,听儿歌上句,接儿歌下句等,这样幼儿学得生动活泼,轻松愉快,既训练了听的能力,强化了记忆,又发展了思维,为说打下了基础。
1、如何强行重新编译ADS1.2工程的所有文件?
要练说,得练看。
看与说是统一的,看不准就难以说得好。
练看,就是训练幼儿的观察能力,扩大幼儿的认知范围,让幼儿在观察事物、观察生活、观察自然的活动中,积累词汇、理解词义、发展语言。
在运用观察法组织活动时,我着眼观察于观察对象的选择,着力于观察过程的指导,着重于幼儿观察能力和语言表达能力的提高。
答:
Project->RemoveObjectCode...删除工程中的*.obj文件
教师范读的是阅读教学中不可缺少的部分,我常采用范读,让幼儿学习、模仿。
如领读,我读一句,让幼儿读一句,边读边记;第二通读,我大声读,我大声读,幼儿小声读,边学边仿;第三赏读,我借用录好配朗读磁带,一边放录音,一边幼儿反复倾听,在反复倾听中体验、品味。
2、LDR伪指令与LDR加载指令的功能和应用有何区别,举例说明?
答:
LDR加载指令用于从内存中读取数据到寄存器中,例如:
LDRr1,[r3]
LDR伪指令用于加载32位的立即数或一个地址值到指定的寄存器中,例如:
LDRr0,#0xff123456
3、在AXD调试时如何复位程序?
答:
File->ReloadCurrentImage重新加载映象文件
4、指令MOVR0,#0x12345678是否正确?
为什么?
如何解决?
答:
不正确。
因为ARM是RISC结构,数据从内存到CPU之间的移动只能通过LDR/STR指令完成,而MOV只能在寄存器之间移动数据,不能干这个活,因此正确的写法是:
LDRr0,#0X12345678另外,还可以用LDR伪指令,后面跟一个“=”,LDRr0,=0x12345678,LDR伪指令和MOV是比较相似的,只不过MOV命令限制了立即数的长度为8为,也就是不要超过512,而LDR没有限制。
如果LDR后面的立即数没有超过8位,那么计算机在处理的过程中,该LDR伪指令会被转化成MOV来执行的。
5、使用MOV、ADD指令实现:
R8=R3=X+Y且X与Y是8位图数据
答:
xequ1
yequ2
movr0,#x
movr1,#y
addr3,r0,r1
movr8,r3
6、使用MOV、MVN、SUB指令实现:
R5=0x5FFFFFF8-R8*8(乘法除法用移位解决)
答:
MVNR0,#0xA0000007
;MOVR8,#0x1
SUBR5,R0,R8,LSL#3
7、使用CMP指令判断(5*Y/2)>(2*X)吗?
若大于则R5=R5&0xFFFF0000,否则R5=R5|0x000000FF
答:
XEQU1//顶格写5*Y-->ADDR2,R1,R1,LSL#2//R1=Y,Y+4Y=5Y
YEQU2
START
MOVR1,#Y
MOVR2,#X
ADDR3,R1,R1,LSL#2
MOVR4,R3,LSR#1
MOVR6,R2,LSL#1
CMPR4,R6
LDRR7,=0xFFFF0000
ANDGTR5,R5,R7
ORRLER5,R5,0x000000FF
8、如何实现64位加法运算(R6、R5)=(R6、R5)+(R3、R2)
答:
ADDSR5,R5,R2
ADCR6,R6,R3
9、如何使用ARM汇编指令实现结构化程序编程_1
if(x>y)z=100;
elsez=50;
答:
XEQU1
YEQU2
ZEQU0
MOVR0,#X
MOVR1,#Y
MOVR2,#Z
CMPR0,R1
MOVGTR2,#100
MOVR2,#50
10、如何使用ARM汇编指令实现结构化程序编程_2
for(i=0;i<10;i++)
x++;
//i、x均为无符号整数
答:
xequ0
iequ0
areatest,code,readonly
entry
start
movr1,#x
movr0,#i;控制循环
loopcmpr0,#10
addccr1,r1,#1
addccr0,r0,#1
bccloop
b.
end
11、如何使用ARM汇编指令实现结构化程序编程_3
while(x<=y)
x*=2;
//x、y均为无符号整数
答:
xequ2
yequ32
areatest,code,readonly
entry
start
movr0,#x
movr1,#y
loopcmpr0,r1
movler0,r0,lsl#1
bleloop
b.
end
12、如何使用ARM汇编指令实现结构化程序编程_4
do
x--;
}while(x>0);
//x为无符号整数
13、如何使用ARM汇编指令实现结构化程序编程_5
switch(key&0x0F)
case0:
case2:
case3:
x=key+y;
break;
case5:
x=key-y;
break;
case7:
x=key*y
break;
default:
x=168;
break;
//x、y、key均为无符号整数
14、在用户模式或系统模式下读取SPSR寄存器会有何结果?
答:
除了用户模式和系统模式,其余模式都有自己的一个私有的SPSR寄存器,用来保存状态切换之前的运行状态,之所以用户模式和系统模式没有SPSR是因为,通常CPU大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存用户模式下的状态,当切换回原先模式时,直接回复SPSR的值到CPSR就可以了,因此,用户模式和系统模式下不需要SPSR,所以用户模式和系统模式不可以直接读取SPSR,可以利用中断,如果强行读取的话,会出现不可预期的结果。
15、在非特权模式下能否对CPSR寄存器设置?
能否读取CPSR寄存器的值?
答:
因为我们不可以直接修改CPSR的状态标志为,只能通过SPSR来修改CPSR,在异常模式中,程序状态寄存器SPSR可以被访问,此时处于特权模式,因此在非特权模式下,不可以对SPSR进行修改,但可以读取CPSR的值!
16、在非特权模式下如何使能/禁止IRQ或FIQ中断?
答:
在中断初始化的时候设置CPSR寄存器I-bit和F-bit位为1,例如:
Msrcpsr_c,#0xdf
17、程序中能不能通过MSR指令直接修改CPSR中的T位来实现ARM状态/Thumb状态的切换?
答:
不能通过MSR直接修改CPSR中T位来实现状态的切换,必须使用BX指令完成处理器运行状态的切换,因为BX指令属于切换指令,他会打断流水线的状态,以实现处理器状态的切换。
18、使用TST指令测试R5的bit1是否为1,若是则将bit2位清零(使用BIC指令)答:
TST指令为位测试指令,而BIC指令为位清除指令,TST指令相当于“&”,
TSTR5,#0X01
BICR5,#0X10
18、使用TST指令测试R5的bit1是否为1,若是则将bit2位清零(使用BIC指令)
答:
TST指令为位测试指令,而BIC指令为位清除指令,TST指令相当于“&”,
TSTR5,#0X01
BICR5,#0X10
19、如何控制蜂鸣器报警速度?
**--------------FileInfo--------------------------------------------------
**Filename:
main.c
**LastmodifiedDate:
2019-04-09
**LastVersion:
1.0
**Descriptions:
Themain()functionexampletemplate
**Createdby:
lxliu
**Createddate:
2019-04-09
**Version:
1.0
#include"config.h"
#defineBEEP1<<7//P0.7控制蜂鸣器,低电平蜂鸣
**函数名称:
DelayNS()
**函数功能:
长软件延时
**入口参数:
dly延时控制值,值越大,延时越长
**出口参数:
无
voidDelayNS(uint32dly)
uint32i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
**函数名称:
main()
**函数功能:
用P0.7控制BEEP,让蜂鸣器蜂鸣
**调试说明:
需将跳线JP11和BEEP短接
intmain(void)
{PINSEL0=0x00000000;//设置P0口为GPIO功能
IO0DIR=BEEP;//设置P0.7为输出
while
(1)
{IO0SET=BEEP;//蜂鸣器停止蜂鸣
DelayNS(10);//延时
IO0CLR=BEEP;//蜂鸣器蜂鸣
DelayNS(100);//延时
return0;
嵌入式系统基础复习题
一、简答题
1、什么是嵌入式系统?
嵌入到对象体系中的专用计算机应用系统。
2、嵌入式系统的3个基本特点?
嵌入性、专用性、计算机
3、什么是嵌入式处理器,嵌入式处理器可以分为几大类?
嵌入式处理器是为了完成特殊的应用而设计的特殊目的的处理器。
分为嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统(SOC)。
4、广泛使用的三种类型的操作系统?
多道批处理操作系统、分时操作系统以及实时操作系统。
5、常见的4种嵌入式操作系统?
嵌入式Linux、WinCE、VxWorks、μC/OS-II
6、ARM是什么样的公司?
它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理器。
特点是只设计芯片,而不生产。
它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。
7、什么是RISC?
什么是CISC?
RISC是精简指令集计算机的缩写。
CISC是复杂指令集计算机的缩写。
8、举出2个ARM公司当前应用比较多的ARM处理器核?
ARM7系列、ARM9系列、ARM10系列、ARM11系列、intel的Xscale系列和MPCore系列。
9、ARM7TDMI中的T、D、S、I分别表示什么含义?
T:
支持高密度16位的Thumb指令集
D:
支持片上调试
S:
ARM7TDMI的可综合(synthesizable)版本(软核)
I:
支持EmbededICE观察硬件
M:
支持64位乘法
10、ARM7TDMI处理器采用什么样的体系结构,其可寻址地址空间多大?
ARM处理器使用冯.诺依曼结构
使用单个平面的232个8位字节地址空间。
地址空间可以看作是包含230个32位字,或231个16位半字。
11、ARM7TDMI处理器采用几级流水线处理,使用何种存储器编址方式?
ARM7TDMI处理器采用三级流水线。
ARM处理器将存储器看做是一个从0开始的线性递增的字节集合。
12、ARM处理器模式和ARM处理器状态有什么区别?
ARM处理器模式指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。
ARM处理器状态指ARM状态和Thumb状态
ARM两种处理器状态下均有上述7种模式。
13、ARM7TDMI内部寄存器特点?
分别为31个通用32位寄存器和6个状态寄存器。
它们不能在同一使劲同时被访问,对其的访问取决于处理器状态和处理器模式。
14、ARM7TDMI有几种寻址方式?
寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址。
15、ARM7的内部寄存器R13、R14、R15的主要功能和作用?
R13:
堆栈指针,用于保存堆栈的出入口处地址、保存待使用寄存器的内容
R14:
连接寄存器,当使用BL指令调用子程序时,返回地址将自动存入14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址;其他时候作为通用寄存器。
R15:
程序寄存器,总是指向正在“取指”的指令
16、请说明MOV指令与LDR加载指令的区别和用途?
LDR的操作数既可以来源于寄存器也可以来源于存储器,MOV的操作数能来源于寄存器。
。
LDR指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;MOV指令将8位立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作。
17、LPC2000系列器件有几种常见的封装形式和其封装特点?
常见的封装有64脚封装,144脚封装
功耗低,有多个32位定时器,多达9个外部中断,16K字节静态RAM,1/128/256k字节片Flash存储器,128为宽度接口加速器,4路10位ADC或8路10位ADC(64脚和144脚封装),46或76~112个GPIO(64脚和144脚封装)。
18、简要说明一下LPC2000系列器件片内存储器的特点?
片内存储器分为片内Flash和片内静态RAM。
片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,特有的存储器加速功能,可以将程序直接放在Flash上运行。
SRAM支持8位、16位和32位的读写访问。
19、为什么要进行存储器重映射?
存储器重映射是为了实现引导块和异常向量表地址的固定。
重映射引导块,有利于用户调用其中的某些程序,增加代码的可移植性;
异常向量表重映射为了能让ARM内核通过访问0x0000~0x003F地址访问到其他存储区域的向量表。
20、LPC2000系列ARM7微控制器对向量表有什么要求(向量表中的保留字)?
向量表中有一个空隙以确保软件能与不同的ARM结构兼容;表中异常入口地址处放置的是跳转指令,已转向中断子程序。
FIQ地址要放在向量表的最后;
21、ARM7微控制器内FLASH是多少位宽度的接口?
它是通过哪个功能模块来提高FLASH的访问速度?
FLASH是128位宽度的接口,通过存储器加速模块提高其访问速度。
22、FIQ、IRQ有什么不同?
向量IRQ和非向量IRQ有什么不同?
FIQ是快速中断,具有最高优先级,中断处理转入FIQ模式;IRQ是普通中断,优先级低于FIQ,中断处理转入IRQ模式。
向量IRQ支持16个向量IRQ中断,16个优先级,能为每个中断源设置服务程序地址;非向量IRQ支持一个非向量IRQ中断,所有中断都共用一个相同的服务程序入口地址。
23、LPC2000系列芯片共有几个外接中断输入?
它们是FIQ,还是IRQ?
共有4个外接中断输入,它们既可以是IFQ也可以是IRQ。
24、LPC2000系列芯片常用的开发工具?
ADS、IAR、JATG、ISP
25、什么是嵌入式处理器的最小系统?
最小系统是指提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成的系统。
26、嵌入式处理器的最小系统包含那些基本电路?
最小系统包含时钟系统、供电系统、复位及其配置系统、存储器系统(可选)、调试测试系统(可选)。
基本电路包括:
末级电源电路、前级电源电路、时钟电路、复位电路、程序存储器(可选)、调试接口电路(可选)。
二、问答题
1、ARM7TDMI支持哪几种指令集,各有什么特点?
支持ARM指令集和Thumb指令集两种。
ARM指令集:
指令32位,效率高,代码密度低,所有ARM指令都是可以有条件执行的。
Thumb指令集:
指令16位,代码密度较高,Thumb指令仅有一条指令具备条件执行功能。
保持ARM的大多数性能上的优势,是ARM指令集的子集。
2、ARM7TDMI有几种处理器模式,简单介绍该几种模式的工作特点?
ARM7TDMI有7种处理器模式。
用户模式:
正常程序运行的工作模式,不能直接从用户模式切换到其它模式
系统模式:
用于支持操作系统的特权任务等,可以直接切换到其它模式
快中断模式:
用于快速中断处理,支持高速数据传输及通道处理,只有在FIQ异常响应时,才进入此模式。
中断模式:
用于通用中断处理,只有在IRQ异常响应时,才进入此模式。
管理模式:
供操作系统使用的一种保护模式,只有在系统复位和软件中断响应时,才进入此模式。
中止模式:
用于虚拟内存和/或存储器保护。
未定义模式:
支持软件仿真的硬件协处理器,只有在未定义指令异常响应时,才进入此模式。
3、什么是引导程序?
什么是启动程序?
两者有什么区别?
引导程序是ARM微处理器在上电或复位后首先运行BootBlock中的一段代码;启动程序是在运行引导程序后,正式运行用户main函数之前,还需要运行一段代码
引导程序由芯片厂商固化在芯片中,功能包括:
判断运行哪个存储器上的程序、检查用户代码是否有效、判断芯片是否被加密、芯片的在应用编程(IAP)以及在系统编程功能(ISP)。
启动程序由用户添加,功能包括:
向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、外围初始化,地址重映射等操作。
4、简要描述LPC2000系列芯片内部GPIO的功能特点?
(1)可以独立控制每个GPIO口的方向;
(2)可以独立设置每个GPIO的输出状态;
(3)所有GPIO口在复位后默认位输入状态。
5、试说明LPC2000系列芯片的引脚设置寄存器PINSEL0、PINSEL1、PINSEL2的具体功能?
PINSEL0控制引脚P0.0~P0.15的连接状态,每两位控制一个引脚。
PINSEL1控制引脚P0.16~P0.31的连接状态,每两位控制一个引脚。
PINSEL2控制P1端口和P2端口。
6、试说明LPC2000系列芯片的存储器映射的结构特点?
(看图回答问题4)
(1)0GB向上为128KB或256KB的片内非易失性存储器;
(2)1GB向上为16KB片内静态RAM;
(3)2GB向下为BootBlock重映射;
(4)3.5GB向上为VPB外设;
(5)4GB向下为AHB外设。
7、试说明LPC2000系列芯片内部向量中断控制器(VIC)的功能特点?
(看图回答问题5)
(1)可以管理最多32个中断请求,可将其编程为FIQ、向量IRQ或非向量IRQ;
(2)有16个向量IRQ中断;
(3)16个优先级,可动态分配优先级;
(4)可产生软件中断。
8、试说明LPC2000系列芯片的向量中断和非向量中断的功能特点?
向量中断支持16个向量IRQ中断;16个优先级;每个优先级指定一个服务程序入口地址。
非向量中断支持1个非向量IRQ中断;所有非向量IRQ的入口地址都相同。
9、试说明LPC2000系列芯片内部定时器的功能特点?
(看图回答问题6)
①各含有一个可编程32位预分频器;
②具有4路捕获通道,当输入信号跳变时可取得定时器的瞬时值,也可选择使捕获事件产生中断。
③有4个32位匹配寄存器,匹配时动作有3种:
定时器继续工作,可选择产生中断;停止定时器,可选择中断;复位定时器,可选择中断
④有4个对应于匹配寄存器的外部输出,匹配时输出有4种:
设置为低电平;设置为高电平;翻转;无动作。
10、简要描述LPC2000系列芯片内部定时器的预分频功能,匹配功能,捕获功能?
预分频功能:
通过设置某个常量来控制pclk(定时器的时钟源)的分频。
匹配功能:
当定时器值等于预设的匹配值时,从引脚输出特定的信号。
捕获功能:
如果输入信号满足设定的要求,将触发捕获动作,将定时器的计数值保存到捕获寄存器中。
11、试说明LPC2000系列芯片内部都具有那些外设接口,及其特点?
12、试比较说明JATG工具和ISP工具的异同点?
两者都可以将程序下载到开发板上。
JATG通过计算机的并口和开发板的JATG口下载程序;ISP通过计算机的串口和开发板的UART0下载程序。
13、看门狗定时器控制寄存器(WTCON)
寄存器
地址
读/写
描述
初始值
WTCON
0x53000000
读/写
看门狗定控制寄存器
0x8021
WTCON的标识位
WTCON
Bit
描述
初始值
PrescalerValue
[15:
8]
预装比例值,有效范围值为0~255
0x80
Reserved
[7:
6]
保留
00
WatchdogTimer
[5]
使能和禁止看门狗定时器
0=禁止看门狗定时器
1=使能看门狗定时器
0
ClockSelect
[4:
3]
这两位决定时钟分频因素
00:
1/1601:
1/32
10:
1/6411:
1/128
00
InterruptGeneration
[2]
中断的禁止和使能
0=禁止中断产生
1=使能中断产生
0
Reserved
[1]
保留
0
Reset
Enable/Disable
[0]
禁止很使能看门狗复位信号的输出
1=看门狗复位信号使能
0=看门狗复位信号禁止
1
看门狗定时器数据寄存器(WTDAT)
寄存器
地址
读/写
描述
初始值
WTDAT
0x53000004
读/写
看门狗数据寄存器
0x8000
看门狗计数寄存器(WTCNT)
寄存器
地址
读/写
描述
初始值
WTCNT
0x53000008
读/写
看门狗计数器当前值
0x8000
#definerWTCON(*(volatileunsigned*)0x53000000)//第1行
#definerWTDAT(*(volatileunsigned*)0x53000004)//第2行
#definerWTCNT(*(volatileunsigned*)0x53000008)//第3行
voidwatchdog_test(void)
rWTCON=((PCLK/1000000-1)<<8)|(3<<3)|(1<<2);//第4行
rWTDAT=7812;//第5行
rWTCNT=7812;//第6行
rWTCON|=(1<<5);//第7行
第1-3行:
定义看门狗控制寄存器、数据寄存器和计数寄存器为rWTCON、rWTDAT和r