某公司笔试题

ARM7TDMI与ARM720T的一个重要区别在于后者有(MMU)和(8k Cache)

ARM芯片的主要封装有(QFP)(TQFP)(PQFP)(LQFP)(BGA)(LBGA)等形式

ARM微处理器共有(37)个(32)位寄存器,其中(31)个为通用寄存器,(6)个为状态寄存器

ARM体系结构可用两种方法存储字数据,具体为(大端格式)(小端格式)

ARM微处理器在较新的体系结构中支持两种指令集(ARM)(Thumb)

ARM处理器有九种基本寻址方式,分别是(寄存器寻址)(立即寻址)(寄存器移位寻址)(寄存器间接寻址)(变址寻址)(多寄存器寻址)(堆栈寻址)(块复制寻址)(相对寻址)

ARM指令集可以分为六类,分别是(跳转指令)(数据处理指令)(程序状态寄存器(PSR)处理指令)(加载/存储器指令)(协处理器指令)(异常产生指令)

在ARM的汇编程序中,有如下几种伪指令:(符号定义伪指令)(数据定义伪指令)(汇编控制伪指令)(宏指令)(其他伪指令)

ARM C/C++编译器支持和产生以下几种格式的文件:(filename.c/filename.cpp)(filename.o)(filename.s)(filename.h)(filename.lst(列表文件))

JTAG调试接口的结构由那几部分组成?
1)TAP(测试访问端口)控制器
2)旁路(bypass)寄存器
3)指令寄存器和数据寄存器
4)与JTAG接口兼容的ARM架构处理器

定点DSP芯片与浮点DSP芯片是什么?有什么优缺点?
定点DSP和浮点DSP主要是按DSP工作时的数据格式来区分的。数据以定点格式工作的DSP是定点DSP,数据以浮点格式工作的DSP是浮点DSP。浮点DSP能进行浮点运算,一次完成,由硬件实现。定点DSP无法直接进行浮点运算,完成浮点运算需要借助程序来实现。
优点:浮点DSP比定点DSP 的运算范围要大。浮点DSP 的寻址范围也大些。浮点DSP的精度大些。浮点运算速度大。
缺点:定点DSP需要时刻注意运算的溢出。精度不够,定点DSP运算速度慢

DSP和通用CPU的最大区别是什么?有什么共同点?
(1)首先是体系结构:CPU是冯.诺伊曼结构的,而DSP有分开的代码和数据总线即“哈佛结构”。
(2) 标准化和通用性:CPU的标准化和通用性做得很好,支持操作系统,所以以CPU为核心的系统方便人机交互以及和标准接口设备通信,非常方便而且不需要硬件开发了;但这也使得CPU外设接口电路比较复杂,DSP主要还是用来开发嵌入式的信号处理系统了,不强调人机交互,一般不需要很多通信接口,因此结构也较为简单,便于开发。如果只是着眼于嵌入式应用的话,嵌入式CPU和DSP的区别应该只在于一个偏重控制一个偏重运算了。
(3)流水线结构:大多数DSP都拥有流水结构,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等步骤,这样可以大大提高系统的执行效率。但流水线的采用也增加了软件设计的难度,要求设计者在程序设计中考虑流水的需要。
快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulate,MAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用CPU采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。
地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。
硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。

占先式系统与非占先式系统有什么区别?DSP/BIOS和ucOSII是哪一种?
占先式,当前任务运行中如果有优先级更高的任务进入就绪态,当前任务立即将CPU交给优先级更高的任务。
非占先式:等当前任务执行完后再交给优先级更高的任务

说一下对DSP MAP的认识。生成方法是怎样的?文件格式是怎样的?
MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。
一、生成方法
MAP文件主要有两种生成方法,一种是由系统自动生成,默认文件名为所建立的项目名(如XXX为项目名)加上.map后缀xxx.map,另一种在CMD文件中指定生成MAP文件,操作方法为在MEMORY指令前面加上“-m abc.map”,文件名可以任意。
二、文件格式
MAP文件大概分为文件头、内存配置、段映射、全局符号四部分。内存配置与CMD文件中的MEMORY指令关联,在CMD文件中定义的程序与数据区间定义,在该部分均可以找到对应,与CMD文件不同的时,在MAP文件中加入了一个实际使用的区间,即在程序中实际用到的空间长度。段映射部分与CMD文件中的SECTION指令关联,在该部分程序中所有的段实际映射的起始地址与实际长度均有详细说明。可以具体到程序中PROGMA指定的段和各个单独文件产生的OBJ文件。全局符号可以是程序使用的每一个函数、程序中定义的全局变量均可以在此找到对应的起始地址。MAP文件中采用两种方式列举,一种为按相应地址排列,另一种按全局符号字母排列。

DSP的电源设计和时钟设计应该特别注意哪些方面?外接晶振选择无源的好还是有源的好?请问DSP在与前向通道(比如说AD)接口的时候,布线过程中要注意哪些问题,以保证AD采样的稳定性?
cmd文件有几部分组成,具体是什么内容,请详细列出。
详细描述以下函数的功能:
假定结构类型Dnode中的data域为结点值域,next域为结点指针域。

Dnode* QB(int n)
{
    if(0==n) {retuen NULL;}
    Dnode* f = new Dnode;
    cin>>f->data;
    Dnode* p=f;
    while(--n)
    {
        p=p->next = new Dnode;
        cin>>p->data;
   }
        p->next = NULL;
        return f;
}

简单描述ARM内核的四个功能模块,各自具备什么功能特点?
T : 支持16位的Thumb指令集,可以在兼顾性能的同时减少代码尺寸
D : 支持片上调试。该内核中放置了用于调试的结构,通常它为一个边界扫描链JTAG,可使CPU进入调试模式,从而可方便地进行断点设置、单步调试。
M:内嵌8位硬件乘法器
I : 嵌入式ICE,支持片上断点和调试点。用于实现断点观测及变量观测的逻辑电路部分,其中的TAP控制器可接入到边界扫描链

一个ARM720T内核,基本由哪四部分组成?
1)ARM7TDMI CPU核:该CPU核支持Thumb指令集、核调试、增强的乘法器、JTAG及嵌入式ICE。它的时钟速率可编程为18MHz、36MHz、49MHz、74MHz
2)内存管理单元(MMU):与ARM710核兼容,并增加了对Windows CE的支持。该内存管理单元提供了地址转换和一个有64个项的转换旁路缓冲器。
3)8KB单一指令和数据高速缓冲存储器,以及一个四路相联高速缓冲存储器控制器
4)写缓冲器Write Buffer

通用寄存器包括R0~R15,可以分为具体哪三类?
未分组寄存器R0~R7
分组寄存器R8~R14
程序计数器PC(R15)

请描述Thumb状态下的寄存器与ARM状态下的寄存器有什么关系?
(1)Thumb状态下和ARM状态下的R0~R7是相同的
(2)Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的
(3)Thumb状态下的SP对应于ARM状态下的R13
(4)Thumb状态下的LR对应于ARM状态下的R14
(5)Thumb状态下的程序计数器对应于ARM状态下的R15

当一个异常出现后,ARM微处理器会执行哪几步操作?
(1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,则LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如:在软件中断异常SWI,指令 MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行
(2)将CPSR复制到相应的SPSR中
(3)根据异常类型,强制设置CPSR的运行模式位
(4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处

一个典型的ARM指令具有什么样的语法格式?并描述各选项的含义

<opcode>{<cond>}{S}<Rd>,<Rn>,< shifter_operand > 

其中:
opcode是指令操作符编码
cond 是指令执行的条件编码
Rd是目标寄存器编码
Rn是包含第1个操作数的寄存器编码
shifter_operand 表示第2个操作数

常见的符号定义伪指令,具体有哪几种?
1)用于定义全局变量的GBLA、GBLL和GBLS
2)用于定义局部变量的LCLA、LCLL和LCLS
3) 用于对变量赋值的SETA、SETL、SETS
4)为通用寄存器列表定义名称的RLIST。

可执行映像文件通常由几部分组成,它们有什么特点?
一个或多个代码段,代码段的属性为只读
零个或多个包含初始化数据的数据段,数据段的属性为可读写
零个或多个不包含初始化数据的数据段,数据段的属性为可读写

JTAG测试信号由哪五个信号组成,并分别描述
TRST:测试复位输入信号,测试接口初始化
TCK:测试时钟,在TCK时钟的同步作用下,通过TDI和TDO引脚串行移入/移 出数据或指令;同时,也为测试访问端口TAP控制器的状态机提供时钟
TMS:测试模式选择信号,控制测试接口状态机的操作
TDI:测试数据输入线,其串行输入数据至边界扫描寄存器或指令寄存器(由TAP 控制器的当前状态及已保存在指令寄存器中的指令来控制)
TDO:测试数据输出线,把从边界扫描链采样的数据传播至串行测试电路中的下 一个芯片

初始化存储器有哪几种方法?
编写一个函数fun(),首先从键盘上输入一个4行4列的实数矩阵到一个二维数组a[4][4],接着求出主对角线上的元素值之乘积,最后返回这个乘积。
请编写程序,输出以下杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
画出你最近做的一个成熟项目的架构框图,要求把ARM电路板中的主要元器件都包括进来,各器件的连接方式要表达清楚,越详细越好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值