Embedded ARM-Linux interview

2019-07-13 02:12发布

 嵌入式linux面试题解析——ARM部分 http://blog.csdn.net/qr_ljj/article/details/53069599   1FIQIRQ快的原因: AFIQ模式的R8--R14寄存器是独有的,FIQ处理程序可以不必执行保存和恢复中断现场的指令。 BFIQ可以将ISR直接放在FIQ后面的地址空间,不需要跳转。   2、中断与异常有何区别     异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。   3、在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的 当参数小于等于4的时候是通过r0-r3寄存器来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。   4、简述SPI,UART,I2C三种传输方式     SPI:高速同步串行口,首发独立,可同步进行     SPI接口主要应用在EEPROMFlash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。     I2C协议:是单片机与其他芯片进行通讯的协议: A、只要求两条总线线路,一条是串行时钟线,一条是串行数据线;  B、通过软件设定地址   C、是一个多主机总线,如果两个或更多主机同时初始化数据传送可通过冲突检测和仲裁防止数据破坏;  DI2C总线传输的是数据的总高位     UART:主要是由一个modem(调制解调器),可以将模拟信号量转化成数字信号量。   5嵌入式系统中断服务子程序(ISR)     中断是嵌入式系统中重要的组成部分,导致了很多编译开发商提供一种扩展—让标准C支持中断。具体代表是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 __interrupt double compute_area (double radius) {     double area = PI * radius* radius;     printf("Area =%f", area);     return area; }     AISR不能返回一个值。     BISR不能传递参数。     C、在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。     Dprintf()经常有重入和性能上的问题。   6、在ARM的汇编程序中,有如下几种伪指令:_____________________________     答案:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令、其他伪指令   7、协处理器主要控制:__________________     答案:片内的MMU、指令和数据缓存(IDC)、写缓冲(Write Buffer   8、当一个异常出现以后,ARM微处理器会执行哪几步操作?     答:当一个异常出现以后,ARM微处理器会执行以下几步操作。     A、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,则LR寄存器中保存 的是下一条指令的地址(当前PC4PC8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令 MOV PCR14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。     B、将CPSR复制到相应的SPSR中。     C、根据异常类型,强制设置CPSR的运行模式位。     D、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。   9ARM微处理器在较新的体系结构中支持两种指令集:____________     答案:ARM指令集、Thumb指令集   10ARM处理器有9种基本寻址方式,分别是:______________________________________________________     答案:寄存器寻址、立即寻址、寄存器偏移寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址   11ARM指令集可以分为6类,分别是:____________________________________     答案:跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理器指令、异常中断产生指令   12、表示递增和递减的满堆栈和空堆栈有哪几种组合,请比较它们的特点。     答:有4种类型的堆栈,表示递增和递减的满堆栈和空堆栈的各种组合。     满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFASTMFA等。     空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址。指令如LDMEASTMEA等。     满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFDSTMFD等。     空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址。指令如LDMEDSTMED等。   13ARM协处理器指令包括哪3类,请描述它们的功能。     答:ARM协处理器指令包括以下3类:     用于ARM处理器初始化ARM协处理器的数据处理操作。     用于ARM处理器的寄存器和ARM协处理器的寄存器间的数据传送操作。     用于在ARM协处理器的寄存器和内存单元之间传送数据。   14、可执行映像文件通常由几部分构成,它们有什么特点?     答:可执行映像文件通常由以下几部分构成。     一个或多个代码段,代码段的属性为只读。     零个或多个包含初始化数据的数据段,数据段的属性为可读写。     零个或多个不包含初始化数据的数据段,数据段的属性为可读写。   15ARM嵌入式系统主要由__________________构成。     答案:嵌入式处理器、相关支撑硬件、嵌入式软件系统   16、总线通常包括__________________     答案:数据总线、地址总线、控制总线   17、复位后,ARM处理器处于(B)模式,(D)状态 AuserBSVC Csystem DARM EThumb   18ARM9 处理器总共有(E)个寄存器,system模式下使用(A)个寄存器,SVC模式下使用(B)个寄存器     A17    B18    C32    D36    E37   19ARM处理器中优先级别最高的异常为(E     AFIQ    BSWI    CIRQ    DSVC    ERESET   20ARM出局处理指令中有效的立即数是(ACEGH     A0x00AB0000B0x0000FFFF C0xF000000F D0x08000012     E0x00001F80F0xFFFFFFFF G0          H0xFF000000   21ATPCS规定中,推荐子函数参数最大为(D)个     A1    B2    C3    D4   22ATPCS规定中,栈是(B     A、满加    B、满减    C、空加    D、空减   23ARM汇编编程中,通常PC是指(D),LR是指(C),SP是指(B     AR12    BR13    CR14    DR15   24CPU复位后执行MOV R0PC指令后,R0寄存器的值为(C     A0x0    B0x4    C0x8    D0xC   25ARM中可以访问状态寄存器的指令是(D),能够访问内存的指令是(B     AMOV    BLDR    CMCR    DMRS   26ARM7TDMI使用3级流水线,分3个阶段,分别为取指、译码和 执行。   27 ARM9的五级流水线分别是取指、译码、执行、缓冲数据、回写。   28ARM的异常类型有复位异常、未定义指令异常、软件中断、指令预取中止、数据中止异常、IRQFIQ   29、描述一下嵌入式基于ROM的运行方式基于RAM的运行方式有什么区别。     基于RAM的运行方式:需要把硬盘和其他介质的代码先加载到ram中,加载过程中一般有重定位的操作;     基于ROM:没有上面的操作。     基于ROM:速度较基于RAM的慢,因为会有一个把变量,部分代码等从存储器(硬盘,flash)搬移到RAM的过程;可用RAM资源比基于RAM的多;     基于RAM:速度较基于ROM的快,可用RAM比基于ROM的少,因为所有的代码,数据都必须存放在RAM中。   30、嵌入式操作系统和通用操作系统有什么差别?     答案:多优先级,抢占型,实时操作系统。嵌入式操作系统一般没有UI,体积小,实时性强,对稳定性要求更高。嵌入式操作系统强调实时性,并且可裁减。要求系统资源的消耗要尽可能的小。   31、在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用何种方法?C
    A、直接修改CPU状态寄存器(CPSR)对应的模式
    B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态
    C、使用软件中断指令(SWI
    D、让处理器执行未定义指令   32、在ARM Linux体系中,用来处理外设中断的异常模式是__C____
    A、软件中断(SWI            B、未定义的指令异常
    C、中断请求(IRQ            D、快速中断请求(FIQ   33、在ARM Linux系统中,中断处理程序进入C代码以后,ARM的处于__A__工作模式
    A、超级用户(SVC            B、中断(IRQ)
    C、快速中断(IRQ            D、和进入中断之前的状态有关系   34、在ARM体系构建的嵌入式系统中,由电平模式触发的中断,其对应的中断标准应该在何时被清除?A
    A、当中断处理程序结束以后,才可以清除
    B、进入相应的中断处理程序,即可以清除
    C、产生IRQ中断的时候,处理器自动清除
    D、任何时候都可以清除   35、在下列ARM处理器的各种模式中,只有__A___模式不可以自由地改变处理器的工作模式。
    A、用户模式(User    B、系统模式(System)
    C、终止模式(Abort)     D、中断模式(IRQ)