嵌入式课后题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式课后答案
第一章
1. 什么是嵌入式系统?请列举几个常见的嵌入式系统。
答:根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是控制、监视或者辅助设备、机器和生产线运行的装置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。
这主要是从产品的应用角度加以定义的,由此可以看出嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。
目前被我国科学家普遍认同的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。
常见的嵌入式系统:手机,DVD,路由器,核磁共振仪,全自动洗衣机。
2.嵌入式系统与通用计算机有哪些区别?
答:(1) 以应用为中心;(2) 以计算机技术为基础(3) 软件和硬件可裁减(4) 对系统性能要求严格(5)软件的固件化(6)需要专用的开发工具
3.嵌入式系统的发展分为哪几个阶段?
答:第一阶段:无操作系统的嵌入算法阶段。
第二阶段:以嵌入式CPU为基础,以简单操作系统为核心的嵌入式系统。
第三阶段:以嵌入式操作系统为标志的嵌入式系统。
第四阶段:以基于Internet为标志的嵌入式系统。
4.请列举嵌入式系统的主要应用领域。
答:(1)工业控制领域(2)交通运输领域(3)消费电子产品(4)家电领域(5)通信领域(6)商业和金融领域(7)环境监测领域(8)医疗领域(9)建筑领域(10)军事国防领域(11)航天航空领域
第二章
1. 简述简单嵌入式系统与复杂嵌入式系统的主要区别。
答:简单嵌入式系统很早就已经存在,这类嵌入式系统因为软硬件复杂度都很低,一般不使用操作系统,例如常用的单片机系统。
对于复杂的嵌入式系统,它的开发模式发生了极大的改变。
一个复杂的嵌入式系统不仅硬件系统的开发比单片机复杂了许多,更重要的是在该系统中采用了嵌入式操作系统,其应用软件的开发转变为使用操作系统标准接口的计算机工程领域的应用软件开发。
复杂嵌入式系统具有更强大的功能,但是简单的嵌入式并不会随着复杂的嵌入式系统出现而消亡。
2. 简述嵌入式系统的体系结构。
答:嵌入式系统从组成上看,可分为嵌入式硬件系统与嵌入式软件系统两大部分。
嵌入式硬件层由嵌入式微处理器、嵌入式存储器系统、通用设备和I/O接口等组成。
嵌入式系统的软件层分为嵌入式操作系统和嵌入式应用软件两大部分。
3. 嵌入式处理器分为哪几类?
答:嵌入式处理器可分为以下四种:嵌入式微控制器(MicroController Unit,MCU),嵌入式微处理器(Embedded Microprocessor Unit,EMPU),嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)和嵌入式片上系统(System on Chip,SoC)。
4. ARM中常用的嵌入式存储器都有哪些?
答:ARM系统的存储器可以分为片内存储器和片外存储器。
片内一般以RAM或SRAM为主。
片外通常以Flash和SDRAM为主。
嵌入式系统中常用的几种内存有Flash、SRAM、SDRAM、DDRSDRAM等。
5. 嵌入式系统中常用的外设接口都有哪些?
答:串行接口UART,USB接口,IrDA红外线接口,SPI(串行外围设备接口),I2C总线接口,CAN总线接口,Ethernet(以太网接口)等。
6. 嵌入式系统中常用的输入输出设备都有哪些?
答:嵌入式系统中输入形式一般包括触摸屏、语音识别、按键、键盘和虚拟键盘。
输出设备主要有LCD 显示和语音输出。
7. 简述嵌入式操作系统的特点,请列举几个常见的嵌入式操作系统。
答:(1)可装卸性(2)强实时性(3)统一的接口(4)强稳定性,弱交互性(5)固化代码。
常见的嵌入式操作系统有Windows CE、VxWorks、μC/OS、嵌入式linux。
8.简述嵌入式系统开发的特点。
答:需要交叉开发工具和环境,软硬件协同设计,嵌入式系统开发人员以应用专家为主,软件要求固态化存储,软件代码高质量、高可靠性,系统软件的高实时性
9.简述嵌入式系统的开发周期。
答:
10. 简述嵌入式系统的开发与通常PC 机上的软件开发有什么区别。
答:系统软件开发模式可以分为两类:本地开发模式和交叉开发模式。
嵌入式系统的开发与通常PC 机上的软件开发有很大的区别,原有的PC机的软件开发过程从编写程序、编译和运行等过程全在同一个PC 机平台上完成,属于本地开发(native);嵌入式开发的程序编写和编译与原来一样还在PC 机(host)上完成,但编译产生的结果要在嵌入式目标平台(target)上运行。
通常将这种在主机上开发编译,在目标平台上调试运行的开发模式称为交叉开发。
同样运行在主机上的编译器(例如GCC)编译程序产生目标机上运行的可执行程序的编译过程称为交叉编译。
嵌入式系统采用这种交叉开发、交叉编译的开发环境主要是因为嵌入式系统是种专用的计算机系统,采用量体裁衣量身定制的方法制造。
11. 简述宿主机/目标机的开发模式。
答:交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。
宿主机(host)一般采用一台通用计算机(如PC机或者工作站),它通过串口(Serial)或者以太网(Ethernet)接口与目标机通信。
宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如 Windows 和 Linux),而且还有各种各样优秀的开发工具(如 WindRiver 的Tornado、Microsoft的Embedded Visual C++等),能够大大提高嵌入式应用软件的开发速度和效率。
目标机(target)一般在嵌入式应用软件的开发和调试期间使用,用来区别与嵌入式系统通信的宿主机。
目标机可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。
嵌入式系统的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器(Emulator),其中交叉编译器用于在宿主机上生成能在目标机上运行的代码,而交叉调试器和系统仿真器则用于在宿主机与目标机间完成嵌入式软件的调试。
第三章
1.简述ARM处理器的特点。
答:ARM 处理器采用 RISC架构,具有 RISC的一般特点:
1.采用大量的寄存器,指令执行速度更快;
2.寻址方式灵活简单,执行效率高;
3.采用固定长度的指令格式;
4.大多数数据操作都在寄存器中进行,通过 Load/Store 的体系结构在内存和寄存器之间传递数据。
因此ARM 处理器的内核很小,功耗也就很低。
ARM 处理器还采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,降低芯片的功耗。
这些技术包括:
1.在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理;
2.使用地址自动增加(减少)来优化程序中循环处理;
3.Load/Store 指令可以批量传输数据,从而提高传输数据的效率;
4.所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率;
5.支持 Thumb(16位)/ARM(32位)双指令集,能很好地兼容 8位/16位器件。
2.嵌入式RISC处理器ARM7TDMI中TDMI的基本含义分别是什么?
答:T :支持16 位压缩指令集Thumb。
D :支持JTAG调试器,可片上Debug。
M :支持64位长乘法指令I:嵌入式跟踪宏单元(ICE)。
3.常用的ARM处理器系列都有哪些?
答:ARM 处理器目前应用比较多的是ARM7 系列、ARM9 系列、ARM9E 系列、ARM10E 系列、SecurCore 系
列、Intel 的StrongARM、Xscale 等多个系列,最新的系列是ARM11系列。
4.ARM处理器一般支持的的数据类型都有哪些?
答:8位有符号字节类型数据;8 位无符号字节类型数据;16 位有符号半字类型数据;16 位无符号半字类型数据;32 位有符号字类型数据;32 位无符号字类型数据。
5.什么是大端模式?什么是小端模式?请举例说明它们的区别。
所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。
所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
若寄存器R1=0x123456784,分别按小端模式和大端模式存储在0x2000字单元中,下图分别为在两种模式下内存的存储内容。
6. 请简述ARM7TDMI采用哪几级流水线结构,并说明在ARM状态下各阶段指令地址的关系。
答:ARM7架构采用了三级流水线,分为取指(fetch),译码(decode)和执行(execute)。
程序计数器R15(PC)总是指向取指的指令,而不是指向正在执行的指令或者正在译码的指令。
对于ARM状态下指令,PC 值=当前程序执行位置。
7. 简述ARM和THUMB状态的区别,举例说明使用什么指令从ARM状态转换为Thumb状态。
答:ARM状态:处理器执行32位的字对齐的ARM指令;Thumb状态:处理器执行16位的半字对齐的Thumb指令。
ARM指令集和Thumb指令集均有切换处理器状态的指令BX。
从ARM状态转换到Thumb状态:
ADR R0, TSTART+ 1
BX R0
8. ARM处理器有哪些工作模式?哪些是特权模式?哪些是异常模式?
答:ARM体系结构支持7种工作模式(Processor modes),分别为用户模式(usr)、快中断模式(fiq)、中断模式(irq)、管理模式(svc)、数据访问终止模式(abt)、系统模式(sys)、及未定义指令中止模式(und)。
除去用户模式外的其他6种处理器工作模式称为特权模式(Privileged Modes)。
除去用户模式和系统模式以外的5种处理器工作模式称为异常模式(Exception Modes)
9.ARM处理器共有多少个寄存器?在所有工作模式下,哪些寄存器都指向同一个物理寄存器?
答:ARM处理器含有37个物理上独立的寄存器,其中包括31个通用寄存器和6个状态寄存器。
R0-R12寄存器在所有工作模式下都指向同一个物理寄存器。
10.简述CPSR寄存器控制位的作用。
答:(1)中断禁止位I、F:I=1 禁止IRQ中断;F=1 禁止FIQ中断。
(2)T标志位:该位反映处理器的运行状态。
当该位为1时,程序运行于Thumb状态,当该位为0时,表示运行于ARM状态。
(3) 运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。
这些位决定了处理器的运行模式。
11. ARM的异常中断包含哪些类型?它们的优先级顺序是怎样的?它们的异常向量地址是多少?
答:
12. 当处理异常时,ARM内核会做哪些处理?
答:ARM 处理器对异常中断的响应过程如下:
(1) 保存处理器当前状态、中断屏蔽位以及各条件标志位。
这是通过将当前程序状态寄存器CPSR 的
内容保存到将要执行的异常中断对应的SPSR 寄存器中实现的。
各异常中断有自己的物理SPSR 寄存器。
(2) 设置当前程序状态寄存器CPSR中相应的位。
包括设置CPSR中的控制模式位,使处理器进入相
应的执行模式;设置CPSR中的中断禁止位,如果进入IRQ 模式时,禁止IRQ 中断,如果当进入FIQ 模式时,禁止FIQ 中断。
(3) 将寄存器LR_mode设置成返回地址。
(4) 将程序计数器值(PC)设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处理程序
执行。
13. 当异常结束时,ARM内核会做哪些处理?
答:ARM 系统处理完中断后从异常中断处理程序中返回包括下面的步骤:
(1) 恢复被中断的程序的处理状态,即将SPSR_mode 寄存器内容复制到当前程序状态寄存器
CPSR 中。
(2)返回到发生异常中断的指令的下一条指令处执行。
即将LR_mode 寄存器的内容复制程序计数器
PC 中。
因为整个应用系统是从复位异常中断处理程序执行的,所以复位异常中断处理程序不需要返回。
第四章
1.请列举ARM处理器的指令寻址方式。
哪种寻址方式是ARM指令集特有的寻址方式?
答:ARM处理器具有9种基本寻址方式,分别为立即寻址、寄存器寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址。
寄存器移位寻址是ARM指令集特有的寻址方式。
2. 在ARM数据处理指令中,第二个操作数都有哪几种形式?
答:第2 个操作数的三种形式如下。
立即数,例如:MOV R0,#0x0000F200 ;寄存器方式,例如:ADD R1,R1,R2;寄存器移位方式,例如:ANDS R1,R1,R2,LSL R3。
3.请分别写出调用子程序、子程序返回所使用的指令,并简述所用指令的工作过程。
答:用BL指令调用子程序。
BL指令先将下一条指令的地址拷贝到R14(即LR)连接寄存器中,然后跳转到指定地址运行指令。
子程序返回的指令是:MOV PC, LR。
4. 如图:存储器地址4010H,4014H,4018H的内容分别为1,2,3。
寄存器R1,R2,R3的值都为0。
R0的值为0x4010。
问:给出指令执行后,寄存器R0,R1,R2,R3的结果。
(IA:每次传送后地址加4)
LDMIA R0!,{R1-R3}
答:
5. 阅读下面程序,并回答问题。
AREA Example1,CODE,READONLY ; 声明代码段Example1
ENTRY ; 标识程序入口
CODE32 START MOV R0,#20 -----------------------(1)
(1)
MOV R1,#10
LDR R5,=0x12345678 ----------------------- (2)
ANDS R2,R5,#0x20 ----------------------- (3)
CMP R2,#0 ----------------------- (4)
ADDEQ R0,R0,#1 ----------------------- (5)
ADDNE R1,R1,#1 ----------------------- (6) HALT B HALT
END ; 文件结束
a) 请回答汇编语句(1)(2)(3)(4)(5)(6)的含义。
b) 此程序实现什么功能?
答:
a) 语句(1)把常数20送到R0;语句(2)使用LDR伪指令把常数0x12345678送到R5;语句(3)
将R5中的数据与0x20相与,影响标志位;语句(4)将R2的数据与0比较;语句(5)如果相等R0加1;语句(6)不相等R1加1(6分)
b) 测试数据0x12345678的bit[4](第五位)。
如果是0,R0中的数据20加1。
如果是1,R1中的数据10加1。
(2分)
6. 用汇编语言编写程序,求1到50的累加和。
答:
AREA Example1,CODE,READONL Y
ENTRY
CODE32
START LDR R5,=0x40003005
MOV R0,#0
MOV R1,#1
LOOP BL SUM
B LOOP
SUM
ADDS R0,R0,R1
ADD R1,R1,#1
CMP R1,#50
BLHI HALT
MOV PC,LR
HALT STR R0,[R5]
B .
END
7. 请说明汇编语句STRB R2,[R0,#4]和STR R2,[R0,#4]!的区别。
答:mem8[R0+4]=R2;R0不变
mem32[R0+4]= R2;R0=R0+4
mem32[]表示存储器的存储单元中存放的32位字数据,mem16[]表示存储器的存储单元中存放的1
6位半字数据,mem8[]表示存储器的存储单元中存放的8位字节数据
8. 请说明MOV指令和LDR指令在传送立即数时,使用方法的区别。
答:MOV传送8位位图数据,例如:MOV R1,#0xFF000000;
LDR伪指令传送32位立即数,例如:LDR R0,=0x12345678。
9. 请列举ARM处理器的四种堆栈类型,并说明它们的特点和区别。
答:(1)满递增堆栈F A:堆栈指针指向最后压入的数据,且由低地址向高地址生长。
(2)满递减堆栈F D:堆栈指针指向最后压入的数据,且由高地址向低地址生长。
(3)空递增堆栈EA:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生长。
(4)空递减堆栈ED:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生长。
10. 可以对状态寄存器操作的指令都有哪些,如何使用。
答:ARM指令集提供了2条指令,可直接控制程序状态寄存器(psr,Program State Register)。
MRS 指令用于将CPSR或SPSR的值传送到通用寄存器中。
MSR指令与之相反,用于将通用寄存器的内容或者立即数传送到到CPSR或SPSR中。
例如:MRS R1,CPSR
BIC Rl,Rl,#0x80 ;0b0l000000
MSR CPSR_c,Rl
第五章
1.简述Xscale内核的特点。
答:ARM 的体系结构是基于RISC 的,XSCALE 是ARM 处理器的一种,所以XSCLAE具有RISC 的基本特性。
XScale 的超流水线(SuperPipeline)技术,主频高达600MHz 以上。
高效的存储器体系结构,主要包括32KB D-Cache、32KB I-Cache、2KB Mini Dcache、Fill Buffers、ending Buffers以及4.8GB/s带宽的存储总线,使处理器可以高效访问存储器。
实现了基于统计分析的分支预测功能部件。
XScale对ARM的乘加逻辑进行了增强,增加了8 条 DSP 指令。
2.简述PAX270处理器的结构和主要的通信模块。
答:CPU 520M 运行能力;XSCALE 构架,并带有无线MMX 指令集;7 级流水线;32KB的指令cache , 32KB 的数据 cache, 2KB微型数据cache;外部扩充存储器控制器;256KB 内部 SRAM;丰富的串行接口: AC97 AUDIO PORT; IIS PORT;USB HOST,USB DEVICE;USB OTG;3个UART,红外通讯接口;标准IEEE JTAG,支持边界扫描;实时时钟和系统时钟;中断控制器;LCD 控制器;SDRAM controller, 支持4 个 BANK,最高可以运行在104M。
外部SDRAM可以是2.5V 3.0V或3.3V;支持PCMCIA and Compact Flash;SD Card / MMC Controller (with SPI mode support);2个IIC Controllers;3 个SSP Controllers;CAMERA接口;121 个多功能GPIO;4种LOWPOWER模式;4个PWM
3.简述GPIO模块的特点。
答:PXA270处理器提供121个多功能输入/输出引脚,除了可以选择作为基本输入/输出使用外,还可以选择它的复用功能,复用功能包括串口通信接口,定时器输出,外部中断等。
当多功能输入/输出引脚作为高速的通用GPIO接口时,可以用来生成和捕捉外设的输出和输入信号。
每个GPIO引脚通过编程控制可实现输出或输入功能。
当GPIO引脚作为输入时,通过设置上升或下降沿检测,可作为一个中断源来使用。
4.GPIO模块中如何选择引脚的功能,举例说明。
答:通过寄存器GPDR和GAFR来选择引脚功能,在使用寄存器GAFR设置GPIO引脚功能之前,必须先通过寄存器GPDR设置引脚的方向。
例如:设定将GPIO118为SDA输出引脚,首先利用寄存器GPDR3设定 GPIO118是输出引脚,当GAFR3的Bit[13:12]=01时,将GPIO118复用为SDA输出引脚。
代码如下:
GPDR3= GPDR3| (0x01<<22);
GAFR3_U = GAFR3_U &(~(0x11<<12))|(AF1 <<12);
5.编写程序代码,实现设置GPIO8和GPIO41为输出功能,GPIO8为低电平输出,设置GPIO41为高电平输出。
答:
#define GPDR0 (*((volatile unsigned char*)(0x40E0000C)))
#define GPDR1 (*((volatile unsigned char*)(0x40E00010)))
#define GPCR0 (*((volatile unsigned char*)(0x40E00024)))
#define GPSR1 (*((volatile unsigned char*)(0x40E0001C)))
GPDR0= GPDR0 | (0x01<<8);
GPCR0= GPCR0 | (0x01<<8);
GPDR1= GPDR1 | (0x01<<9);
GPSR1= GPSR1 | (0x01<<9);
6.PAX270有几个UART单元,各有什么用途?
答:PAX270有三个UART单元。
全功能UART:FFUART支持调制解调器控制功能,最高波特率可达到921600 bps。
蓝牙UART:BTUART是一个高速的UART,所支持的波特率可达到921600 bps,并且可以连接到蓝牙模块,但只支持调制解调器控制信号中的CTS和RTS信号。
标准UART:STUART的最高波特率可达到921600 bps,但不支持调制解调器控制信号。
7.串行通讯的传输模式有哪些?简述RS232C接口的通信原理。
答:串行通讯的传输模式有三种:单工、半双工和双工。
RS232是全双工的数据发送模式,利用RS232通信时,仅适用3根基本的数据传输线有:RXD、TXD、GND 。
TXD(发送线):数据发送信号线,数据由该脚发出,送上通信线,没有数据传输时,逻辑电平为“1”;RXD(接收线):数据接收信号线,从通信信号线来的数据,从该脚引入,在无信息时候,逻辑电平为“1”;GND(地线): 参考地信号线,为其他信号线提供电平参考。
8.简述UART模块的通信原理。
答:每个UART 能将从RXD 端接收的串行数据转变为并行的数据,并且能够将来自处理器的并行数据转化串行数据,然后通过TXD 端发送出去。
根据UART 是否在FIFO 模式下执行,发送和接收的数据会有选择的锁存在发送/接收FIFO。
例如,当UART在接收数据时,来自RXD 端的数据首先会经过接收移位寄存器,然后组织成一个字节的数据,如果运行在FIFO 模式,数据会首先锁存在接收FIFO 里,同时接收缓冲寄存器RBR 会保存FIFO 第一字节单元数据,FIFO 的内容可以通过连续读取RBR 获得,每读写完一次后,FIFO第一字节单元数据会被移出。
当UART 收到来自总线的并行数据时,数据首先进入发送缓冲寄存器THR,如果工作在FIFO 模式,数据会再被锁存在发送FIFO,最后才被送入发送移位寄存器,将并行数据以逐位方式在TXD 端发送出去,每次向THR 写入的数据(有效数据最长为8 位)会被送入FIFO,只有FIFO 的第一字节单元会被送入发送移位寄存器里,并且在FIFO里还未发送的数据会逐渐上移到第一字节单元。
无论是接收还是发送,当运行在non-FIFO方式时,数据不会被锁存在FIFO,而只会被锁存在寄存器RBR 或THR,可以简单认为在non-FIFO 时,RBR 和THR 分别与接收移位寄存器和发送移位寄存器直接相连。
9.使用FFUART进行异步传输数据,以波特率为9600传送数据,则寄存器FFDLH和FFDLL应如何设置?
答:波特率发生器的时钟通过PXA270的内部系统时钟来设定,采用14.7456MHz 作为固定的输入时钟,并且可以对它以1至(216-1)分频。
波特率发生器的时钟必须是波特率的16倍,波特率(BaudRate)可以通过以下公式计算:
FUART以波特率为9600传送数据,即baudrate=9600,经公式计算得 Divisor=96,配置 FFDLH=0X0 ,FFDLL=0x60。
10. 请编写使用FFUART采用查询方式发送/接收数据的函数。
答:(1)接收数据函数
int SerialInputByte(char *c)
{
if((FFLSR & 0x00000001)==0)
{
return 0;
}else {
*c = FFRBR;
return 1;
}
}
(2)发送数据函数
void SerialOutputByte(const char c)
{
while ((FFLSR & 0x00000020) == 0 );
FFTHR = ((ulong)c & 0xFF);
if (c=='\n')
SerialOutputByte('\r');
}
void SerialOutputString(char * str)
{
int i=0;
while( (*(str+i))!='\0')
{
SerialOutputByte(*(str+i));
i++;
}
}
11. 简述PXA270中断控制器的内部结构。
答:PXA270中断控制器,通过设置寄存器I CMR 屏蔽中断源。
通过设置寄存器ICLR 对中断源分类,即可以让中断源发出的中断请求以IRQ 中断方式或以F IQ 中断方式被处理。
查询寄存器I CPR 得知32 个中断源当前是否有中断请求,在I CPR 寄存器上显示发出中断请求的中断源不受I CMR 影响,即I CMR 即使屏蔽某个中
断源,只要中断源发出中断请求,ICPR仍然会在相应的位上显示“1”。
查询寄存器I CIP 得知以I RQ 方式被处理的中断源是否发出中断请求,该寄存器受到I CMP 影响。
即I CIP = ICPR & ICMR & (~ICLR)。
查询寄存器I CFP 得知以F IQ 方式被处理的中断源是否发出中断请求,该寄存器受到I CMP 影响。
即I CFP =ICPR & ICMR & ICLR。
第六章
1.简述基于 Xscale PXA 270 处理器的 EELiod 270 开发平台,开发嵌入式Linux系统的交叉开发环境的搭建过程。
答:构建基于嵌入式linux的交叉编译环境的构建过程主要包括以下几方面的内容。
第一:安装一台装有指定操作系统的PC机作宿主开发机,宿主机器在硬件上需具备标准串口、并口和网口,对于嵌入式Linux,宿主机上的操作系统一般要求为Redhat Linux,在此,我们推荐使用Redhat
9.0作为宿主机(开发主机)的操作系统。
第二:检测目标机与宿主机的连接,通过串口实现通信,查看目标机系统的内容。
在windows 下使用超级终端,在 linux 下使用minicom。
第三:在宿主机上建立交叉编译环境。
利用GNU 编译器的交叉编辑工具链,生成可在ARM系统架构上执行的二进制可执行程序。
第四:实现目标机与宿主机之间文件的传输。
设置统一段的网络,通过nfs网络文件共享文件,FTP 网络传输上传下载文件。
第五:烧写嵌入式Linux内核、Bootloader、文件系统映像以及应用程序到目标板。
软件的更新通常使用串口或网口,最初的Bootloader 烧写是通过并口进行的。
2.宿主PC机上如何查看XSBase 270目标板系统的内容?
答:在Linux操作系统安装完成后,就可以使用Linux下的 minicom来检测宿主机和目标机的连接。
在Windows 下面可使用超级终端。
3.如何测试交叉编译环境是否建立成功?
答:首先,使用VI 编辑器创建一个hello.c 文件。
[root@localhost xscale270]# vi hello.c
编写一个简单的程序来打印出一行简单的信息:Welcome Emdoor!。
保存并退出该文件。
使用如下的命令来编译该文件。
[root@localhost xscale270]# gcc -o hello hello.c
[root@localhost xscale270]# arm-linux-gcc -o hello hello.c
gcc编程生成的是X86系统结构的二进制文件。
arm-linux-gcc是在在宿主机中,交叉编译hello.c源程序,并查看生成的.o目标文件。
调用交叉编译器arm-linux-gcc编译hello.c文件
使用file 命令来分别查看编译出的二进制文件hello和hello-arm。
[root@localhost xscale270]# file hello
[root@localhost xscale270]# file hello-arm
编译器arm-linux-gcc 生成的可执行文件hello-arm文件是不能在宿主PC机上运行的,只能在XSBase 270目标机上运行。
4.如何实现宿主PC机与XSBase 270目标板的通信。
答:要使用网络进行通讯和文件传输,必须使宿主机和目标机是相同的网段。
例如设置宿主机的IP地址:192.168.0.100;目标机的IP地址:192.168.0.50。
在嵌入式系统开发中,可采用网络文件系统N FS 可以将P C 机上的一部分文件系统作为目标机的资源,这样可以弥补目标机存储空间的不足。
文件传输协议ftp(File Transimit Protocol)利用以太网实现文件的传输。
需要上传的文件应保存到宿主机的/var/ftp/pub 目录下。
5.简述Makefile的基本结构。
答:Makefile文件由一组依赖关系和规则构成。
每个依赖关系有一个目标(即将要创建的文件)和一组该目标所依赖的源文件组成。
Makefile 的基本结构:
target… …:dependency_files… …
command… …
结构中各部分的含义如下:
1.target(目标):一个目标文件,可以是O bject 文件,也可以是执行文件,还可以是一个标签(Label)。
2. dependency_files(依赖文件):要生成目标文件(target)所依赖哪些文件。
mand(命令):创建项目时需要运行的shell命令
6.使用Makefile编译程序的优点是什么?
答:在Linux环境下,对于只含有几个源代码文件的小程序的编译,可以手工输入命令对源代码文件逐个进行编译。
但是在大型的项目开发中,一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,这时人们通常利用G NU make工具来自动完成应用程序的维护和编译工作。
GNU make 工具是通过解释Makefile 文件来完成整个工程的完全自动编译,极大的提高了软件开发的效率。
Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译。
Makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
7.在Makefile中变量如何定义,可在Makefile中的哪些部分使用?自动变量$@和$<分别代表什么含义?
答:Makefile中变量可以使用“=”定义和使用指示符“define”定义。
Makefile 中的变量可以使用在“目标”,“依赖目标”,“命令”或Makefile 的其它部分中。
$@:目标文件的完整名称;$<:第一个依赖文件的名称。
8. 编写一个文件的程序,使用Makefile文件进行编译。
答:(1)利用文本编辑器创建hello.c 文件。
//hello.c
#include <stdio.h>
int main()
{
printf("W elcome Emdoor!\n");
return 1;
}
(2)编写Makefile文件。
# makefile test for hello program
CC=gcc
CFLAGS=
all: hello。