2011年嵌入式系统习题库及答案(6页).doc
-2011年嵌入式系统习题库及答案-第 6 页嵌入式系统习题库及答案二简答1简述Linux在嵌入式系统市场上取得辉煌的成果的原因。答: 广泛的硬件支持 内核高效稳定 开放源码,软件丰富 优秀的开发工具 完善的网络通信和文件管理机制2 简述嵌入式系统平台移植所需要的步骤。答:硬件平台的移植 引导/装载程序的移植(bootloader移植) 内核的修改配置编译与移植 相关驱动程序的移植 文件系统的移植 开发环境的移植(GUI库移植) 应用程序的移植3嵌入式根文件系统的设计目标应该包括哪些方面?答: 使用简单方便 实时响应 可伸缩性和可配置性 资源有效性 安全可靠 热插拔、在线更新4简述Linux支持的硬件设备种类和Linux操作系统下的主要的设备文件种类。答:主要硬件设备种类:字符设备、块设备和网络设备。主要设备文件种类:字符设备、块设备。5arm系列处理器arm7tdmi中的tdmi四个字母的含义。答: T功能模块表示16位Thumb,可以在兼顾性能的同时减少代码尺寸。M功能模块表示8位乘法器。D功能模块表示Debug,该内核中放置了用于调试的结构,通常它为一个边界扫描链JTAG,可使CPU进入调试模式,从而可方便地进行断点设置、单步调试。 I功能模块表示EmbeddedICE Logic,用于实现断点观测及变量观测的逻辑电路部分,其中的TAP控制器可接入到边界扫描链。 6.嵌入式系统发展经历了那些阶段,有什么特点?答:(1)萌芽阶段 编程语言:汇编语言 操作系统:无 硬件处理器:单芯片可编程控制器件8位MCU,DSP(单片机)(2)简单系统阶段 编程语言:汇编语言 操作系统:无(3)RTOS阶段: 编程语言:汇编语言,c,c 操作系统:VxWorks,QNX,pSOS 硬件处理器:32位嵌入式处理器(ARM)(4)网络化阶段 编程语言:汇编语言,c,c,Java 操作系统:VxWorks,QNX,pSOS,Linux 硬件处理器:高性能嵌入式处理器,SOC7.嵌入式系统的设计方法和过程与传统的单片机开发有什么不同?答:学习方法不同 单片机学习一般从硬件入手,从硬件体系结构、汇编语言到硬件设计、软件设计;嵌入式系统学习可以从软件入手,从应用层编程到操作系统移植、硬件平台设计较好,按单片机设计的学习流程较难掌握硬件处理能力 有无操作系统 系统开发方法:嵌入式系统强调基于平台的设计、软硬件协同设计,单片机大多采用软硬件流水设计 嵌入式系统设计的核心是软件设计(占70%左右的工作量),单片机系统软硬件设计所占比例基本相同 8.简述哈佛体系结构和冯诺依曼体系结构的不同点。答:哈佛体系结构的要点是:(1)使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理; (2)具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输; (3)两条总线由程序存储器和数据存储器分时共用。冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照序顺序执行。其中:(1).计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。(2).程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。(3).控制器根据存放在存储器中地指令序列(程序)进行工作,并由一个程序计数器控制指令地执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。人们把冯诺依曼的这个理论称为冯诺依曼体系结构。10.简述NAND_FLASH和NOR_FLASH的异同点?答:Nor-flash 的读速度比Nand-Flash快 Nor-flash 的写速度比Nand-Flash慢 Nor-flash 的擦除速度比Nand-Flash慢 大多数写入操作需要先进行擦除操作 Nand-flash的擦除单元更小,相应的擦除电路更少 Norflash待用SRAM接口,有足够多的地址引脚,容易进行电路设计 Nand-flash使用复杂的I/O口串行传输数。 单位面积内Nand-flash存储容量更大 Nand-flash占据大容量存储市场(8-128M) 可靠性和耐用性 nandFlash更优秀(可擦写次数100万:10万) 易用性Nor-flash不需要软件支持,片上执行 Nandflash需要驱动程序支持 10.简述S3C2410与ARM920T的关系.答: S3C2410是韩国三星公司的一款基于ARM920T内核的32位RISC嵌入式微处理器,主要面向手持设备以及高性价比,低功耗的应用11嵌入式系统常用调试方法有几种,各有什么优缺点?答:1模拟器方式 调试工具和待调试的嵌入式软件都在主机上运行,通过软件手段模拟执行为某种嵌入式处理器编写的源程序。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行语法和逻辑上的调试。2在线仿真器方式在线仿真器ICE是一种完全仿造调试目标CPU设计的仪器,目标系统对用户来说是完全透明的、可控的。由于仿真器自成体系,调试时可以连接目标板,也可以不接目标板。但是ICE价格昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本非常高。3.监控器方式主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,被调试程序下载到目标板上运行,通过与监控运行于目标机上的监控程序通信,获得调试信息。12.什么是嵌入式操作系统?常见的嵌入式操作系统有哪些(列举五个以上)嵌入式操作系统有什么特点?答:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。” 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统的重要组成部分。嵌入时操作系统具有通用操作系统的基本特点,能够有效管理复杂的系统资源,并且把硬件虚拟化。Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive. 可裁剪;强实时性;统一的接口;操作方便、简单、提供友好的图形用户界面GUI;提供强大的网络功能;稳定性,弱交互性;固化代码;良好的移植性13.什么是交叉开发环境?简述嵌入式linux系统交叉开发环境的构建过程?答:简单的来说:在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。交叉开发是指在一台通用计算机上进行软件的编辑编译,然后下载到嵌入式设备中进行运行调试的开发方式。 1). 下载源文件、补丁和建立编译的目录2). 建立内核头文件3). 建立二进制工具(binutils)4). 建立初始编译器(bootstrap gcc)5). 建立c库(glibc)6). 建立全套编译器(full gcc)14什么是bootloader?常用的bootloader有那些?bootloader两种工作模式有什么不同,分别应用在那种情况下?答:Bootloader是在操作系统运行之前执行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。Grub和Lilo是PC计算机上的,U-boot,vivi,blob,ARMBoot是嵌入式系统上的。两种工作模式是:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。从最终用户的角度看,BootLoader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。(1)启动加载(Boot loading)模式:这种模式也称为自主模式bootstrap。也即Boot Loader将存储在目标板Flash中的内核和文件系统的镜像装载到SDRAM中,整个过程无需用户的介入。这种模式是BootLoader的正常工作模式,因此在嵌入式产品发布的时候,BootLoader显然必须工作在这种模式下。(2)下载Downloading模式:在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从宿主机Host下载文件,比如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新(bootloader自身也可以这样更新)也会使用Boot Loader的这种工作模式。工作于这种模式下的BootLoader通常都会向它的终端用户提供一些简单的命令行接口。Boot Loader 就是在操作系统内核运行之前运行的一段小程序。常用的Bootloade有:U-Boot、VIVI、Blob、RedBoot、ARMboot Bootloader可工作在两种模式下,启动加载模式和下载模式 启动加载(Boot loading)模式应用在嵌入式产品发布的时侯。 下载(Downloading)模式应用在第一次安装内核与根文件系统时被使用;以后的系统更新也会使用Boot Loader 的这种工作模式。 15简述bootloader在嵌入式系统平台上的移植过程?答:1).准备Bootloader软件2).根据目标板硬件平台,修改配置Bootloader。3).交叉编译,形成目标板子可执行的Bootloader二进制BIN文件。4).将Bootloader烧写进目标板。5).配置好宿主机上的minicom或者超级终端。6).启动目标板,若bootloader编译没有错误,烧写正确,就可以在超级终端中看到目标板启动的信息。16Bootloader和BSP有什么不同?答:BSP是开发板支持软件包,一般BSP包含有bootloader. BSP的作用是支持操作系统,使之能够更好的运行于硬件平台;BootLoader就是在操作系统内核运行之前运行的一段小程序。 17说明linux平台下用C语言软件开发方法?(说明需要用到那些工具)。答:gcc + glibc + linux-header + make18什么是嵌入式软件?嵌入式软件有哪几种架构?嵌入式软件有什么特点?答:嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造嵌入式系统软件嵌入式电子设备开发、制造。冯诺依曼和哈佛体系 。19.什么是SOC? SoC(System on a Chip )中文名是系统级芯片.(片上系统);三名词解释1ARM (Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。2.CISC和RISC CISC复杂指令系统;RISC精简指令系统;3. ATPCS ARM-THUMB procedure call standard的简称;ATPCS就是基于ARM指令集和THUMB指令集过程调用的规范。4.JTAGJoint Test Action Group(联合测试行为组织)一种国际标准测试 协议(IEEE 1149.1 兼容) ,主要用于芯片内部测试。5.ADSADS是ARM公司的集成开发环境软件(ARM developer suit)6.BootloaderBootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境7.U-bootUniversal Boot Loader,是遵循GPL条款的开放源码项目 8.VIVIVivi 是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。 Vivi有两种工作模式:启动加载模式和下载模式9.make项目管理器10. MakefileMakefile文件 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。四.初始栈指针指向0x40000000单元,R1=1,R2=2,R3=3,R4=4,画出分别执行如下三条语句后栈结构图。l STMFD SP!,R1-R3 STMFA SP!, R1-R3 STMEA SP!,R1-R3 STMED SP!,R1-R3 五说明下列汇编指令所使用得寻址方式,并且说明指令功能。(1)LDR R0,R1,4 答:基址变址寻址(前变):将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。 (2) LDR R0,R1,4! 答:基址变址寻址(自动变址):将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中,(3)LDR R0,R1 ,4 答: 基址变址寻址(后变): 以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。(4)LDMIA R0,R1,R2,R3,R4答: 多寄存器寻址方式 :该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,(5)STMFD SP! ,R1-R7,LR 答: 堆栈寻址:数据出栈,放入 R1R7,LR 寄存器。满递减堆栈。六编程题1、用C和ARM汇编混合编程,实现求两数和的功能。(C程序调用汇编程序,求和在汇编实现。)。#include <stdio.h>extern int funcsum(int arg1,int arg2);int product;int main() product=funcsum(1,5); printf("%d",product); return 0;AREA Block,CODE,READONLY 声明 EXPORT funcsumfuncsum STMFD R13!,R4,R14MOV R4,#0 mov r0,#a mov r1,#b add r4,r0,r1 mov r0,r4 LDMFD R13!,R4,R14 END