当前位置:文档之家› ARM9嵌入式题库备份(2013年6月完整)

ARM9嵌入式题库备份(2013年6月完整)

ARM9嵌入式题库备份(2013年6月完整)
ARM9嵌入式题库备份(2013年6月完整)

1、 ARM微处理器支持7种运行模式为usr、 fiq 、 irq 、 svc 、abt、 sys 、und。

2、目前主流的32位嵌入式微处理器芯片有ARM、MIPS和PowerPC等。

3、嵌入式微处理器的体系结构可以采用哈佛结构或冯·诺依曼结构,指令系统可以选用RISC/精减指令集和CISC/复杂指令集。

4、AMBA定义了3组总线AHB/先进高性能总线、 ASB/先进系统总线和APB/先进外围总线。

5、S3C2410功耗管理的四种模式分别为正常模式、慢速模式、空闲模式和掉电模式。

6、RS-232C的帧格式由四部分组成,包括:起始位、、奇偶校验位和。

7、ARM系列微处理器支持的边界对齐格式有:、和字对齐。在宿主机上使用编译器软件将嵌入式应用、嵌入式操作系统编译成为可以在目标机上运行代码的过程,称为交叉编译,而采用的编译器称为交叉编译器。

8、一般来说,嵌入式操作系统中的任务具有就绪、运行和阻塞三种基本状态。

9、在S3C2410A中与配置I/O口相关的寄存器包括:端口控制寄存器、端口数据寄存器、端口上拉寄存器、杂项控制寄存器和外部中断控制寄存器。

10、S3C2410的存储系统地址空间具有8个存储体,每个存储体可达128MB总容量可达1GB。

11、系统初始化过程按照自底向上、从硬件到软件的次序依次可以分为片级初始化、板级初始化和系统级初始化 3个主要环节。

12、按照通常的分类方法,嵌入式软件可以分为系统软件、应用软件、和支撑软件三大类。

13、无操作系统的嵌入式软件采用循环轮转和中断(前后台)两种实现方式。

14、按照响应时间分,EOS可分为实时操作系统和非实时操作系统两大类。

15、从任务管理角度看,嵌入式操作系统可以分为单道程序设计和多道程序设计两种类型。

16、进程是正在执行的程序,它是由程序和该程序的运行上下文两部分内容组成。

17、采用ARM和Thumb指令混合编程时,需要使用 BX 指令实现两种指令集的切换。

18、C语言中采用 __asm 标记实现内嵌汇编。(__asm)

19、使用gcc命令若想生成警告信息,应该给gcc加参数 -Wall 。

20、有源文件test.c,若想生成目标文件test.o,正确的命令是 gcc –c –o test.o test.c 。

21、Linux下设备文件所在路径为 /dev 。

22、大多数 Boot Loader 都包含启动加载模式和下载模式两种不同的操作模式。

23、 vivi文件结构中, arch 目录包括了所有vivi支持的目标板的子目录,如s3c2410目录。

24、在系统总线和外围总线之间,S3C2410A有4个DMA控制器。

25、嵌入式系统支持的内存块大小有以下几种:段大小为1MB的内存块;大页大小为64KB的内存块;小页大小为4KB的内存块;极小页大小为1KB 的内存块。

26、LINUX的文件系统采用的是树型目录,最上层是 / 。

27、在Linux操作系统中,设备都是通过特殊的文件来访问。

28、ARM微处理器有种工作模式,它们分为两类、。其中用户模式属于。7 、非特权模式、特权模式、非特权模式

29、在宿主机上使用编译器软件将嵌入式应用及操作系统编译成为可以在上运行代码的过程,称为,而采用的编译器称为交叉编译器。

目标机、交叉编译

30、ARM7TDMI采用级流水线结构,ARM920TDMI采用级流水线。3、5

31、采用RS232C实现最简单的双机互联,至少需要如下信号线:、和GND。TXD、RXD

32、使用gcc命令若想生成调试信息,应该给gcc加参数,若想生成警告信息,应该给gcc加参数。-g、-Wall

33、ARM系列微处理器支持的边界对齐格式有:、和字对齐。

34、I/O接口编址方式有两种,分别是:和。统一编址和独立编址

35、大多数Boot Loader 都包含和两种不同的操作模式。

启动加载模式、下载模式

36、从模块结构来看,嵌入式系统由三大部分组成,分别是:、软件和。硬件、开发平台

37、I/O接口电路数据传送方式有:、、DMA、I/O通道和I/O处理机方式。查询、中断

38、从任务管理角度看,嵌入式操作系统可以分为单道程序设计和两种类型。多道程序设计

39、系统初始化过程按照自底向上、从硬件到软件的次序依次可以分为初始化、初始化和初始化3个主要环节。片级、板级和系统级40、构建嵌入式系统开发环境的工具链有多种,其中开放源码的工具链是,ARM公司提供的工具链是。GNU工具链、ADS工具链

41、按照通常的分类方法,嵌入式软件可以分为、、和三大类。系统软件、应用软件、和支撑软件

42、内核移植一般包括、和内核下载3大步骤,移植内核首先要准备好编译内核的编译器即。

内核配置、内核编译、交叉编译工具链

43、ARM支持两个指令集,ARM核因运行的指令集不同,分别有两个状态、,状态寄存器CPSR的位反映了处理器运行不同指令的当前状态。ARM 、Thumb 、T

44、嵌入式系统是以为目的、以基础的计算机系统。嵌入式应用、计算机技术

45、嵌入式系统的开发由于受到限制,通常采用环境。系统资源开销的、交叉开发

46、嵌入式系统开发采用的交叉开发环境是由和组成的。宿主机、目标机

47、ARM 处理器共有37个寄存器,包括31个和6个。

通用寄存器、状态寄存器

48、ARM微处理器的工作模式中,系统模式并不是通过进入的,它和模式具有完全一样的寄存器。异常、用户

49、ARM微处理器支持两种指令集:和_。

ARM指令集、Thumb指令集

50、就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的程序。Bootloader、BIOS

51、交叉编译环境的搭建中minicom是用于Linux 下的工具,DNW 是用于串口下载的工具。串口通信、文件镜像

52、内核映像分为压缩的内核映像和未压缩的内核映像。其中,压缩的内核映像通常名为,而未压缩的内核映像通常名为。zImage、vmlinux 53、服务就是将宿主机的一个目录通过网络可以被到其他计算机上,并且作为其他计算机的一个目录。NFS、挂载

54、Cramfs文件系统是一种经过压缩的、极为简单的文件系统,因此非常适合系统。只读、嵌入式

55、被称为嵌入式Linux系统中的“瑞士军刀”的构造文件系统最常用的软件工具包是,它将许多常用的结合到了一个单独的可执行程序中。Busybox、Linux命令和工具

1、下面哪个系统属于嵌入式系统。()

A、“天河一号”计算机系统

B、联想T400笔记本计算机

C、联想S10上网本

D、联想OPhone手机

2、下面哪一种工作模式不属于ARM特权模式()。

A、用户模式

B、系统模式

C、软中断模式

D、FIQ模式

3、ARM920T的工作状态包括()。

A、测试状态和运行状态

B、挂起状态和就绪状态

C、就绪状态和运行状态

D、ARM状态和Thumb状态

4、RS232-C串口通信中,表示逻辑1的电平是()。

A、0v

B、3.3v

C、+5v~+15v

D、-5v~-15v

5、ARM汇编语句“ADD R0, R2, R3, LSL#1”的作用是()。

A. R0 = R2 + (R3 << 1)

B. R0 =( R2<< 1) + R3

C. R3= R0+ (R2 << 1)

D. (R3 << 1)= R0+ R2

6、I2C协议中有几根线()

A.1

B.2

C.3 C.4

7、指令“LDMIA R0!, {R1, R2, R3, R4}”的寻址方式为()。

A、立即寻址

B、寄存器间接寻址

C、多寄存器寻址

D、堆栈寻址

8、μClinux与标准Linux最大的区别在于()。

A、文件系统

B、内存管理

C、任务调度算法

D、应用开发模式

9、RS-232C串行通信总线的电气特性要求总线信号采用()。

A、正逻辑

B、负逻辑

C、高电平

D、低电平

10、下面哪种操作系统不属于商用操作系统。 ( )

A. windows xp

B. Linux

C. VxWorks

D. WinCE

11. 下面哪点不是嵌入式操作系统的特点。 ( )

A. 内核精简

B. 专用性强

C. 功能强大

D. 高实时性

12. 下面哪种不属于嵌入式系统的调试方法。 ( )

A. 模拟调试

B. 软件调试

C. BDM/JTAG调试

D. 单独调试

13. 在嵌入式ARM处理器中,下面哪种中断方式优先级最高。 ( )

A. Reset

B. 数据中止

C. FIQ

D. IRQ

14. NAND FLASH和NOR FLASH的区别正确的是。 ( )

A. NOR的读速度比NAND稍慢一些

B. NAND的写入速度比NOR慢很多

C. NAND的擦除速度远比NOR的慢

D.大多数写入操作需要先进行擦除操作

15. 下面哪种嵌入式操作系统很少用在手机上。 ( )

A. Symbian

B. linux

C. Win CE

D. VxWorks

16、0X17&0X11的运算结果是。 ( )

A.0X01

B.0X11

C.0X17

D.0X07

17、以下哪种方式不属于文件系统的格式。()

A.FAT

B.DOS

C.NTFS

D.EXT

18、下面哪个特点不属于USB设备的特点。( )

A.串行通信方式

B.不可热拨插

C.分HOST、DEVICE和HUB

D.通信速率比RS232快

19、CPSR寄存器中反映处理器状态的位是()

A.J位

B.I位

C.F位

D.T位

20、下列描述不属于RISC计算机的特点的是()。

A.流水线每周期前进一步。B.更多通用寄存器。

C.指令长度不固定,执行需要多个周期。

D.独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输。

21使用Host-Target联合开发嵌入式应用,()不是必须的。

A、宿主机

B、银河麒麟操作系统

C、目标机

D、交叉编译器

22、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为()。

A、0x21

B、0x68

C、0x65

D、0x02

23、S3C2410处理器的寄存器组有()个寄存器。

A、7

B、32

C、6

D、37

24、寄存器R15除了可以做通用寄存器外,还可以做()

A. 程序计数器

B. 链接寄存器

C. 堆栈指针寄存器

D. 基址寄存器

25、S3C2410X处理器为用户进行应用设计提供了支持多主总线的IIC接口。处理器提供符合IIC协议的设备连接的串行连接线为()。

A. SCL和RTX

B. RTX和RCX

C. SCL和SDA

D. SDA和RCX

26、下列CPSR寄存器标志位的作用说法错误的是()。

A. N:负数

B. Z:零

C. C:进位

D. V: 借位

27、NAND FLASH和NOR FLASH的区别正确的是。( )

A. NOR的读速度比NAND稍慢一些

B. NAND的写入速度比NOR慢很多

C. NAND的擦除速度远比NOR的慢

D.大多数写入操作需要先进行擦除操作

28、下面哪个系统不属于嵌入式系统()

A、MP3播放器

B、GPS接收机

C、“银河玉衡”核心路由器

D、“天河一号”计算机系统

29、在嵌入式系统设计中嵌入式处理器选型是在进行()时完成。

A、需求分析

B、系统集成

C、体系结构设计

D、软硬件设计

30、关于ARM子程序和Thumb子程序互相调用描述正确的是()。

A、系统初始化之后,ARM处理器只能工作在一种状态,不存在互相调用。

B、只要遵循一定的调用的规则,Thumb子程序和ARM子程序就可以互相调用。

C、只要遵循一定的调用的规则,仅能Thumb子程序和ARM子程序。

D、只要遵循一定的调用的规则,仅能ARM子程序和Thumb子程序。

31、关于RAM处理器的异常的描述不正确的是()。

A、复位属于异常

B、除数为零会引起异常

C、所有异常都要返回

D、外部中断会引起异常

32、嵌入式系统最常用的数据传送方式是()。

A、查询

B、中断

C、DMA

D、I/O处理机

33、uClinux与Linux最大的区别在于()。

A、文件系统

B、内存管理

C、任务调度算法

D、应用开发模式

34、嵌入式操作系统一般通过()手段来解决代码体积与嵌入式应用多样性的问题。

A、使用可定制的操作系统

B、将操作系统分布在多个处理器上运行

C、增大嵌入式设备的存储容量

D、使用压缩软件对操作系统进行压缩

35、以下关于嵌入式系统说法正确的是()

A、以开发为中心

B、对实时,成本,功耗要求严格

C、软硬件协同

D、软件可剪裁

36、以下哪一项属于嵌入式系统不具备的特点()

A、采用专用处理器

B、跨平台可移植

C、软硬件协同一体化

D、小型化与有限资源

37、嵌入式应用软件的开发阶段不包括()

A、交叉编译和链接

B、开发环境的建立

C、联机调试

D、应用程序模块加载

38、以下哪一项不属于嵌入式处理器()

A、PowerPC

B、pentium

C、ARM

D、MIPS

39、在指令系统的各种寻址方式中,获取操作数最快的方式是()

A、直接寻址

B、立即寻址

C、寄存器寻址

D、间接寻址

40、ARM微处理器的寄存器在Thumb状态与ARM状态下相同的是()

A、R8-R12

B、R15和CPSR

C、R13-R14

D、R0-R7

41、以下哪一项不属于ARM异常中断()

A、复位

B、IRQ

C、条件转移

D、.数据终止

42、ARM寄存器组中除了以下哪组寄存器以外所有处理器模式下都可以访问()

A、SPSR

B、R0-R7

C、CPSR

D、R8-R9

43、和PC机系统相比,下列哪个不是嵌入式系统独具的特点()

A、系统内核小

B、专用性强

B、可执行多任务D、系统精简

44、UCOS-II操作系统属于()

A、顺序执行系统

B、占先式实时操作系统

C、非占先式实时操作系统

D、分时操作系统

45、ARM公司是专门从事()

A、基于RISC技术芯片设计开发

B、ARM芯片生产

C、软件设计

D、ARM芯片销售

46、ARM9系列微处理器是()

A、三级流水线结构

B、四级流水线结构

C、五级流水线结构

D、六级流水线结构

47、在所有工作模式下,()都指向同一个物理寄存器,即各模式共享

A、R0-R7

B、R0-R12

C、R8-R12

D、R13,R14

48、当异常发生时,寄存器()用于保存CPSR的当前值,从异常退出时则可由它来恢复CPSR.

A、SPSR

B、R13

C、R14

D、R15

49、能实现把立即数0X3FF5000保存在R0中的指令是()

A、LDR R0, = 0X3FF5000

B、LDR R0, 0X3FF5000

C、MOV R0, 0X3FF5000

D、MOV R0, =0X3FF5000

50、ARM指令LDMIA R0,{R1, R2, R3,R4 } 实现的功能是()

A 、R1←[R0],R2←[R0+4],R3←[R0+8],R4←[R0+12]

B、R1←[R0],R2←[R0-1],R3←[R0-2],R4←[R0-3]

C、R1←[R0],R2←[R0+1],R3←[R0+2],R4←[R0+3]

D、R1←[R0],R2←[R0-4],R3←[R0-8],R4←[R0-12]

51、()伪指令用于定义一个代码段或数据段

A、RLIST

B、DCB

C、MAP

D、AREA

52、在上机实验中,ADS开发环境下,调试程序用()软件

A、AXD

B、Debug

C、Gcc

D、Make

53、针对没有MMU的ARM芯片,其操作系统可以使用()

A、Windows CE ,Linux

B、VxWork

C、uClinux, UC/OS-II

D、以上都可以

54、嵌入式系统开发系统使用的()方式中,使用仿真头完全取代目标板上的CPU,

在不干扰处理器的正常运行情况下,实时检测CPU的内部工作情况。

A、基于JTAG的ICD

B、在线仿真器ICE

C、背景调试模式BDM

D、软件模拟环境

55、在嵌入式Linux开发系统,微机与开发版通过串口连接,主要是用于()

A、下载应用程序

B、下载操作系统映像文件

C、实现BootLoader的人机操作界面

D、实现应用程序的人际操作界面

56、指令MSR CPSR_C,R0实现的功能是()

A、传送R0的内容到CPSR中,更新CPSR

B、传送R0的内容到CPSR中,但仅修改其控制域

C、传送CPSR的内容到R0

D、传送CPSR的控制域内容到R0

57、某文件的所有者拥有全部权限;组内的权限为可执行可写;组外成员的权限为只执行,则该文件的权限为()

A、467

B、674

C、476

D、764

58、linux下删除文件命令为()

A、mkdir

B、rmdir

C、mv

D、rm

59、为了查找出当前用户运行的所有进程的信息,我们可以使用( A )命令:

A、ps -a

B、ps -u

C、ls -a

D、ls –l

60、假设当前目录下有文件Makefile,下面是其内容:

pr1: prog.o subr.o

gcc –o pr1 prog.o subr.o

prog.o: prog.c prog.h

gcc –c –l prog.o prog.c

subr.o: subr.c

gcc –c –o subr.o subr.c

clear:

rm –f pr1*.o

现在执行命令make clear,实际执行的命令是():

A、rm –f pr1*.o

B、gcc –c –l prog.o prog.c

C、gcc –c –o subr.o subr.c

D、都执行

61、LINUX支持网络文件系统NFS,下列哪个命令实现了将位于 192.168.1.4机器上的/opt/sirnfs 目录挂载到本机/mnt/sirnfs下:()

A、mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs

B、mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs

C、mount nfs –t 192.168.1.4:/opt/sirnfs /mnt/sirnfs

D、mount nfs –t /mnt/sirnfs 192.168.1.4:/opt/sirnfs

62、同CISC相比,下面哪一项不属于RISC处理器的特征()

A、采用固定长度的指令格式,指令规整、简单、基本寻址方式有2~3种。

B、减少指令数和寻址方式,使控制部件简化,加快执行速度。

C、数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率,同时简化处理器的设计。

D、RISC处理器都采用哈佛结构。

63、在ARM体系结构中,要从主动用户模式(User)切换到超级用户模式(Supervisor),应采用( B )方法。

A、直接修改CPU状态寄存器(CPSR)对应的模式

B、先修改程序状态备份寄存器(SPSR)到对应的模式,再更新CPU状态

C、使用软件中断指令(SWI)

D、让处理器执行未定义指令

64、在ARM Linux体系中,用来处理外设中断的异常模式是()

A、软件中断(SWI)

B、未定义的指令异常

C、中断请求(IRQ)

D、快速中断请求(FIQ)

69、通常所说的32位微处理器是指()

A、地址总线的宽度为32位

B、处理的数据长度只能为32位

C、CPU 字长为32位

D、通用寄存器数目为32个

70、以下叙述中正确的是()

A、宿主机与目标机之间只需要建立逻辑连接即可

B、在嵌入式系统中,调试器与被调试程序一般位于同一台机器上

C、在嵌入式系统开发中,通常采用的是交叉编译器

D、宿主机与目标机之间的通信方式只有串口和并口两种

71、对ARM处理器说法不正确的是()。

A、小体积、低功耗、低成本、高性能

B、支持Thumb(16位)/ARM(2位)双指令集

C、只有Load/Store指令可以访问存储器

D、寻址方式多而复杂

72、如果Boot Loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别独立存放,则其存储结构的分配顺序应当是:()。

A、文件系统、内核、启动参数、Bootloader

B、启动参数、Bootloader、内核、文件系统

C、Bootloader、内核、启动参数、文件系统

D、Bootloader、启动参数、内核、文件系统

专业名词解释

RTOS 实时操作系统SOC片上系统RSIC精减指令集

CSIC复杂指令集kernel内核Scheduler调度

GUI图形用户界面AHB先进的高性能总线

APB先进的外围总线UART通用异步收发器/通用异步串口

说明:标红色表示没错,未标红色表示错

1、BootLoader的片级初始化阶段主要完成微处理器以外的其他硬件设备的初始化。

2、嵌入式软件具有规模较小、开发难度大、高实时性和高可靠性等特点。

3、按系统的类型,可以把EOS分为商业化系统、专用系统和开放源代码系统3大类。

4、按照系统对响应时间的敏感程度,EOS可以分为硬实时系统和软实时系统2大类。

5、嵌入式Linux操作系统属于单体内核系统。

6、VxWorks采用是一种分层结构的嵌入式操作系统。

7、采用单道程序设计的操作系统在任何时候只能有一个程序在运行。

8、在时间片轮转算法中,把系统当中的所有就绪任务按照“先进后出”的原则进行排列。

9、BootLoader 与主机通信通常采用并行通信。

10、大多数Boot Loader 都分为stage1 和stage2 两大部分。

11、vivi是WinCE的Bootloader.

12、Blob是一款用于Intel公司推出的Xscale架构的CPU引导程序。

13、Linux不可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。

14、Linux 与其他操作系统的区别在于Linux 是一种开放、免费的操作系统。

15、Linux 启动装载程序主要有两种,分别为lilo 、grub 。

16、etc/inittab 文件中可以设置开机默认进入的运行级别。

17、Linux 是一个运行在保护模式下的32位操作系统,采用flat memory 模式,最常用到的二进制代码是ELF 格式的。

18、利用gcc 命令可同时编译并连接C 和C++源程序。

19、make config 是Linux 配置内核最简单也是最枯燥的一种方法。

20、/proc 是Linux 的虚拟的目录,它是系统内存的映射,可以直接访问这个目录以获取系统信息。

21、处于就绪状态的任务只能切换到运行状态

22、嵌入式软件具有规模较小、开发难度大、高实时性和高可靠性等特点。

23、嵌入式Linux 操作系统属于单体内核系统。

24、利用gcc 命令可同时编译并连接C 和C++源程序。

25、FIQ 异常是为了支持数据传输或者中断处理而设计的。

26、ARM 指令为32位的长度,Thumb 指令为16位长度。

27、ARM 微处理器采用RISC 指令集,使用大量的寄存器。

28、所有的ARM 指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。

29、R13在Thumb 指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。

30、

指令MOV R0,R2,LSL #3 ;执行前,各寄存器的值如下,请写出指令执行后,各寄存器的值。

答:指令执行后,各寄存器的值为:

0x08

R0 R2 0x01 0x55 R0 R2 0x01

1、RTOS定义,RTOS分类及其区别。

RTOS是指能够在指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统,系统能够处理和存储控制系统所需要的大量数据。RTOS主要分为强实时(Hard Real-Time)系统和弱实时(Soft Real-Time)系统。强实时系统应用在航空航天、军事、核工业等领域中,弱实时系统如视频点播系统、信息采集与检索系统等。

2、简述嵌入式系统的组成。

答:嵌入式系统通常由包含有嵌入式处理器、嵌入式操作系统、应用软件和外围设备接口的嵌入式计算机系统和执行装置(被控对象)组成。嵌入式计算机系统是整个嵌入式系统的核心,可以分为硬件层、中间层、系统软件层和应用软件层。执行装置接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。

3、ARM微处理器的运行模式有哪几种,请列举并说明。

答:ARM微处理器的运行模式有7种,分别为:

(1)用户模式(User,usr):正常程序执行时,ARM处理器所处的状态。(2)快速中断模式(FIQ,fiq):用于快速数据传输和通道处理。

(3)外部中断模式(IRQ,irq):用于通常的中断处理。

(4)特权模式(Supervisor,sve):供操作系统使用的一种保护模式。

(5)数据访问中止模式(Abort,abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。

(6)未定义指令终止模式(Undefined,und):用于支持硬件协处理器软件仿真。(7)系统模式(System,sys):用于运行特权级的操作系统任务。

4、请简述ARM微处理器的用户模式和特权模式,以及用户模式向特权模式的转换。

答:(1)除了用户模式之外的其他6种处理器模式称为特权模式.特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。

(2)特权模式中,除系统模式外,其他5种模式又称为异常模式。大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统

资源,应用程序也不能直接进行处理器模式的切换。

(3)用户模式下,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。

5、请简述ARM微处理器两种工作状态集的切换操作及方法。

答:ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换:

(1)在开始执行代码时,处于ARM状态;

(2)当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态;

(3)当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI 等),则异常处理返回时,自动切换到Thumb状态;

(4)当操作数寄存器的状态位(位0)为0时,执行BX指令(状态跳转)时可以使微处理器从Thumb状态切换到ARM状态。

在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。

6、简述嵌入式系统的一般定义和基本特征

答:定义:嵌入式系统(Embedded System)是以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

基本特征:(1)专用性: 采用专用的嵌入式处理器,功能算法的专用性;

(2)小型化与有限资源: 资源约束和空间约束与专用性;

(3)系统软硬件设计的协同一体化:硬件与软件的协同设计和应用软件与操作系统的一体化设计开发。

7、试描述异常发生时的响应的过程。

答:当一个异常出现以后,ARM微处理器会执行以下几步操作:

①将下一条指令的地址存入相应连接寄存器LR。

②将CPSR状态传送到相应的SPSR中。

③根据异常类型,强制设置CPSR的运行模式位。

④强制PC从相关的异常向量地址取下一条指令执行,跳转到相应的异常处理程序。还可以设置中断禁止位,以禁止中断发生。

8、简述ARM汇编语言与C语言和混合编程有哪几种方式。

1)汇编程序中调用C程序;2)C程序中调用汇编程序;3)C程序中内嵌汇编语句;4)从汇编程序中访问C程序变量。

9、简述“满递增”、“满递减”堆栈的特点。列举1-2个指令。

答:满递增堆栈:堆栈指针指向最后压入的数据,且上低地址向高地址生成,例如指令LDMFA、STMFA等。

满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成,例如指令LDMFD、STMFD等。

10、简述“空递增”、“空递减”堆栈的特点。列举1-2个指令。

答:空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成,例如LDMEA、STMEA等。

空递减堆栈:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成,例如指令LDMED、STMED等。

11、什么是非抢先式实时操作系统?有何优缺点?它的实时性如何决定?

答:对于基于优先级的实时操作系统而言,非抢先式实时操作系统是指某个任务运行后,就把CPU控制权完全交给了该任务,直到它主动将CPU控制权还回来。优点:实时性比不使用实时操作系统的好,程序设计相对简单,可调用不可重入函数(任务间不嵌套)。(3分)

缺点:如果最长任务的执行时间不能确定,系统的实时性就不能确定。(1分)实时性:取决于最长任务的执行时间。(1分)

12、简述RISC(精简指令集计算机)的特点。

答:在RISC中,优先选取使用频率最高的、很有用但不复杂的指令,避免使用

复杂指令;固定指令长度,减少指令格式和寻址方式种类;指令之间各字段的划分比较一致,各字段的功能也比较规整;采用Load/Store指令访问存储器,其余指令的操作都在寄存器之间进行;增加CPU中通用寄存器数量,算术逻辑运算指令的操作数都在通用寄存器中存取;大部分指令控制在一个或小于一个机器周期内完成;以硬布线控制逻辑为主,不用或少用微码控制;采用高级语言编程,重视编译优化工作,以减少程序执行时间。

13、简述ARM的小端格式,试举例说明。(大端格式如何存储数据)

答:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处,称为小端字节顺序存储法。

假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位于0x6000处,其值用十六进制表示为0x23456789。如果按小端法存储,则其最低字节数据0x89存放在内存低地址0x6000处,最高字节数据0x23存放在内存高地址0x6003处。

14、什么是小端和大端存储器组织?假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位于0x6000处,其值用十六进制表示为0x12345678,分别写出以大端和小端存储的结果。

答:1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。 2) 大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。

大端存储:(0x6000)=0x12,(0x6001)=0x34,(0x6002)=0x56,(0x6003)=0x78 小端存储:(0x6000)=0x78,(0x6001)=0x56,(0x6002)=0x34,(0x6003)=0x12

15、简述ARM的几个特殊寄存器(R13、R14、R15、R16)的作用。

答:寄存器R13通常用作堆栈指针,称作SP。寄存器R14用作子程序链接寄存器,也称为链接寄存器LR。当执行带链接分支指令BL时,得到R15的备份。

R15用作程序计数器PC。R16用作程序状态寄存器CPSR,存放当前程序状态。每种异常模式都有一个程序状态保存寄存器SPSR,当异常出现时,SPSR用于保

留CPSR的状态。

16、寄存器CPSR,SPSR的功能各是什么?

答:1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。所有处理器模式下都可以访问当前的程序状态寄存器CPSR。

2)在每种异常模式下都有一个对应的物理寄存器—程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

17、简述使用Thumb技术的优点。

答:(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,可以带来低功耗,小体积,低成本。

18、什么是GUI?嵌入式系统对GUI有什么要求?

答:GUI称之为图形用户界面,是指计算机与使用者之间的对话接口,是计算机的重要组成部分。(2分,答出要点即可得分)

嵌入式系统对GUI的要求:轻型,占用资源少;高性能;高可靠性;可配置。(3分,答出1点即可得1分)

19、在嵌入式linux系统引导阶段会在终端上打印如下信息:

Kernel command line: console=ttyS0,1152000 ip=bootp root/dev/nfs,试解释以上打印出的信息。

答:以上打印信息表示引导中的内核在串行设备ttyS0(通常是第一个串口)上打开一个控制台,通信波特率设定为115200bit/s。此外,它还通过一个BOOTP服务器获取自身的初始化IP地址,并通过NFS协议挂载根文件系统。

20、简述Bootloader的启动过程。

答:Bootloader的启动分为stage1和stage2两个阶段。一般依赖于CPU 体系结

构的代码,比如设备初始化代码等,都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍且启动快的目的;而stage2 则通常用C语言来实现,这样可以实现各种复杂的功能(比如串口、以太网接口的支持等),而且代码会具有更好的可读性和可移植性。

分析题

1、能读懂简单的ARM汇编程序。

请分析以下汇编程序代码的功能,写出程序功能和划线语句①-③的含义。

AREA F1, CODE, READONLY ①

ENTRY

start

LDR r1, =s1

LDR r0, =s2

BL fun ②

fun

LDRB r2, [r1],#1

STRB r2, [r0],#1 ③

CMP r2, #0

BNE fun

MOV pc,lr

AREA Strings, DATA, READWRITE

s1 DCB "First string – s1",0

s2 DCB "Second string – s2",0

END

①程序段开始标识,段名f1,是只读代码段。(2分)

②不相等则跳转至标号fun处;(2分)

③将r2字节数据送到以r0+1作为地址所在单元;(2分)

程序功能:将字符串s1中的内容送到字符串s2中。(4分)

2、读下面的程序,说明这段程序的功能。

AREA Example1,CODE,READONL Y ;声明代码段Example1

ENTRY ;标识程序入口

CODE32 ;声明32位ARM指令

START MOV R0,#0 ;设置参数

MOV R1,#10

LOOP BL ADD_SUB ;调用子程序ADD_SUB

B LOOP ;跳转到LOOP

ADD_SUB

ADDS R0,R0,R1 ;R0 = R0 + R1

MOV PC,LR ;子程序返回

END ;文件结束

答:实现两个寄存器相加。

3、编程题(能写与以下类似的makefile文件)

hello由有2个C文件和1个头文件编译链接生成,要求写一个makefile来告诉make命令如何编译和链接这几个文件。

file1.c:#include

#include”file2.h”

int main(){……}

file2.h:int function(){……}

file2.c:#include”file2.h”

void file2fun(){……}

解:

对应的makefile文件如下:

hello:file1.o file2.o

arm-linux-gcc file1.o file2.o –o hello

file1.o:file1.c file2.h

arm-linux-gcc –c file1.c –o file1.o

file2.o:file2.c file2.h

arm-linux-gcc –c file2.c –o file2.o

clean:

rm –rf file1.o file2.o test

评分标准:每条指令正确得1分,指令格式正确2分,共10分。

4、分析计数式A/D转换器结构图

5、分析操作系统中任务的三种基本状态是如何相互转换的。(请作图说明)。 解:任务具有运行(running )、就绪(ready )和阻塞(blocked )三种基本状态。(3分)

任务在运行状态时占有CPU 并在CPU 上运行。(1分)

当一个任务已具备运行条件,但由于CPU 正在运行其他的任务,暂时不能运行该任务时,称为就绪状态。只要把CPU 分给该任务,它就能够立刻执行。(1分)

任务因为正在等待某种事件的发生而暂时不能运行称为阻塞状态,也叫等待状态(waiting )。此时,即使CPU 已经空闲下来了,该任务也还是不能运行。(1分)

在一定条件下,任务会在不同的状态之间来回转换,存在运行→阻塞、运行→就绪、就绪→运行、阻塞→就绪四种转换关系。(共4分,注:图2分,4种转换关系2分)

6、写一段 ARM 汇编程序:循环累加队列myarray 中的所有字数据,直到碰上零值元素,结果放在r4中。程序框架如下,补充代码完成上述功能。

AREA total, CODE READONLY

ENTRY start

MOV r4, #0 ADR r0, myarray ;在此补充代码

loop

LDR r1, [r0], #4

ADD

r4, r4, r1 CMP

r1, #0 BNE

loop

图8.3.4 任务间的状态转换图

华为嵌入式面试题

华为嵌入式系统面试题 (1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选 项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有 什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而 str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将 str 中的小写字母转换成大 写字母{ for( size_t i=0; i

面试题嵌入式软件开发

1. 什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。(好工程的回答,不是么~~~:)) 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2. char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,const修饰的是指针p,故p的值不可以修改 char const * p;//const修饰的是*p,为指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3. 数组变量和指针的区别? [cpp]view plaincopy 1.#include https://www.doczj.com/doc/bf12546064.html,ing namespace std; 3. 4.int main(int argc, char const *argv[]) 5.{ 6.char str1[] = "abc"; 7.char str2[] = "abc"; 8.const char str3[] = "abc"; 9.const char str4[] = "abc"; 10.const char *str5 = "abc"; 11.const char *str6 = "abc"; 12.char *str7 = "abc"; 13.char *str8 = "abc"; 14. 15. cout << ( str1 == str2 ) << endl; 16. cout << ( str3 == str4 ) << endl; 17. cout << ( str5 == str6 ) << endl; 18. cout << ( str7 == str8 ) << endl; 19. 20.return 0; 21.} 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

arm9嵌入式课后答案

arm9嵌入式课后答案 【篇一:arm嵌入式系统结构与编程习题答案(全)】ass=txt>第一章绪论 1. 国内嵌入式系统行业对“嵌入式系统”的定义是什么?如何理解?答:国内嵌入式行业一个普遍认同的定义是:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专业计算机系统。从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的剪裁利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专业计算机系统。 2.嵌入式系统是从何时产生的,简述其发展历程。 答:从20世纪70年代单片机的出现到目前各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了30多年的发展历史。 嵌入式系统的出现最初是基于单片机的。intel公司1971年开发出第一片具有4位总线结构的微处理器4004,可以说是嵌入式系统的萌芽阶段。80年代初的8051是单片机历史上值得纪念的一页。20世纪80年代早期,出现了商业级的“实时操作系统内核”,在实时内核下编写应用软件可以使新产品的沿着更快,更节省资金。20世纪90年代实时内核发展为实时多任务操作系统。步入21世纪以来,嵌入式系统得到了极大的发展。在硬件上,mcu的性能得到了极大的提升,特别是arm技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体,将嵌入式系统推向了一个崭新的阶段。 3.当前最常用的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点。答:主要有嵌入式linux和嵌入式实时操作内核uc/os-ii 嵌入式linux操作系统是针对嵌入式微控制器的特点而量身定做的一种linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。主要有以下特点:源码开放,易于移植,内核小,功能强大,运行稳定,效率高等。 uc/os是源码工卡的实时嵌入式系统内核,主要有以下特点:源码公开,可移植性强,可固化,可剪裁,占先式,多任务,可确定性,提供系统服务等。

经典嵌入式面试题

经典嵌入式面试题 C语言测试就是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者与被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也就是相当有趣的。 从被面试者的角度来讲,您能了解许多关于出题者或监考者的情况。这个测试只就是出题者为显示其对ANSI标准细节的知识而不就是技术技巧而设计不?这个愚蠢的问题不?如要您答出某个字符的ASCII值。这些问题着重考察您的系统调用与内存分配策略方面的能力不?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。如果上述任何问题的答案就是"就是"的话,那么我知道我得认真考虑我就是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,您能了解应试者C语言的水平。不管怎么样,瞧一下这人如何回答她不会的问题也就是满有趣。应试者就是以好的直觉做出明智的选择,还就是只就是瞎蒙呢?当应试者在某个问题上卡住时就是找借口呢,还就是表现出对问题的真正的好奇心,把这瞧成学习的机会呢?我发现这些信息与她们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。这些问题都就是我这些

年实际碰到的。其中有些题很难,但它们应该都能给您一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让您能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为您所用,请自行按您的意思分配分数。 预处理器(Preprocessor) 1 、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想瞧到几件事情: ?; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) ?; 懂得预处理器将为您计算常数表达式的值,因此,直接写出您就是如何计算一年中有多少秒而不就是计算出实际的值,就是更清晰而没有代价的。 ?; 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数就是的长整型数。 ?; 如果您在您的表达式中用到UL(表示无符号长整型),那么您有了一个好的起点。记住,第一印象很重要。 2 、写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )

嵌入式软件工程师笔试题

(一) 1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2 char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p 3 char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; out < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 4以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 {for( size_t i=0; i

收集的一些嵌入式软件开发工程师面试题

收集的一些嵌入式软件开发工程师面试题 1.什么是平衡二叉树编写一个删除平衡二叉树的程序 2.写一个程序,求有向有权图两点之间的最小权 3.根据你的理解,写出Cstring类的构造函数和析构函数 4.使用C语言实现对ini文件的访问,使程序可以对int,double,字符串类进行读写。 5.n×n个方格(n为任意整数),定义若两个格有公共边则称两个格相邻。现将个格中的N个格子图黑,使每个格子都与黑格子相邻。试编程,使N最小。 1.static变量和static 函数各有什么特点 3.描述一下嵌入式基于ROM的运行方式基于ram的运行方式有什么区别。 4.task 有几种状态 5.task 有几种通讯方式 6.C函数允许重入吗 7.嵌入式操作系统和通用操作系统有什么差别 一面,技术面 (1)VxWorks、uc/OS、Palm嵌入式系统操作系统的区别 (2)做嵌入式软件开发和普通桌面软件开发有什么区别 (3)c语言问题,union和struct 的区别

(4)sizeof(一大堆变量),如果用这个函数分配内存的大小一定与定义相同吗 (5)解释什么是优先级反转。 Can structures be passed to the functions by value Why cannot arrays be passed by values to functions Advantages and disadvantages of using macro and inline functions What happens when recursion functions are declared inline Scope of static variables Difference between object oriented and object based languages Multiple inheritance objects contain howmany multiply inherited ancestor What are the 4 different types of inheritance relationship How would you find out the no of instance of a class Is java a pure object oriented language Why Order of constructor and destructor call in case of multiple inheritance Can u have inline virtual functions in a class When you inherit a class using private keyword which members of base class are visible to the derived class

华为经典嵌入式面试题集资料

(1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{ for( size_t i=0; i

基于ARM9的人脸识别系统 嵌入式报告 课程设计

嵌入式课程设计报告 学院信息电子技术 专业通信工程 班级 学号 姓名 指导教师 2017年07月01日

基于ARM9的人脸识别系统 一、引言 人脸识别背景和意义 人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。 人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。 二、系统设计 1、硬件电路设计 (1)ARM9处理器 本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片。 ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz 以上。指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。 (2)液晶显示屏 为显示摄像头当前采集图像的预览,系统采用三星的320x240像素的液晶屏,大小为206.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极

嵌入式软件工程师笔试题华为优选稿

嵌入式软件工程师笔试 题华为 集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-

(一)1什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 2char*constpcharconst*pconstchar*p上述三个有什么区别 答案: char*constp;//常量指针,p的值不可以修改 charconst*p;//指向常量的指针,指向的常量值不可以改 constchar*p;//和charconst*p 3 charstr1[]="abc"; charstr2[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc";

cout<<(str1==str2)<

嵌入式软件工程师笔试题

笔试题 1: 设 float a=2, b=4, c=3; ,以下 C 语言表达式与代数式 (a+b)+c 计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 D.c/2*(a+b) 参考答案: B,因为 a,b,c 三个变量都是浮点数,所以在 B 答案中其结果是 0,因为在计算 1/2 是就是 0,如果改成 1/2.0 就正确了。 2: 为了向二进制文件尾部增加数据,打开文件的方式应采用 A.″ab″ B.″rb+″ C.″wb″ D.″wb+″ 参考答案: D 3: 下述程序执行后的输出结果是 #include main() { int x= 'f'; printf( “%c n”, 'a'+(x - ‘a'+1)); } A.g B.h C.i D.j 参考答案: A 4:C 语言中,下列运算符优先级高的是 A.! B.% C.>> D.= = 参考答案: A 5:数组定义为“ int a [ 4 ] ; ”,表达式 ( ) 是错误的。 A.*a B. a [ 0 ] C. a D.a++ 参考答案: D

6: 执行语句“ k=7>>1; ”后,变量 k 的当前值是 A.15 B.31 C. 3 D. 1 参考答案: C 7: 定义函数时,缺省函数的类型声明,则函数类型取缺省类型 A.void B.char C.float D.int 参考答案: D 8: 若 main() 函数带参数,参数个数多是 A.0 B. 1 C. 2 D. 3 参考答案: C 只知道有定义形式 main(int argc,char* argv[])) 9: 若有宏定义: #define MOD(x , y) x%y 则执行以下语句后的输出结果是 int a=13 ,b=94; printf( ″%d n″, MOD(b, a+4)); A. 5 B.7 C.9 D.11 参考答案: B 10: 下列各个错误中,哪一个不属于编译错误 A.改变 x 原值 3 为 5 ,写作“ x==5 ; ” B.花括号不配对 C.复合语句中的后一条语句后未加分号 D.变量有引用、无定义参考答案: A 11: 下列程序段运行后, x 的值是 ( ) a=1;b=2;x=0; if(!( — a))x — ; if(!b)x=7;else ++x; A.0 B. 3 C. 6 D.7 参考答案: A

ARM9嵌入式复习总结

ARM9嵌入式复习 第一章 1.嵌入式微处理器的分类。 a)什么是嵌入式微处理器? 1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多 由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。 2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令 系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。 b) 嵌入式微处理器分类 1.按照系列分:ARM系列、MIPS系列、PowerPC系列。 2.按照指令复杂程度分:CISC和RISC两类 2.微处理器划分: a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器 d)嵌入式片上系统 e)多核处理器 3.嵌入式操作系统(EOS)的特性 EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。 第二章 1.ARM7TDMI命名 2.3级流水线与总线架构

三级流水线: 流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中 2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路 径所需要的控制信号。 3.执行:执行已译码的指令 注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出 3.ARM的两种状态与7种工作模式 a)两种状态。 i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。 注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态. b)7种工作模式。

ARM9上的嵌入式Linux系统移植

《自动化技术与应用》2009年第28卷第6期 Techniques of Automation & Applications | 43 1 引言 嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,是对功能、可靠性、成本、功耗有严格要求的专用计算机系统。它一般由以下几部分组成: 嵌入式微处理器、外围硬件设备、嵌入式操作系统、及特定的应用程序。 当前,人类进入信息爆炸的时代,各类信息极度丰富,数字信息技术和网络技术的高速发展,只有借助于各种计算机,才能够对各类信息进行处理,它们已不再局限于以前的PC,而是由形态各异、性能千差万别的嵌入式系统来完成。而嵌入式操作系统主要有:嵌入式Linux 、WindowsCE 、Vxworks 、uC/OS-II 等[1]。本文主要研究嵌入式Linux 在嵌入式系统中的应用。 2 嵌入式Linux 操作系统及特点 将Linux 应用于嵌入式环境,是基于其具有以下特点:(1)Linux 操作系统是层次结构,并且内核源代码完全开放。不同领域和不同层次的用户可以根据自己应用的需要,对内核进行修改,能够低成本的开发出满足自己需要的嵌入式系统。(2)其具有强大的网络支持功能。Linux 诞生于因特网时代,并具有 ARM9上的嵌入式Linux 系统移植 邹颖婷,李绍荣 (电子科技大学光电信息学院,四川 成都 610054) 摘 要:Linux 操作系统在各个嵌入式领域有着越来越广泛的应用。主要研究了在ARM9体系结构上,嵌入式Linux 系统的移植。介 绍了嵌入式Linux 操作系统、移植目标平台SBC2410、及Linux 内核源代码的目录结构。然后详细讲述了在SBC2410硬件平台上实现Uboot 移植的过程,及概要介绍了Linux 操作系统内核移植的过程。最后将嵌入式Linux 系统成功移植上SBC2410平台。 关键词:ARM9;嵌入式Linux;Uboot 移植;内核移植 中图分类号:TP311.54 文献标识码:B 文章编号:1003-7241(2009)06-0043-03 Transplant of the Linux System on ARM9 ZOU Ying-ting, LI Shao-rong ( School of Opto-Electronic Information, University of Electronic Science and Technology of China, Chengdu 610054 China )Abstract: Linux OS has been more and more widely applied in many embedded areas. This paper introduces the transplantation of the Embedded Linux System on the ARM9. The Embedded Linux OS, the SBC2410 board, and the directory structure of the Linux kernel are introduced. The transplant process of the Uboot and of the Linux kernel are also discussed. Key words: ARM9; embedded Linux; transplantation of Uboot; transplantation of the Linux kernel 收稿日期:2009-01-04 Unix 的特性,这保证了它支持所有标准因特网协议,并且可以利用Linux 的网络协议栈,将其开发成为嵌入式的TCP/IP 网络协议栈。此外,Linux 还支持ext2、fat16、fat32、romfs 等文件系统,为嵌入式系统应用开发打下了很好的基础。(3)Linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而且,Linux 也符合IEEE POSIX.1标准,使应用程序具有较好的可移植性[2]。 3 SBC2410硬件平台介绍 SBC2410是一款基于三星公司ARM9处理器S3C2410A,支持ARM-Linux 、WindowsCE 等操作系统的嵌入式硬件平台。平台的主要硬件资源有:一片64M SDRAM,一片64M Nand Flash,一片1M Nor Flash,一个串口 COM0,一个USB Host A 型接口,一个USB Slave B 型接口,一个标准JTAG 接口,等等。平台支持Linux2.4.18内核版本。 4 嵌入式Linux 系统移植 移植主要包括引导加载程序Uboot 的移植和Linux2.4.18内 计算机应用 Computer Applications

嵌入式笔试题

嵌入式笔试题 国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 下面就由为大家介绍一下嵌入式笔试题的文章,欢迎阅读。 嵌入式笔试题篇11:用C语言实现大小端的测试Int CheckCpu(){union{int a;char b;}c;c.a=1;if(c.b==1)printf(“小端);else printf(“大端);}2:volatile的作用有哪些?Volatile第一变量相当于告诉编译器这个变量的值会随时发生变化,每次使用之前都要去内存里从新读取它的值,并不要随意针对它做优化,主要用在:1:一个中断子程序中会访问到的非自动变量;2:多线程应用中被几个线程共享的变量;3:并行设备的硬件寄存器。 3:C语言中static关键字的作用有哪些?1:在函数体中,一个被声明为静态的变量在这个变量在调用过程中维持其值不变;2:在模块内(但在函数体外),一个被声明为静态的变量,可以被这个模块内的所用函数使用,但不能被模块外的函数使用,它是一个本地的全局变量;3:在模块内,一个被声明为静态变量的函数,智能被这个模块内的函数调用;4:static全局变量与局部变量的区别:static全局变量只能被初始化一次,防止其他单元文件中被引用;5:static局部变量与局部变量的区别:static局部变量只能被初始化一次,下一次依据上一次结果的值;6:static函数与普通函数的区别:static在内存中只用一份,普通函数在每

一次调用中维持一份拷贝。 4:请问下面三种变量的区别:Int const *p : 指向常整型的指针;Int *const p; 指向整型的常指针;Int *const *p:指向常整型的常指针;5:在ARM系统中,在函数调用的时候,参数是通过哪种方式传递的。 当参数小于等于4的时候是通过r0~r3来进行传递的,当参数大于4的时候是通过压栈的方式进行传递。 6:中断与异常有何区别.异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。 所谓异常是指软件运行过程中发生了一些必须作出处理的事件,CPU自动产生一个陷入来打断CPU的运行。 7:用预处理指令#define表示一年中有多少秒#define SECONDS_PER_YEAR (60*60*24*365)UL注意后面必须加UL,表示计算的结构是常整型。 8:简述SPI,UART,I2C三种传输方式。 SPI:高速同步串行口,首发独立,可同步进行SPI接口主要应用在EEPROM,Flash,实时时钟,A/D转化器,数字信号处理,是一种全双工同步通讯总线,该接口一般使用四条线:串行时钟线(sck),主出从入线,主入从出线,低电平有效地的从机选择线。

ARM嵌入式系统开发:软件设计与优化

作者简介 Andrew N.Sloss于1992年获得Herefordshire大学(英国)计算机科学学士学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6个多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。 编辑推荐 从事ARM嵌入式系统软件开发的每一位工程师的桌上都应摆着这本书。对于初学者来说,它是一本详尽、透彻的使用指南;对于ARM专家来说,它则是一本有益的参考书。从审阅本书的第一稿以来,我就一直在使用这本书,我愿向任何希望从基于ARM的产品获得最大收益的人推荐这本书。

在过去的10年间,ARM体系统结构已经成为世界上最流行的体系结构之一,从蜂窝电话到汽车制动系统,在这些产品中使用了超过20亿片基于ARM的处理器。许多半导体厂商和产品设计公司组成了全球范围的ARM开发者团体,包括软件开发者、系统设计师和硬件设计师。就ARM系统和软件开发来说,到目前为止,还没有其它任何一本书籍能够真正满足其需求,本书将填补这一空白。 本书涵盖了ARM和Thumb指令集、Intel的XScale处理器,概括了ARM体系结构的不同版本之间的差异,示范了如何实现DSP算法,解释了异常和中断处理,描述了围绕ARM内核的cache技术,以及最有效的存储器管理技术。最后一章介绍了ARMv6体系结构的特征和ARM未来的发展,以及对指令集所做的最新改进,这些改进增强了ARM体系结构的DSP和多媒体处理能务。 本收特色 本书从系统和软件我角度来描述了ARM内核,这是与其它书的显著差别。 作者结合了丰富的ARM软件工程经验和ARM开发者的需要的广泛、透彻的知识。 书中提供了许多实用的运行代码范例,并作了详尽的解释,可以从出版商的网站下载 :https://www.doczj.com/doc/bf12546064.html,/companions/1558608745。 包含了一个简单的嵌入式操作系统。 本书简介 本书从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容包括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理 ;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的ARMv4/v5/Thumb指令的功能、编码、周期定时以及汇编参考。 本书适于从事ARM嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到ARM平台上去的专业技术人员使用,要求对ARM处理器有一定的了解,并有C语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。 目录 第1章 基于ARM的嵌入式系统 1.1 RISC设计思想 1.2 ARM设计思想 1.3 嵌入式系统的硬件 1.3.1 ARM总线技术 1.3.2 AMBA总线协议 1.3.3 存储器 1.3.4 外设 1.4 嵌入式系统的软件 1.4.1 初始化(启动)代码 1.4.2 操作系统 1.4.3 应用程序 1.5 总结 第2章 ARM处理器基础 2.1 寄存器 2.2 当前程序状态寄存器 2.2.1 处理器模式 2.2.2 分组寄存器

试题题库-—嵌入式开发c语言面试题全套

嵌入式开发.C语言面试题 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多 少 秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器 这个常数是的长整型数。 4). 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记 住 ,第一印象很重要。 2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) <= (B) (A) : )) C\C++试题集C\C++ Development这个测试是为下面的目的而设的: 1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变 为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到 要求的性能,嵌入代码经常是必须的方法。 2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比 if-then-else更优化的代码,了解这个用法是很重要的。 3). 懂得在宏中小心地把参数用括号括起来 4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?Least = MIN(*p++, b); 3. 预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用 的。只有书呆子才会读C语言课本的附录去找出象这种 问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是:

相关主题
文本预览
相关文档 最新文档