聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 嵌入式-

嵌入式-

时间:    下载该word文档

5
6
9 11

14
15
16
18
12 19

21
22
23


27 29

30
33
34 39

41 43 44
45
46
47
51 55

59 48 49


60
61 62
63
64 65 66
67 68 69
70
71 72

73 74
75 76 77

78
80 81 82
84 85
86 87
88
89 90
91
92
95
97

96
简答题部分
1 堆栈有几种基本类型?P55 P65(回答的时候说明堆栈有向下生长、向上生长,满堆栈、空堆栈,4种不同组合方式,指令LDMSTM4种用于堆栈的模式FDEDFAEA

2 ARM的数据传输类指令中,是什么原因限制了指令中立即数的格式?以下哪些立即数是合法的?①0x61000001 0x61000008 0x0004A100 0x001B7000指令MOV R0 #12345678是否正确,如果不正确采用伪指令ADR如何实现?
311211870rotimmed_8×2循环右移逻辑

立即数由18位的常数循环移位偶数位得到,合法常量:0x3FC00x600000002000XF00000010x25C0XE000000A非法常量:0x1FE5110xFFFF0x10100XF00000100x9010x1320xA0000030 指令MOV R0 #12345678不正确,采用伪指令ADR ADR
R0,DISP_TAB ……
DISP_TAB DCD #12345678
3 请指出下列指令中各源、目的操作数分别采用何种寻址P53书上出现的汇编指令都有可能考到
MOV R0 , R1 , ROR #8 目的操作数使用寄存器寻址,源操作数使用寄存器移位寻址
LDMIA R0 , {R2-R6} 目的操作数使用寄存器寻址,源操作数使用多寄存器寻址 MOV R0 , #0xFC0 目的操作数使用寄存器寻址,源操作数使用立即寻址 LDR R0 , [R1 , #2] 目的操作数使用寄存器寻址,源操作数使用基址寻址

4 给出下面指令加注解 书上指令
BLLT ABC;LT执行条件,有符号数小于,BL转移子程序,当有符号数小于时转移到子程序ABC CMN R0, #6400;CMN是负数比较指令,标志NZCV<- R0+#6400 MOVS R0 , R0 , ASR R3;R0算术右移R3中数据,同时影响CPSR寄存器 P53LSL LSR ASR ROR RRX弄清楚
EORS R0R0R3 ROR R6;ROR循环右移,R6移动位数,EOR异或,R0与循环右移后的R3异或操作,结果放在R0中,S表示影响CPSR寄存器
BICNES R8 , R10 , R0 , RRX; RRX带扩展的循环右移,操作数右移1位,高端空出位用原C标志填充,BIC位清除指令,R8<- R10 & (~R0移位后的结果NE表示不等于0才执行指令,S表示影响CPSR寄存器 SUBS
R8 , R6 , #240 ADCHI R11 , R0 , R3;HI表示指令执行条件无符号数大于,R0R3带进位相加,结果放R11
STMDB R1!,{R3-R6R11R12}; R3-R6R11R12寄存器内容存储在内存中,起始地
址在R1中,DB是每次传送前地址减4R1的值会发生变化 SUB R11,R12,R3,ASR
#5 BL DELAY ;转移子程序DELAY B WAITA ;跳转到WAITA标号处执行 B 0x1234 ;跳转到绝对地址0x1234处执行 SWP R1,R1,[R0] ;R1中内容与R0所指示的内存单元交换
R0 SWPB R1,R2,[R0] ;R0指示的存储字放入R1中,再将R2内容放入R0指示的存储单元中
R0R1R2R1

MRS R1CPSR MRS R2SPSR P75 MSR CPSR_C ,#0xD3 MSR CPSR_cxsf , R3 P77 LDR R0 , =0x12345678 ;加载32位立即数 LDR R0 , =DATA_BUF+60 ;加载DATA_BUF地址+60 P62指令 P63下面有4条指令
21 LDR Rd[Rn , #-0x04] ; Rn-4相加,作为地址取出字,放在Rd
22 LDR Rd[Rn , #-0x04]! ; Rn-4相加,作为地址取出字,放在Rd中,Rn会发生变化
23 LDR Rd[Rn] , #0x04] ; Rn作为传送数据的存储地址传送后Rn会发生变化

5 程序清单3.4 3.9 3.10 3.14 3.15
3.16

6 P67 3.6 IA每次传送后地址加4R0,{R1-R4}LDMIAIB|DA|DB不一定有4R3-R9STM有可能有!R0-R7,LR

7 P69 3.8 SP执行后值会变化STMFD SP! , {R0-R7,LR}满递减ED FA EA现场保存LDMFD SP! , {R0-R7,LR}现场恢复堆栈指令

8 P51 1
(1




1 简述LPC2000内部的时钟发生系统? 答:

晶体振荡器为系统提供基本的时钟信号Fosc。当复位或处理器从掉电模式被唤醒,唤醒定时器要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。Fosc信号被PLL提高到一个符合用户需要的频率FCCLKFCCLK用于CPU内核。因为CPU内核通常比外设部件的工作速度要快,所以用户可以设置VPB分频器,FCCLK信号降低到一个合适的值(也可以不降低)FPCLK,该信号用于外部部件。

2 LPC2114内部主要由哪几个功能模块组成,分别在什么总线上? 答:

ARM内核ARM7TDMI-SFlash存、内存RAMARM7局部总线。向量中断控制器VIC由于中断源有很多,经由VIC处理后,提供内ARM内核的仅有FIQIRQ中断。外部存储控制器EMC,当用户应用程序在外部存储器中,EMC负责管理,VICEMC都在AHB总线上,工作频率为FCCLK
GPIO提供输入输出信号,与微机中并口功能相当。外部中断EINT,外部信号处理除了以通常查询方式外,可以设置中断,EINT4个不同的中断号。定时器Timer产生脉冲信号,可以捕获,或者能够计算脉冲的时间间隔。模拟信号处理模块ADC实现模拟信号到数字信号的转变。串口有SPIUARTI2C。脉宽调制产生脉冲信号,在实验中使蜂鸣器产生电子音乐,根据能量守恒定律,实现DA转换。看门狗定时器WDT提高系统可靠性,如果未定时喂狗,系统自动看门狗复位。系统控制块除了2题中的时钟发生系统,还有存储器映射控制、功率控制。这些都在VPB总线上

3 什么是存储器重映射?主要有哪些重映射?什么是引导块重映射?
答:为了增加系统的灵活性,系统中有部分存储单元可以同时出现在不同的地址上,称为存储器重映射。并不是对存储单元进行了复制,只是将多个地址指向了同一个存储单元,这种效果是通过芯片内部的“存储器管理部件”实现的。图右侧是是实际的物理存储器,左侧是存储器映射状况,程序运行所能访问到的


存储器重映射主要包括引导块Boot Block和异常向量表重映射
引导块Boot Block重映射,引导块是ARM中一段固化的代码,芯片复位(包括看门狗复位)后首先要运行,由于芯片型号不同,片内Flash存大小不一样。有些型号没有Flash存,但是一定有固化的Boot BlockBoot Block中的一些代码可以被用户调用,如擦写片内FlashIAP代码,为了增加用户代码的可移植性,把Boot Block重映射到片内地址空间最高处,即接近2GB0x8000 0000)地方

4 P350
1(2 答:复位过程中有一定功能,复位后,功能发生变化。P0.14进入ISP状态,不进入用户程序,低电平进入ISP
LPC 21XXP1.16P1.25P1.26P1.31P1.20低电平设置跟踪端口跟踪端口P1.26低电平设置调试端口调试端口通过上拉电阻接高电平
引导块Boot Block完成的功能:①运行哪个存储器(片内存储器和片外存储器)上的程序②用户代码是否有效③芯片是否加密④在应用编程IAP⑤在系统编程ISP
5 ARM存储器组是16位字长,外部存储器有8位的,也有16位的(提供字节处理功能,UBLB引脚)说明当RBLE位为0和为1时,引脚的连线,读写8位、16位时引脚CSOEWEBLS1BLS0的情况。
LPC 22XXBOOT1BOOT000CS0片外8位存储器01CS0片外16位存储器10CS0片外32位存储器11内部Flash存储器

ARM从存储器中读取16位数据,如果读出8位数据,CPU再根据指令取出低8(地址为偶数),高8位(地址为奇数)
6 什么是LPC2200处理器EMC控制器支持突发读访问模式?如果4个字节读,且WST1值为1,突发读模式能加速到什么程度?请出时序图,此时外部存储器为8位。 答:突发读访问模式通过减少后面的读周期来提高读取速度,如下图第一次读访问含有2
等待周期,在接下来读访问中,等待周期为0支持最多4B突发读访问模式。如果WST11,访问4B需要4×4个周期,使用突发读模式要7个周期。


7 P350 2 解:由于FCCLK小于等于60MHzM= FCCLK/FOSC M的取值为1~32如果FCCLK最大 FCCLK= 11.0592MHz×5P值取值为1248FCCO时钟范围为156MHz~320MHzFCCO=11.0592MHz×5×4,此时P值为2 PLLCON = 1; PLLCFG = ((Fcclk / Fosc - 1 | (1 << 5; PLLFEED = 0xaa; PLLFEED = 0x55; while((PLLSTAT & (1 << 10 == 0; PLLCON = 3; PLLFEED = 0xaa; PLLFEED = 0x55;
8 向量IRQ中断处理过程?
答:IRQ处理过程分为硬件处理过程和软件处理过程,硬件处理:①将当前程序状态寄存器内容备份,即SPSR_irq=CPSR ②处理器切换到IRQ模式 ③禁止IRQ中断,其中IRQ中断不能嵌套IRQ中断,但是IRQ中断可以嵌套FIQ中断 ④保存中断返回地址,LR_irq=PC 设置IRQ异常入口地址,PC=0x18 软件处理:进入中断向量表,执行语句LDR PC, [PC, #-0x0FF0]其中PC的值是VICVectAddr的地址,从VICVectAddr内容处开始执行。向量IRQ把中断处理程序的入口地址放在VICVectAddrn中,当中断发生时,有中断优先级比较,中断优先级在发生中断中最高,VICVICVectAddrn内容放入VICVectAddr用户编写中断处理程序IRQ_xx完成中断处理,除中断标志,VICVectAddr=0表示IRQ中断处理完毕。IRQ中断允许嵌套,在中断处理程序中,使用语句enable_irq(;,在中断处理程序中,可以嵌套其他中断(FIQ中断、向量IRQ中断、非向量IRQ中断)void __irq IRQ_xx(void语句中__irq在编译中生成语句STMDB R13!,{R0-R1}保护现场,生成语句LDMIA R13!,{R0-R1}恢复现场和SUBS PC,LR,#4恢复工作模式,在断点处继续执行语句

9 LPC2000中如何查找中断源?
答:①判断FIQ、向量IRQ还是非向量IRQ ②如果FIQ,提倡1个中断源,从VICIntSelect可以看到,如果有多个中断源,要查看VICIntSelectVICFIQStatus ③向量IRQ中断,优先级优先的IRQ通道实现中断,且发生中断的,看VICIRQStatus ④非向量IRQ中断,见VICIRQStatusVICVectCntl0~15确定中断源 ⑤在某个中断中,如Timer0,要看T0IR寄存器决定中断源 有层次判断中断源

10 外部中断EINT如何与串口UART相互配合? 答:大部分具有外部中断输入功能的引脚同时作为通信上的1个功能引脚。外部中断0EINT0可以使用P0.1P0.16引脚,P0.1EINT0RXD0复用引脚。如一个从UART串口接收数据并进行低功耗设备,多数时候串口是空闲的,而且无法知道下一个串口数据何时到达。为了节约能量,可以让CPU处于休眠状态。该状态系统时钟仍然在工作,并且UART处于可接收状态,但这不是最佳方案。最佳方案是让处理器处于掉电模式,系统时钟停止工作,芯片功耗降到最低。而为了不错过UART上的数据,在让处理器进入掉电模式之前,把窗口接收引脚切换到掉电唤醒功能,串口数据就能唤醒处理器,处理器工作后把引脚切换到串口接收功能RXD(在中断处理程序中可以实现引脚功能切换,完成处理,中断处理完成后,进入main(函数,再执行语句PCON=2;,又一次进入掉电),这样就可以接收当前数据,从而比较完美地实现了系统的最低功耗。

11 课后P350 1(18LPC2114具有几个32位定时器?如何理解:“PWM功能是一个附加特性,建立在匹配寄存器事件上的。PWM可作为通用定时器使用,如何理解?为什么说PWM可以作通用定时器使用”?在通用定时器上,PWM的附加特性是什么?定时器和PWMVIC中断号是什么?
中断标志寄存器捕获中断匹配中断MATn.0MATn.1MATn.2MATn.3高电平|低电平|翻转匹配标志部分捕获功能部分上升沿下降沿事件中断定时器计数器部分

PWMTCRPWM使能
②匹配映象映象n
MRn
PWMLER③定时器匹配寄存器4PWM匹配寄存器7④中断寄存器T0IR T1IRPWMIR
答:LPC2114232位定时器,实验LPC21034个定时器。PWM功能是一个附加特性,建立在匹配寄存器事件上的。PWM可作为通用定时器,匹配寄存器值等于TC值时,发生匹配中断信号。在通用定时器上,PWM增加了脉宽输出信号,可以产生一定脉冲信号。Timer0中断号为4#Timer1中断号为5#PWM中断号为8#
12 说明SPI总线的2个控制位:时钟极性控制位CPOL、时钟相位控制位CPHA的作用,画出时序图?
答:时钟极性控制位CPOL决定了SPI总线空闲时,SCK时钟线的电平状态。CPOL = 0SPI总线空闲时,SCK时钟线为 电平;CPOL = 1,当SPI总线空闲时,SCK时钟线 电平。时钟相位控制位CPHA决定SPI总线上数据的采样位置,CPHA = 0SPI线在时钟线的第 1 个跳变沿处采样数据;CPHA = 1SPI总线在时钟线的第 2 个跳变沿处采样数据。

CPOL=0CPHA=0CPHA=11位数据输出1SCK上升之前1SCK上升沿其他位数据输出SCK下降沿SCK上升沿数据采样SCK上升沿SCK下降沿

13 已知系统外部设备时钟FPCLK =50MHz,预分频值取为100,要获得2KHz、占空比50%的输出信号,使用定时器Timer0,引脚MAT0.0,写出相关程序 答:T0TC=0; T0PR=100; T0MCR=2; //设置T0MR0匹配后复位T0TC T0EMR=0x30; //T0MR0匹配后MAT0.0输出翻转 T0MR0=500/4; T0TCR=1;
14 已知系统外部设备时钟FPCLK =50MHz,预分频值取为100,要获得2KHz、占空比50%的输出信号,使用脉宽调制器PWM,引脚PWM1,单边沿脉冲,写出相关程序

15 I2C总线如何使用地址?
答:I2C总线器件有微控制器MCUEEPROM键盘及LED驱动器ZLG7290……I2C总线接口器件大量应用于视频、音像及通信领域。不同类型器件地址高4位固定的,中间3位是可编程的,在同一总线上共可连接8个相同的器件,最后1位,0位主机→从机,1位从机→主机。在从模式下,从地址寄存器I2ADR有效,I2ADR8位,最低位GC为通用调用位,为1时,识别通用地址(0x00。在I2ADR中写入从机地址,在实验中从机地址0xA0。主机发送起始信号S,观察I2STAT是否为0x08,再向总线发送从机地址。从机检查地址是否是自己的,有2种情况:①从机使用通用地址(0x00,则接收时使用通用地址②从机使用非通用地址,发现地址是自己地址

16 什么是I2C应答信号?非应答信号?什么时候返回应答信号AA和非应答信号AA# P252 4.120 加上文字描述
P258 返回非应答信号AA#①当I2C接口处于主接收模式,接收最后1个数据字节,比如实验程序中,接收到第4个数据字节,返回非应答信号AA#②当I2C接口处于可寻址的从接收模式时,接收到1个数据字节,不能接收更多字节,将不产生应答位,或返回非应答信号AA#

3、什么是任务?任务由什么构成?任务的动态性、并行性、异步独立性是什么?
答:任务是1个具有独立功能的无限次循环的程序段的一次活动,是实时内核调度的单位。
动态性,任务状态不断变化,任务状态一般分为就绪态、运行态和等待态。在多任务系统中,任务的状态将随着系统的需要不断进行变化;并行性,系统中同时存在多个任务,这些任务在宏观上是同时运行的;异步独立性,每个任务各自按相互独立的不可预知的速度运行,走走停停

任务包含代码、数据——程序所需要的相关数据(变量、工作空间、缓冲区)、堆栈和程序执行的上下文环境,包括任务优先级、任务的状态等内核所需要的信息,以及处理器的各种寄存器的内容。

5、任务3种状态是什么?分别简述
答:任务状态——等待、就绪、执行。在单处理器系统中,如何时刻都只有一个任务在CPU执行;如果没有任何事情可做,就运行空闲任务执行空操作。任何一个可执行的任务都必须处于就绪状态,实时内核的调度程序从任务的就绪队列中选择下一个需要执行的任务。处于就绪状态的任务拥有除CPU以外的其他所有需要的资源。除执行和就绪外,任务还可能处于等待状态。如果任务需要等待I/O设备或其他任务提供的数据,而数据又还没有到达该任务的情况下,就处于等待状态


7、有些什么情况,在嵌入式OS中,任务的控制权交给实时内核?μC/OS-II实时操作系统任务调度特点?
答:中断、自陷。如当I/O中断发生时候,如果I/O活动是一个或多个任务正在等待事件,则实时内核把相应的处于等待状态的任务转换为就绪状态;同时,实时内核还将确定是否继续执行当前处于运行状态的任务,或是用高优先级的就绪任务抢占该任务。自陷是由于执行任务中当前指令所引起的,将导致实时内核处理相应的错误或异常事件,并根据事件类型,确定是否进行任务切换。
运行任务因缺乏资源而被阻塞,如当任务执行过程中进行I/O操作时(如打开文件)如果此前该文件已被其他任务打开,将导致当前任务处于等待状态,而不能继续执行。
采用时间片轮转调度。
一个高优先级任务处于就绪时,如果采用基于优先级的抢占式调度算法,将导致当前任务停止运行,使更高优先级的任务处于运行状态。
μC/OS-II实时操作系统任务调度特点:优先级高的任务先运行(抢占式调度算法ISR可以中断任务执行,中断与所有任务都是异步的;ISR完成后,则等待任务就绪;任务调用延时或/和等待事件的系统服务函数,优先级低的任务可运行;周期性任务优先级高,延时后,就绪很快能够得到CPU

9、任务优先级安排的原则?
答:中断关联性:与中断服务程序ISR有关联的任务应该安排尽可能高的优先级,便及时处理异步事件,提高系统的实时性。如果优先级安排得比较低,CPU有可能被优先级比较高的任务长期占用,以致于在第二次中断发生时连第一次中断还没有处理,产生信号丢失现象;
紧迫性:因为紧迫任务对响应时间有严格要求,在所有紧迫任务中,按响应时间要求排序,越紧迫的任务安排的优先级越高。紧迫任务通常与ISR关联;
关键性:任务越关键安排的优先级越高,以保障其执行机会;
快捷性:在前面各项条件相近时,越快捷(耗时短)的任务安排的优先级越高,以使其它就绪任务的延时缩短;

传递性:信息传递的上游任务的优先级高于下游任务的优先级。如信号采集任务的优先级高于数据处理任务的优先级。

10、什么是资源同步?“资源同步”实现手段有哪些?比较一下
答:被2个以上并发程序单元(任务或ISR)访问的资源称为共享资源,资源同步是任务间对共享资源的访问必须互斥,保障共享资源的可靠性和完整,特别是对共享资源的写。资源同步也常称为任务间的互斥。共享可能是共享内存(全局变量)、外部设备(如LED、芯片中外设(如VIC)等。
“资源同步”实现手段:①使用关中断:通过调用禁止中断函数OS_ENTER_CRITICAL(和允许OS_EXIT_CRITICAL(使OSSchedLock(和允许任务调度函数OSSchedUnlock(实现的,此种方法中中断可以执行,为禁止调度违背了多任务的初衷,所以不建议用户使用。③使用信号量与互斥信号量:通过等待信号量和发送信号量实现共享资源的独享。
禁止中断和禁止任务切换相对简单,但有其局限性。禁止中断完全将CPU与外部世界隔断,系统不再响应那些可以触发任务重新调度的外部事件。如果对共享资源的访问需要较多的机器指令,则可能增加中断延迟。禁止任务切换没有禁止中断那么激进,但它会不加选择地阻止所有其他任务的执行,包括与该任务资源完全无关的高优先级任务。1个更精确的方法是使用互斥信号量,因为该方法只是影响实际竞争该资源的任务,它控制的精度更高,响的范围更小,同时解决互斥中固有问题(优先级反转、删除安全和对资源的递归访问)

12、什么是信号量?信号量的种类和用途?
答:信号量用于实现任务与任务之间、任务与中断服务程序之间的同步与互斥。1个信号量就像1把钥匙,允许某些任务执行某些操作(包括访问某个资源)。如果任务获得信号量,那么就可以执行相关操作。当信号量被获取时,其计数值减1;当信号量被释放时,计数值1.如果计数值到0,则一个请求获取信号量的操作将不成功。信号量分为3种:
决共享资源互斥访问的互斥信号量,用信号量保护的代码区称为“临界区”。信号量初始化为1,表明目前没有任务进入临界区。但最多只有一个任务进入临界区。第一个试图进入临界区的任务将成功获得信号量,而所有其他任务将必须等待。离开“临界区”释放信号量。
用于同步问题的二值信号量,被初始化成0,表示同步的事件尚未发生。一个任务申请信号量以等待该同步事件的发生;另一个任务到达同步点时,释放信号量(将其值设置1)表示同步事件发生,以唤醒正在等待的任务
计数信号量最常用的情况是控制对多个共享资源的访问,这样的一个信号量允许多个任务同时访问同一种资源的多个实例,因此信号量被初始化为n(非负整数)n为该种共享资源数目

14
应关注程序清单6.17 6.21 6.23


免费下载 Word文档免费下载: 嵌入式-

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服