嵌入式试题(总)(共14页).doc
精选优质文档-倾情为你奉上一、 嵌入式处理器分类、ARM系列分类、ARM技术演进一、嵌入式处理器可以有哪些分类?答:嵌入式处理器基本上可以分为嵌入式微处理器(EMPU)、嵌入式微控制器(EMCU)、嵌入式数字信号处理器(EDSP)、嵌入式片上系统(ESoC)二、ARM系列的分类有哪些?答:(1)ARM V4T系列:包括ARM7TDMI、ARM720T、ARM7EJ;(2)ARM V5TE系列:ARM9E、ARM10E;(3)ARM V6系列:ARM11;(4)ARM V7系列:Cortex系列都属于V7系列,主要有Cortex-A8、Cortex-R4、Cortex-M3和Cortex-M1等处理器。三、ARM技术的演进中都改变了什么?答:ARM核心的体系结构从ARMV1发展到ARMV7;ARM系列的处理器从ARM1发展到了ARM11乃至Cortex系列;ARM系列的指令集包括了32位的ARM指令集、16位的Thumb指令集、16/32位的Thumb-2指令集;流水线从ARM7的3级发展到了Cortex-A8的13级;制造工艺从0.18um发展到32nm;内部的其他技术也在不断地升级和发展。四、典型嵌入式系统的组成结构答:从硬件上大致分为:处理器内核层、芯片级外设层、用户级外设层;从软件上大致分为:启动层、操作系统层、应用层。二、 ARM7TDMI的工作模式、工作方式、CPSR1. ARM7TDMI有几种处理器工作模式,分别是什么? ARM7TDMI处理器一共有7种工作模式用户模式(usr)快速中断模式(fiq)外部中断模式(irq)管理模式(svc)数据访问中止模式(abt) 未定义指令中止模式(und)系统模式(sys)2. ARM7TDMI有几种工作方式,分别是什么?ARMARM7TDMI有两种工作方式:ARM方式和Thumb方式3. ARM7TDMI的CPSR中的条件标志位有哪些,分别表示什么意义?N:负标志位,运算结果的第31位值,记录标志设置的结果。 Z:零标志位,如果标志设置操作的结果为0,则置位。 C:进位标志位,记录无符号加法溢出,减法无错位,循环移位。 V:溢出标志位,记录标志设置操作的有符号溢出。4. 编程实现将CPSR的值保存到通用寄存器R0中,将SPSR保存到R1中,然后使用通用寄存器R2的值修改CPSR,使用R3修改SPSR。MRS R0,CPSRMRS R1,SPSRMSR CPSR,R2MSR SPSR,R3三、 ARM7TDMI的寄存器文件、CPSR1. ARM处理器是_RISC_结构,共有_37_个寄存器,其中_31_个通用寄存器,_6_个状态寄存器。2.ARM状态寄存器和Thumb状态寄存器之间的关系Thumb状态寄存器与ARM状态寄存器有如下的关系 (1) Thumb状态r0- r7与ARM状态r0- r7相同 (2) Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同(3) Thumb状态SP映射到ARM状态r13(4) Thumb状态LR映射到ARM状态r14(5) Thumb状态PC映射到ARM状态PC(r15)3. 列出ARM处理器的37个32位物理寄存器。答:未分组寄存器R0R7;分组寄存器R8_fiqR12_fiq,R8_usrR12_usr,R13_usr、R13_fiq、R13_irq、R13_svc、R13_abt、R13_und, R14_usr、R14_fiq、R14_irq、R14_svc、R14_abt、R14_und;程序计数器PC(R15);CPSR,SPSR_fiq、SPSR _irq、SPSR _svc、SPSR _abt、SPSR _und。4. 用汇编语言编写程序读取存储器0x地址上的数据,将数据加1。参考答案: COUNTEQU0x ; 定义一个变量,地址为0xAREAExample2,CODE,READONLY ; 声明代码段Example2 ENTRY; 标识程序入口CODE32; 声明32位ARM指令STARTLDRR1,=COUNT; R1 <= COUNTMOVR0,#0; R0 <= 0 STRR0,R1 ; R1 <= R0,即设置COUNT为0LDRR1,=COUNTLDRR0,R1; R0 <= R1 ADDR0,R0,#1; R0 <= R0 + 1LOOP BLOOPEND四、 中断异常、响应过程、中断返回、优先级等问答题1、简要叙述ARM处理器对异常中断的响应过程。2、ARM体系中的异常中断类型有哪些?3、异常中断结束后,CPU是如何返回到主程序断点的?编程题4、ADC 中断从汇编程序到C程序中的中断服务程序跳转,写出基本格式答案:1、1) 保存处理器当前状态、中断屏蔽位以及各条件标志位。这是通过将当前程序状态寄存器CPSR的内容保存到将要执行的异常中断对应的SPSR寄存器中实现的。各异常中断有自己的物理SPSR寄存器。2) 设置当前程序状态寄存器CPSR中相应的位。包括:进入ARM状态;设置CPSR中的位,使处理器进入相应的执行模式;设置CPSR中的位,禁IRQ中断,当进入FIQ模式时,禁止FIQ中断。3) 将寄存器Ir_mode(R14)设置成返回地址。4) 将程序计数器值(PC),设置成该异常中断的中断向量地址,从而跳转到相应异常中断处理程序处执行。2、l 复位(Reset) l 未定义的指令 l 软件中断(software interrupt SWI) l 指令预取中止 l 数据访问中止 l 外部中断请求 l 快速中断请求 3、异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:l 将所有修改过的用户寄存器从处理程序的保护栈中恢复。l 将SPSR复制回CPSR中,将连接寄存器LR的值减去相应的偏移量后送到PC中。l 若在进入异常处理时设置了中断禁止位,要在此清除。复位异常处理程序不需要返回。4、汇编.s文件中定义:B HandlerADC.HandlerADCIMPORT ADC_ISRB ADC_ISRSUBS PC,R14,#4.c 文件中定义中断服务程序:_irq void ADC_ISR(void); / 注意两个_irq void ADC_ISR(void)五、 ARM指令系统与功能测试:分类总结问题一:ARM指令系统的寻址方式有哪几种? 1 立即寻址 2 寄存器寻址 3 寄存器间接寻址 4 基址寻址 5 相对寻址 6 多寄存器寻址 7 堆栈寻址问题二:列出ARM的指令集(至少四种)1 跳转指令 2 数据处理指令3 乘法指令与乘加指令 4 程序状态寄存器访问指令5 加载/存储指令 6 数据交换指令7 移位指令 8 协处理器指令9 异常产生指令问题三:请分别说明下列语句的含义 1、ADD R0, R0, 1 ; R0R01ADD R0, R0, 0x3f ; R0R00x3f 2、LDR R0, R1, 4 ; R0R14问题四:以下程序段执行后,A= , (30H)= 。 MOV 30H,#0AH MOV A,#0D6H MOV R0,#30H MOV R2,#5EH ANL A,R2 ORL A,R0 SWAP A CPL A XRL A, #0FEH ORL 30H, A 答:A=E4H (30H)=EEH六、 ARM汇编伪指令与程序设计:分类总结1. 什么是ARM伪指令?ARM汇编语言的伪指令包括什么?答:ARM伪指令并不是真正的ARM指令,在编译器进行汇编时,被替换成相应的ARM指令。其包括:ADR ADRL LDR NOP2. 一个ARM工程都包括些什么?答:多个ARM汇编语言源程序、C语言源程序、头文件等。3. ARM程序设计包括几种方法?ARM汇编语言程序设计、嵌入式C+语言程序设计、嵌入式C语言与ARM汇编语言混合程序设计等3种方法。4. 请将以下程序改写为体检码方法的程序CMP R0,#5 ;比较R0与5,设置条件码BNE BYPASS ;不相等则转移ADD R1,R1,R0;相等:R1=R1+R2SUB R1,R1,R2 ;相等:R1=R1-R2BYPASS;答:CMP R0,#5 ;比较R0与5,设置条件码ADDEQ R1,R1,R0;相等:R1=R1+R2,条件执行SUBEQ R1,R1,R2 ;相等:R1=R1-R2,条件执行七、汇编语言与C语言交叉设计技术与程序设计题目一:在C51程序中使用汇编语言有哪两种情况?答案: C51程序调用汇编程序模块的变量和函数和嵌入式汇编题目二:汇编语言和C语言混和编程的三种方法:答案:1,对C语言程序编译后形成的汇编程序进行手工修改与优化;2,在C语言程序中直接嵌入汇编语句;3,分别编写C语言程序和汇编语言程序,然后独立编译成目标模块再进行链接题目三:C语言和汇编语言在单片机编程中各自的优缺点?答: 汇编语言是一种用文字助记符来表示机器指令的符号语言, 是最接近机器码的一种语言。 其主要优点是占用资源少、程序执行效率高。但是不同的 ,其汇编语言可能有所差异, 所以不易移植。 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机 语言。缺点是占用资源较多,执行效率没有汇编高。题目四(编程题):定义一个C语言函数cFun实现三个变量的求和,并在汇编语言中调用该函数EXPORT asmfile AREA asmfile,CODE,READONLY _(1)_ cFun ENTRY mov r0,#11 mov r1,#22 mov r3,#33 _(2)_ cFun END/* C file,called by asmfile */int cFun(int a,int b, int c) _(3)_ _(4)_; _(5)_; rerutn _(6)_;答案:(1)IMPORT(2)BL(3)int(4)result(5)result=a+b+c(6)result注:result可以使任意的符合要求的变量 八、 .sct文件的编写与分析使用1. )分散加载能够将加载和运行时存储器中的_和_描述在被称为分散加载描述文件的一个文本描述文件中,以供连接时使用。2. )分散加载区域分为两类:加载区和执行区。其中加载区包含应用程序_和_时的代码和数据。3. )执行区,包含应用程序执行时的代码和数据。应用程序启动过程中,从每个加载区可创建_执行区。4. )写一个简单的.sct文件。参考答案:1.代码和数据;2.复位和加载;3.一个或多个;4.LR_ROM1 0x 0x ; load region size_region ER_ROM1 0x 0x ; load address = execution address *.o (RESET1, +First) *(InRoot$Sections) .ANY (+RO) RW_RAM1 0x 0x ; RW data .ANY (+RW +ZI) 九、 S3C44B0X的内特性与CPU Wrapper、SFR初始化1.C44BOX 以CPU单元为核心,通过_系统总线_实现与总线仲裁器、高速部件及电源管理等连接。2.S3C44BOX的CPU rapper由_CPU核_、_写缓冲区_、_Cache_组成。3.描述S3C44BOX的地址空间答:包含8个独立地址空间(BANK07);每个地址空间为32MB,合计256MB;4. 存储器配置:配置13个存储控制器,只能用汇编语言编写。存储控制器的13个SFR存储器名称地址赋值BWSCON0x1C800000xBANKCON00x1C800040xBANKCON10x1C800080xBANKCON20x1C8000C0xBANKCON30x1C800100xBANKCON40x1C800140xBANKCON50x1C800180xBANKCON60x1C8001C0xaBANKCON70x1C800200xaREFREASH0x1C800240xBANKSIZE0x1C800280xMRSRB60x1C8002C0xMRSRB70x1C800300x答:init_MMC LDR R13, =SMRDATA LDMIA R13,R0-R12 LDR R13, =0x01c80000 STMIA R13,R0-R12SMRDATA: DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0xa DCD 0xa DCD 0x DCD 0x DCD 0x DCD 0x MOV PC,LR十、 S3C44B0X的外特性与GPIO、SFR初始化、 引脚编程试题如下: 1:S3C44B0X具有_个通用可编程多功能输入/输出GPIO。其中PortA为_位的输入/输出端口。2:S3C44B0X的GPIO端口是通过SFR进行配置的,S3C44B0X具有_个SFR,其中PortA的SFR包括一个_、一个_。3:依据S3C44B0X的引脚分布和内部结构,简述其有哪些基本接口?4:I/O端口配置的C语言编程。要求PortA实现ADDR功能,PortB实现输出功能,初始值为十进制数15,PortC实现输入功能并实现禁止上拉功能,并设置外部中断方式为低电平触发。参考答案:1: 71,10.2: 22, 配置寄存器PCONA, 数据寄存器PDATA.3: 答:基本上可以分为存储器扩展接口、LCD接口、UART接口、DMA接口、INTC接口、PWM接口、看门狗接口、时钟接口、ADC接口、GPIO和IIC、IIS、SIO等接口。4:IO端口配置,Port_Init.c void Port_Init (void) rPCONA = 0x3FF; rPCONB = 0x000; rPDATB = 0x00F; rPCONC = 0x0000 0000; rPUPC = 0xFFFF; rEXTINT = 0x0000 0000; 十一、 S3C44B0X的MMC、SFR初始化与应用程序设计十二、1. 可使用的存储器类型有 、 、 等2. S3C44B0X存储控制器MMC的功能描述为 、 、 。3.什么是SFR空间?5. 存储器配置:配置13个存储控制器,只能用汇编语言编写。存储控制器的13个SFR存储器名称地址赋值BWSCON0x1C800000xBANKCON00x1C800040xBANKCON10x1C800080xBANKCON20x1C8000C0xBANKCON30x1C800100xBANKCON40x1C800140xBANKCON50x1C800180xBANKCON60x1C8001C0xaBANKCON70x1C800200xaREFREASH0x1C800240xBANKSIZE0x1C800280xMRSRB60x1C8002C0xMRSRB70x1C800300x答案:1. ROM FLASH SRAM2. 地址连线配置 BANK0总线宽度 大端模式或小端模式选择3. SFR空间是S3C44B0X片内外设的特殊功能寄存器SFR的定义空间,大小为4MB,主要分配给存储器控制器、中断控制器等片内I/O的SFR使用。4.init_MMC LDR R13, =SMRDATA LDMIA R13,R0-R12 LDR R13, =0x01c80000 STMIA R13,R0-R12SMRDATA: DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0xa DCD 0xa DCD 0x DCD 0x DCD 0x DCD 0x MOV PC,LR十二、 S3C44B0X的NVIC、SFR初始化与应用程序设计1、INTC的中断管理主要具有_ 、_ 、_、_等功能 2、简述S3C44B0X的中断源3、 假设Timer0采用IRQ矢量中断模式,其中断向量为0x,其中断服务程序RISR 的入口地址为0x10000,则位于0x处跳转到Timer 0的RISR的分支指令码为?4、对INTC完成3个SFR初始化cINTCON0x01cINTMOD0x00000FF cINTMSK0x答案:1、 中断响应、中断屏蔽、中断判优、矢量中断2、 S3C44B0X的30个中断源分类:22个片内中断源和8个片外中断源。4个外部中断(EINT4/5/6/7)是逻辑或的关系,共用一个中断源。2个UART错误中断(UERR0/1)是逻辑或的关系,共用一个中断源。因INTC此只有26个独立中断源。3、指令码 = 0xEA + (0x10000 - 0x60 - 0x8) >> 2) = 0xEA + 0x3FE6 = 0xEA003FE64、#define crINTCON (*(volatile unsigned *)(0x01e00000) #define ccINTCON (0x) #define crINTMOD (*(volatile unsigned *)(0x01e00008) #define ccINTMOD (0x) #define crINTMSK (*(volatile unsigned *)(0x01e0000c) #define ccINTMSK (0x07ffffff) int INTC_init(void) crINTCON=ccINTCON; crINTMOD=ccINTMOD; crINTMSK=ccINTMSK; return 0; 十三、S3C44B0X 时钟电源管理功能及开发试题简答题1. S3C44B0X中的功耗管理提供哪几种模式?(1)正常模式(Normal Mode)(2)慢速模式(Slow Mode)(3)空闲模式(Idle Mode)(4)停止模式(Stop Mode)(5)LCD的SL空闲模式(SL Idle Mode)2. S3C44B0X的时钟电源管理部件具有哪几个SFR?功能是什么?PLLCON 控制寄存器CLKCON时钟控制寄存器CLKSLOW时钟低速控制寄存器LOCKTIME锁时计数寄存器3. 请写出PLL输出频率计算公式。 Fpllo = (m * Fin)/(p*2s)程序设计题4. 编写程序,对CLK完成4个SFR初始化,4个SFR如下表所示寄存器名称地址状态初始值PLLCON0x01D80000R/W 0x38080CLKCON0x01D80004R/W 0x7ff8CLKSLOW0x01D80008R/W 0x9LOCKTIME0x01D8000CR/W 0xfffCLK_init LDR R4,=CLKC_DATA LDMIA R4!,R0-R3 LDR R4,=0x01d80000 STMIA R4!,R0-R3CLK_DATA DCD 0x DCD 0x00007ff8 DCD 0x DCD 0x00000fff MOV PC,LR十四、 S3C44B0X的UARTC、SFR初始化与程序设计、printf1 UART的基本构成?输出缓冲寄存器,它接收CPU从数据总线上送来的并行数据,并加以保存。 输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。 输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。 输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CPU取走。控制寄存器,它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。2 UART提供两个独立的异步串行通信端口,每个端口都可以在_中断_和_DMA_两种模式下工作。3 S3C44B0X的每个UART都有7个状态信号:_溢出错误、_奇偶校验错误_、_帧错误、_中止状态_、_接受FIFO/缓冲区数据准备好、发送FIFO/缓冲区空和_发送移位寄存器空.4 将以下c程序改用ARM汇编实现。其中,a, b皆为无符号数。 if(a < b) a+; else b+; 答案:MOV R0,#a MOV R1,#b CMP R1,R0 ADDHI R0,#1 ADDLS R1,#十五、 S3C44B0X的GPIO、SFR初始化与应用程序设计1.S3C44B0X具有多少个通用可编程多功能输入/输出脚GPIO,分为哪7类?答案:S3C44B0X具有71个通用可编程多功能输入/输出脚GPIO。共分为7类:1个10位输入/输出端口:PortA;1个11位输入/输出端口:PortB;1个16位输入/输出端口:PortC;2个9位输入/输出端口:PortE、PortF;2个8位输入/输出端口:PortD、PortG;2.S3C44B0X的I/O端口怎么通过多路开关,控制引脚的功能选择?答案:当开关接在“1”上时,PINn是GPIO;当开关接在“2”上时,PINn是TxD0;当开关接在“3”上时,PINn是PWM1输出3. S3C44B0X具有多少个GPIO端口SFR。每个端口一般会有哪3个寄存器?答案:S3C44B0X具有22个GPIO端口SFR。每个端口都会有一个配置寄存器、数据寄存器、上拉寄存器。4.S3C44B0X的GPIO端口SFR初始化汇编程序设计。初始化值如下表:寄存器名称地址状态赋值PCONA0x01D20000R/W0xPDATA0x01D20004R/W0xPCONB0x01D20008R/W0xPDATB0x01D2000CR/W0xPCONC0x01D20010R/W0xPDATC0x01D20014R/W0xaPUPC0x01D20018R/W0xaPCOND0x01D2001CR/W0xPDATD0x01D20020R/W0xPUPD0x01D20024R/W0xPCONE0x01D20028R/W0xPDATE0x01D2002CR/W0xPUPE0x01D20030R/W0xPCONF0x01D20034R/W0xPDATF0x01D20038R/W0xPUPF0x01D2003CR/W0xPCONG0x01D20040R/W0xPDATG0x01D20044R/W0xPUPG0x01D20048R/W0xaSPUCR0x01D2004CR/W0xEXTINT0x01D20050R/W0xEXTINTPND0x01D20054R/W0x答案:GPIO_init LDR R11,=GPIODATA1 LDMIA R11!,R0-R10 LDR R11,=0x01d20000 STMIA R11!,R0-R10 LDR R11,=GPIODATA2 LDMIA R11!,R0-R10 LDR R11,=0x01d2002c STMIA R11!,R0-R10GPIODATA1 DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0xa DCD 0xa DCD 0x DCD 0x DCD 0x DCD 0xGPIODATA2 DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0x DCD 0xa DCD 0x DCD 0x DCD 0x MOV PC,LR专心-专注-专业