




免费预览已结束,剩余33页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 嵌入式系统基础模拟试题1什么是嵌入式系统?它由哪几个部分组成?答:嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式。具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时的和多任务的体系。根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。简单地讲就是嵌入到对象体中的专用计算机系统。嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。 图1.1 嵌入式系统三个组成部分硬件:包括处理器、存储器(ROM、RAM)、输入输出设备、其他部分辅助系统等。 实时操作系统(Real-Time Operating System,RTOS):用于管理应用软件,并提供一种机制,使得处理器分时地执行各个任务并完成一定的时限要求 。 应用软件:实现具体业务逻辑功能。2嵌入式系统的三要素是什么?答:嵌入式系统的三要素是嵌入、专用、计算机;其中嵌入性指的是嵌入到对象体系中,有对象环境要求;专用性是指软、硬件按对象要求裁减;计算机指实现对象的智能化功能。广义地说一个嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体。即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 。3嵌入式处理器按实时性要求分(软件范畴)可分哪几类:答:可分为以下三类: 非实时系统(PDA) 软实时系统(消费类产品) 硬实时系统(工业和军工系统)4什么是嵌入式微控制器(Microcontroller Unit, MCU)?答:嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。6列出5种以上的嵌入式实时操作系统(Real-Time Operating System,RTOS)。答:嵌入式实时操作系统(Real-Time Operating System,RTOS)是指操作系统本身要能在一个固定时限内对程序调用(或外部事件)做出正确的反应,亦即对时序与稳定性的要求十分严格。目前国际较为知名的有:VxWorks、NeutrinoRTOS、Nucleus Plus、 OS/9、VRTX、LynuxOS,RTLinux、BlueCat RT等。7嵌入式系统一般由几层组成,简介其作用。嵌入式系统一般由硬件层、中间层、软件层和功能层组成。其作用分别如下:(1)硬件层 :由嵌入式微处理器、外围电路和外设组成。外围电路有:电源电路、复位电路、调试接口和存储器电路,就构成一个嵌入式核心控制模块。操作系统和应用程序都可以固化在ROM或者Flash中。为方便使用,有的模块在此基础上增加了LCD、键盘、USB接口,以及其他一些功能的扩展电路。(2)中间层 :硬件层与软件层之间为中间层,也称为BSP(Board Support Package,板级支持包)。作用:将系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关;功能:一般应具有相关硬件的初始化、数据的输入/输出操作和硬件设备的配置等功能。BSP是主板硬件环境和操作系统的中间接口,是软件平台中具有硬件依赖性的那一部分,主要目的是为了支持操作系统,使之能够更好地运行于硬件主板上。(3)软件层 :主要是操作系统,有的还包括文件系统、图形用户接口和网络系统等。操作系统是一个标准的内核,将中断、I/O、定时器等资源都封装起来,以方便用户使用。(4)功能层 :由基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能。功能层是面向被控对象和用户的,为了方便用户操作,往往需要具有友好的人机界面。第二章 基于ARM920T核微处理器及硬件开发平台模拟试题1ARM9TDMI采用了几级流水线工作方式,简要说明。答:ARM9TDMI采用了5级流水线结构,即:取指(F)、指令译码(D)、执行(E)、数据存储访问(M)、写寄存器(W)。2ARM920T内核支持哪两套指令集?分别是多少位的指令系统?答:两套指令集分别是ARM高性能32位指令集和Thumb高代码密度16位指令集。3ARM9TDMI支持的数据类型有几种?答:ARM9TDMI支持的数据类型有字节(8位),半字(16位)及字(32位)数据类型。字必须是四字节边界对齐,半字必须是两字节边界对齐,非对齐数据访问取决与特定区域使用的指令。5ARM920T体系结构支持哪两种方法存储字数据?答:ARM920T体系结构支持两种方法存储字数据即大端格式和小端格式。在大端格式中,字数据的高字节存储在低地址单元中,而字数据的低字节则存放在高地址单元中。在小端存储格式中,低地址单元中存放的是字数据的低字节,高地址单元存放的是字数据的高字节。在基于ARM920T内核的嵌入式系统中,常用小端存储格式来储存字数据。6ARM920T支持几种运行模式?答:ARM920T支持7种运行模式,分别为: 用户模式(usr),ARM处理器正常的程序执行状态; 快速中断模式(fiq),用于高速数据传输或通道处理; 外部中断模式(irq),用于通用的中断处理; 管理模式(svc),操作系统使用的保护模式; 数据访问终止模式(abt),当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护; 系统模式(sys),运行具有特权的操作系统任务; 未定义指令中止模式(und),当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的6种模式称为非用户模式或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及访问受保护的系统资源等情况。7ARM微处理器有多少个32位寄存器?简要说明。答:ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14R0、程序计数器PC、一个或两个状态寄存器都是可访问的。8简述ARM920T在ARM状态下是如何组织寄存器的?答:ARM920T在ARM状态下通用寄存器包括R0R15,可以分为三类: 未分组寄存器R0R7; 分组寄存器R8R14 程序计数器PC(R15)(1)未分组寄存器R0R7:所有的运行模式下,未分组寄存器都指向同一个物理寄存器。(2)分组寄存器R8R14:对于分组寄存器,每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器:R13_R14_其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。(3)程序计数器PC(R15):寄存器R15用作程序计数器(PC)。ARM状态下,位1:0为0,位31:2用于保存PC;Thumb状态下,位0为0,位31:1用于保存PC。9简述ARM920T在Thumb状态下是如何组织寄存器的?答:Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。11ARM920T体系结构中包含一个当前程序状态寄存器(CPSR),其中用于条件码标志位有哪几个位?答:ARM920T体系结构中程序状态寄存器(CPSR),其中N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。13何为异常?ARM920T是如何处理异常事故的?答:当正常的程序执行流程发生暂时的停止时,称之为异常。在处理异常之前,当前处理器的状态必须保留,这样,当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,处理器会按固定的优先级对多个异常进行处理。14ARM920T体系结构所支持的哪几种异常?说明其具体含义。答:ARM920T体系结构所支持以下7种异常:(1)复位:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。(2)未定义指令:当ARM 处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。(3)软件中断:该异常由执行SWI 指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。(4)指令预取中止:若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。(5)数据中止:若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。(6)IRQ(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR 中的I 位为0 时,产生IRQ 异常。系统的外设可通过该异常请求中断服务。(7)FIQ(快速中断请求):当处理器的快速中断请求引脚有效,且CPSR 中的F 位为0 时,产生FIQ 异常。15简述ARM处理器对异常的响应的步骤。答:当一个异常出现以后,ARM微处理器会执行以下几步操作:(1)将下一条指令的地址存入相应连接寄存器LR。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC4或PC8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入的,程序在处理异常返回时能从正确的位置重新开始执行。例如:在软件中断异常SWI中,指令 MOV PC,R14_svc总是返回到下一条指令,而不管SWI是在ARM状态执行,还是在Thumb状态执行。(2)将CPSR复制到相应的SPSR中。(3)根据异常类型,强制设置CPSR的运行模式位。(4)强制PC从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。还可以设置中断禁止位,以禁止中断发生。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。16简述ARM处理器从异常返回的步骤答:异常处理完毕之后,执行以下操作从异常返回:(1)将连接寄存器LR的值减去相应的偏移量后送到PC中。(2)将SPSR复制回CPSR中。(3)若在进入异常处理时设置了中断禁止位,要在此清除。17基于ARM嵌入式系统设计时,应用程序中的异常如何处理?答:当系统运行时,异常可能会随时发生,为保证在ARM 处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM 处理器发生异常时,程序计数器PC 会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指令中止、未定义指令、SWI。18写出基于ARM920T核的处理器的异常优先级(Exception Priorities)。答:当多个异常同时发生时,系统根据固定的优先级决定异常的处理次序。异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指令中止、未定义指令、SWI。第3章2简要说明S3C2410X嵌入式应用系统中用8位存储器构建8位存储系统。答:由于ARM微处理器的体系结构支持8位/16位/32位的存储器系统,相应地可以构建8位的存储器系统、16位的存储器系统或32位的存储器系统,在采用8位存储器构成8位/16位/32位的存储器系统时,除数据总线的连接不同之处,其它的信号线的连接方法基本相同。采用8位存储器构成8位的存储器系统,要在初始化程序中还必须通过BWSCON寄存器中的DWn 设置为00,选择8位的总线方式。 存储器的nOE端接S3C2410X的nOE引脚; 存储器的nWE端接S3C2410X的nWE引脚; 存储器的nCE端接S3C2410X的nGCSn引脚; 存储器的地址总线A15A0与S3C2410X的地址总线ADDR15ADDR0相连; 存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA7DATA0相连。3简要说明S3C2410X嵌入式应用系统中用8位存储器构建16位的存储器系统。答:采用两片8位存储器芯片以并联方式可构成16位的存储器系统,要在初始化程序中将BWSCON寄存器中的DWn 设置为01,选择16位的总线方式。 存储器的nOE端接S3C2410X的nOE引脚; 低8位的存储器的nWE端接S3C2410X的nWBE0引脚,高8位的存储器的nWE端接S3C2410X的nWBE1引脚; 存储器的nCE端接S3C2410X的nGCSn引脚; 存储器的地址总线A15A0与S3C2410X的地址总线ADDR16ADDR1相连; 低8位的存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA7DATA0相连,高8位的存储器的8位数据总线DQ7DQ0与S3C2410X的数据总线DATA15DATA8相连。4简要说明S3C2410X嵌入式应用系统中用8位存储器构建32位的存储器系统。答:采用四片8位存储器芯片以并联方式可构成32位的存储器系统,要在初始化程序中将BWSCON寄存器中的DWn 设置为10,选择32位的总线方式。 存储器的nOE端接S3C2410X的nOE引脚; 低8位的存储器的nWE端接S3C2410X的nWBE0引脚,次低8位的存储器的nWE端接S3C2410X的nWBE1引脚,次高8位的存储器的nWE端接S3C2410X的nWBE2引脚,高8位的存储器的nWE端接S3C2410X的nWBE3引脚; 存储器的nCE端接S3C2410X的nGCSn引脚; 存储器的地址总线A15A0与S3C2410X的地址总线ADDR17ADDR2相连。5在ARM嵌入式应用系统使用SDRAM存储器构建存储器系统的作用。答:在ARM嵌入式应用系统中,SDRAM主要用于程序的运行空间、数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动程序代码,完成系统的初始化后,为提高系统的运行的速度,程序代码通常装入到SDRAM中运行。在S3C2410X片内具有独立的SDRAM刷新控制逻辑电路,可方便地与SDRAM接口。6简述NorFlash和Nand Flash存储器的差别。答:Flash闪存是非易失存储器,是对其内部块的存储器单元块进行擦写和再编程。Flash芯片主要有NorFlash和Nand Flash两种。它们在某些方面存在一定的差异,如:Nand器件执行擦除操作简单,而Nor则要求在进行写入前先将目标块内所有的位都写为0; Nor的读速度比Nand稍快一些; Nand的写入速度比Nor快很多,Nand需4ms擦除,而Nor需要5s快。Nand Flash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,其价格低。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是十万次。Nor具有XIP(eXecute In Place,芯片内执行)特性,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。在接口方面,Nor Flash和Nand Flash也存在着差别。Nor Flash带有SRAM接口,Nand器件使用复杂的I/O口来串行存取数据。7S3C2410X提供了几个通道的UART,怎样与PC机接口?答:S3C2410X提供了3个通道的UART,要使其与PC机通信,必须将其信号电平转换为RS232C 的电平。RS232C规定了双极性的信号逻辑电平:-3V 到-25V 之间的电平表示逻辑“1”。+3V 到+25V 之间的电平表示逻辑“0”。因此这是一套负逻辑定义,以上标准称为EIA 电平。S3C2410X与PC机的异步通信接口下图所示。8S3C2410X的UART模块中的UART线控制寄存器有何作用?答:S3C2410X与UART 的UART线控制寄存器包括ULCON0,ULCON1和ULCON2,主要用来选择每帧数据位数、停止位数,奇偶校验模式及是否使用红外模式,如表3.5和表3.6所示。9S3C2410X的UART模块中的UART控制寄存器有何作用?答:UART控制寄存器包括UCON0, UCON1 and UCON2,主要用来选择时钟,接收和发送中断类型(即电平还是脉冲触发类型),接收超时使能,接收错误状态中断使能,回环模式,发送接收模式等。第6章 一.填空题:(写出下列Linux命令的含义)1、cd 改变目录位置至用户登录时的工作目录。2、cd dir1 改变目录位置至d i r 1目录下。3、cd user 改变目录位置至用户的工作目录。4、cd . 改变目录位置至当前目录的父目录。5、cd ./user 改变目录位置至相对路径user 的目录下。6、cd /./. 改变目录位置至绝对路径的目录位置下。7、cd 改变目录位置至用户登录时的工作目录。8、ls /root/ -l 的命令是查看当前目录下的文件 9、cat /root/.bash_profile命令是查看文件.bash_profile的内容10、more /etc/inittab 命令是分页查看inittab文件内容11、cp file1 file2 将文件file1 复制成f i l e 2。12、cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为f i l e 1。13、cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为f i l e 1。14、cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为f i l e 2。15、cp -r dir1 dir2 复制整个目录。16、mv file1 file2 将文件file1更名为file2。17、mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。18、mv dir1 dir2 将目录dir1 更改为目录dir2。19、mkdir dir1 是建立一新目录d i r 1。20、rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。21、rm -r dir1 删除目录dir1及其子目录下所有文件。22、rm file1 删除文件名为file1 的文件。23、rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。24、rm f* 删除文件名中以f 为字首的所有文件。25、cat file1 以连续显示方式,查看文件名file1 的内容。26、more file1 以分页方式查看文件名file1 的内容。27、cat file1 | more 以分页方式查看文件名file1 的内容。28、du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。29、du -s dir1 显示目录dir1 的总容量。30、chmod 755 dir1 对于目录d i r 1,设定成任何使用者皆有读取及执行的权利,但只有所有者可做修改。31、chmod 700 file1 对于文件f i l e 1,设定只有所有者可以读、写和执行的权利。32、chmod u+x file2 对于文件f i l e 2,增加当前用户可以执行的权利。33、chmod g+x file3 对于文件f i l e 3,增加工作组使用者可执行的权利。34、chmod o-r file4 对于文件f i l e 4,删除其他使用者可读取的权利。35、chown user file1 将文件file1 改为用户user 所有。36、chown -R user dir1 将目录d i r 1及其子目录下面的所有文件改为用户user 所有。37、chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。38、chgrp -R image dir1 将目录d i r 1及其子目录下面的所有文件,改为image 工作组所有。39、ln file1 file2 将文件f i l e 2链接至文件f i l e 1。40、ln -s file3 file4 将文件file4 链接至文件f i l e 3。41、grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。42、find / -name file1 -print 自根目录下寻找文件file1 的路径。43、diff file1 file2 比较文件file1 与file2 内各行的不同之处。44、diff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。45、$ cat config将会把文件config的内容依次显示到屏幕上。46、$ ls /usr/tmp 2 err.file可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。二、综合题1、已知以下4个文件:hello.h、starfun.h、hello.c、star.c,它们的原代码如下,试用gcc编译器按下列三种情况进行程序编译。(1)第一种方法:分步进行程序编译;(2)第二种方法:用动态连接库编译程序;(3)第三种方法:用静态连接库编译程序。Starfun.h 文件内容如下:/*starfun.h*/#ifndef STARFUN_H#define STARFUN_H#define NUM 4#define NUMBER 3int star1() int i,j,k;for(k=1;k=NUM;+k) for(i=1;i=(NUM-k);+i)printf( );for(j=1;j=0;-k) for(i=1;i=(NUMBER-k+1);+i) printf( );for(j=1;j=(2*k-1);+j)printf(*);printf(n);return 0;#endifhello.h文件内容如下:/*hello.h*/#ifndef HELLO_H#define HELLO_Hvoid hello() star1();printf(hello,my friendsn);#endifhello.c 文件内容如下:void showhello() hello();star.c文件内容如下:#include starfun.h#include hello.h#include int main() star1();star2();showhello();return 0;答:第一种方法:分步进行程序编译:(1)由star.c starfun.h 文件生成star.o 目标文件gcc -c star.c -o star.o(2)由hello.c hello.h starfun.h生成hello.o目标文件gcc -c hello.c -o hello.o(3)由hello.o star.o 生成应用程序myproggcc star.o hello.o -o myprog第二种方法:用动态连接库编译程序:(1)rootlocalhost 01_hello# gcc -c -fpic hello.c编译生成了hello.o文件。(2)rootlocalhost 01_hello# gcc -shared -s -o libhello.so hello.o 编译生成了共享库libhello.so 也可以用下面的命令替代上面两步:gcc -fpic -shared -s hello.c -o libhello.so(3)rootlocalhost 01_hello# cp libhello.so /usr/lib 把libhello.so库拷贝到/usr/lib,此文件夹为用户库自动搜索路径(4)rootlocalhost 01_hello# gcc -lhello star.c -o mystar把动态库与star.c一同编译生成可执行的文件mystar。可以用下面命令查看可执行程序mystar 用到的动态库。即rootlocalhost 01_hello# ldd mystar libhello.so = /usr/lib/libhello.so (0x4002d000) libc.so.6 = /lib/tls/libc.so.6 (0x42000000)第三种方法:用静态连接库编译程序:rootlocalhost 01_hello# gcc -c hello.c -o hello.o编译生成了hello.o文件。rootlocalhost 01_hello# ar -rc libhello.a hello.o编译生成了静态连接库libhello.arootlocalhost 01_hello# gcc star.c libhello.a -o mystar把静态库与star.c一同编译生成可执行的文件mystar。rootlocalhost 01_hello# ./mystar 运行可执行文件mystar。2、有prog.c、code.c、prog.h、code.h四个文件,其中prog.c程序代码中包含了prog.h、code.h两个头文件,code.c 包含了code.h头文件,试编写一个简单的Makefile文件,使其能生成test目标文件。.c源代码文件 .h头文件 .o 编译后的目标文件-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。答: 简单的Makefile文件如下:test:prog.o code.o gcc o test prog.o code.oprog.o:prog.c prog.h code.h gcc c prog.c o prog.ocode.o:code.c code.h gcc c code.c o code.oclean: rm f *.o 3、阅读下面的Makefile文件,并对其进行说明。all : prog1 prog2 prog3.PHONY : allprog1 : prog1.o utils.occ -o prog1 prog1.o utils.oprog2 : prog2.occ -o prog2 prog2.oprog3 : prog3.o sort.o utils.occ -o prog3 prog3.o sort.o utils.o答:上面的Makefile中的第一个目标“all”会被作为其默认目标,其依赖于其它三个目标。由于伪目标的特性是,总是被执行的,所以其依赖的那三个目标就总是不如“all”这个目标新。所以,其它三个目标的规则总是会被决议。也就达到了我们一口气生成多个目标的目的。“.PHONY : all”声明了“all”这个目标为“伪目标”。从上面的Makefile文件可以看出,目标也可以成为依赖,伪目标同样也可成为依赖。4、判别下面是Makefile中的规则是否等价,并对其进行说明。规则一: bigoutput littleoutput : text.ggenerate text.g -$(subst output,$) $规则二: bigoutput : text.ggenerate text.g -big bigoutputlittleoutput : text.ggenerate text.g -little littleoutput答:上述两个规则等是价于的,因为-$(subst output,$)中的“$”表示执行一个Makefile的函数,函数名为subst,后面的为参数。此函数是截取字符串的意思,“$”表示目标的集合,就像一个数组,“$”依次取出目标,并执行命令。5、判别下面是Makefile中的规则是否等价,并对其进行说明。规则一: objects = foo.o bar.oall: $(objects)$(objects): %.o: %.c$(CC) -c $(CFLAGS) $ -o $规则二: foo.o : foo.c$(CC) -c $(CFLAGS) foo.c -o foo.obar.o : bar.c$(CC) -c $(CFLAGS) bar.c -o bar.o答:上面的两个规则是等价的,因为规则一指明了目标从$object中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”;而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加上“.c”的后缀,于是,依赖目标就是“foo.c bar.c”。而命令中的“$”和“$”则是自动化变量,“$”表示所有的依赖目标集(也就是“foo.c bar.c”),“$”表示目标集(也就是“foo.o bar.o”)。所以规则二是由规则一展开后的等价规则。6、阅读下面的Makefile文件,并对其中的filter函数进行说明。files = foo.elc bar.o lose.o$(filter %.o,$(files): %.o: %.c$(CC) -c $(CFLAGS) $ -o $(filter %.elc,$(files): %.elc: %.elemacs -f batch-byte-compile $答:函数$(filter %.o,$(files)表示调用Makefile的filter函数,过滤“$filter”集,只要其中模式为“%.o”的内容。7、在Makefile中,若依赖关系需要包含一系列的头文件,比如,如果main.c中有一句“#include defs.h”,试写出建立依赖关系的语句。答:在Makefile中,建立这种依赖关系的语句是:main.o : main.c defs.h8、在下面的Makefile中,可以自动化地生成每个文件的依赖关系了。简述下面模式规则。规则如下:%.d: %.cset -e; rm -f $; $(CC) -M $(CPPFLAGS) $ $.$; sed s, ($* ) .o :*, 1.o $ : ,g $; rm -f $.$答:这个规则的意思是,所有的.d文件依赖于.c文件,“rm -f $”的意思是删除所有的目标,也就是.d文件,第二行的意思是,为每个依赖文件“$”,也就是.c文件生成依赖文件,“$”表示模式“%.d”文件,如果有一个C文件是name.c,那么“%”就是“name”,“$”意为一个随机编号,第二行生成的文件有可能是“name.d.12345”,第三行使用sed命令做了一个替换。第四行就是删除临时文件。总之,这个模式要做的事就是在编译器生成的依赖关系中加入.d文件的依赖,即把依赖关系:main.o : main.c defs.h转成:main.o main.d : main.c defs.h9、在vivi下执行下面命令load flash kernel x,其作用是什么?答:此命令是装载压缩映像文件zImage到flash存储器中,地址是kernel分区,并采用xmodem传输协议。10、在vivi下执行下面命令load flash ucos x 其作用是什么?答:此命令是装载压缩映像文件ucos到flash存储器中,地址是ucos分区,并采用xmodem传输协议。键入bootucos 命令再回车即可运行ucos 程序。11、试写出执行ifconfig eth0 192.168.1.1 netmask 255.255.255.0 命令的含义。答:此命令是设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0。12、试写出执行mount -t nfs 192.168.1.1:/sharedir /mnt命令的含义。答:此命令将nfs服务的共享目录sharedir加载到/mnt/nfs。13、在vivi下执行下面命令load flash root x 其作用是什么?答:此命令是装载根文件系统root.cramfs到flash存储器中,地址是根文件系统分区,并采用xmodem传输协议。14、进入vivi控制台 ,执行以下命令:bon part 0 128k 192k 1216k 4288k:m 64704k 的作用是什么?答:这个命令的操作同时进行了分区和格式化,0128K存放vivi,128K192K存放VIVI控制台指令,192K1216K存放kernel,1216K4288K存放root,其余部分存放应用程序。15、Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。分别简述这五个子系统。答:(1)进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。(2)内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。(3)虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。(4)网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。(5)进程间通讯(IPC)支持进程间各种通信机制。处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。16、简述进程调度与内存管理之间的关系答:进程调度与内存管理这两个子系统互相依赖。在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事情,就是将程序和数据装入内存。17、简述进程间通信与内存管理的关系答:进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有空间,还可以存取共同的内存区域。18、虚拟文件系统与网络接口之间的关系答:虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK设备。19、内存管理与虚拟文件系统之间的关系答:内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。20、Linux 内核的裁剪是对配置菜单的简单选择。但是内核配置菜单本身结构庞大,内容复杂,常用的Linux 内核的裁剪是对配置有哪几种?答:Linux 内核的编译菜单有好几个版本,运行:(1)make config:进入命令行,可以一行一行的配置,但使用不十分方便。(2)make menuconfig:大多数开发人员使用的Linux 内核编译菜单,使用方便。(3)make xconfig:在2.4.X 以及以前版本中xconfig 菜单是基于TCL/TK 的图形库的。21、在完成内核的裁减之后,内核的编译还需执行哪几条命令?答:在完成内核的裁减之后,内核的编译就只要执行以下几条命令:make clean 编译内核之前先把环境给清理干净。有时你也可以用make realclean 或make mrproper 来彻底清除相关依赖,保证没有不正确的.o 文件存在。make dep 编译相关依赖文件make zImage 创建内核镜像文件make modules 创建内核模块,若不创建内核模块,这步可以不要。make install 把相关文件拷贝到默认的目录。在给嵌入式设备编译时这步可以不要。因为具体的内核安装还需要你手工进行。第7章 1、嵌入式Linux的设备文件的属性是由哪三部分信息组成?答:第一部分是文件的类型,第二部分是一个主设备号,第三部分是一个次设备号。其中类型和主设备号结合在一起惟一地确定了设备文件驱动程序及其界面,而次设备号则说明目标设备是同类设备中的第几个。2、嵌入式Linux的设备管理子系统的结构通常由哪几部分组成?答:嵌入式Linux的设备管理子系统的结构通常包括用户进程、文件系统层、设备驱动层和硬件层。3、简述用户进程答:用户进程:用户进程一般位于内核之外,当它需要操作设备时,可以就像访问普通文件一样,通过调用read(),write()等文件操作系统调用来完成对设备文件的访问和控制。4、简述嵌入式Linux的设备管理子系统结构中的文件系统层的作用答:文件系统层:它位于用户进程层下面,属于内核空间,基本功能是执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统编版高三历史二轮复习专练:两宋的政治和军事(解析版)
- 酸碱中和反应课件教学
- 题型03 坐标曲线类-2023年高考生物热点题型专项训练(原卷版)
- 人工智能通识教程(微课版) 课件 03 人工智能技术的新探索-机器学习技术框架
- 唐朝时期的13个万能素材(历史人物)-2026年高考语文复习之议论文写作
- 热点练06 课内外文言文对比阅读-2024年中考语文专练
- 人教精通版六年级英语上册全册教案
- CN120203152A 具有甜味增强效果的复合茶香化合物及其应用
- CN120200555A 一种钙钛矿叠层太阳能电池检测装置及检测方法
- 热点05 三角形的全等与相似-2023年中考数学专练(原卷版)
- 2025年职业指导师考试试卷:职业指导师专业能力
- 小学英语人教版四年级下册 巩固强化练(含答案)
- 2025-2026学年粤教粤科版(2024)小学科学二年级上册(全册)教学设计(附目录)
- 2025年山东高考历史试卷真题讲评及备考策略指导(课件)
- 供养中心考试题及答案
- 2025年云南省中考英语试卷真题(含标准答案及解析)
- 开学第一课(教学课件)-八年级语文上册同步备课系列(部编版)
- 【公开课】第一节+内能及其改变(教学课件)物理沪科版2024九年级全一册
- 海事英语阅读 课件Unit 9 Text A Types of Maritime Vessels
- 发型师的职业素养
- 2025科技公司研发部门劳动合同范本
评论
0/150
提交评论