您的当前位置:首页正文

什么是嵌入式系统

2024-07-03 来源:客趣旅游网
1. 什么是嵌入式系统?其特点有些什么?

答: 嵌入式系统是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。” 特点:1)是专用的计算机系统,用于特定的任务;

2)资源较少,可以裁减;

3) 功耗低,体积小,集成度高,成本低; 4)使用实时操作系统;

5) 可靠性要求更高,具有系统测试和可靠性评估体系; 6)运行环境差异大

7)大部分程序固化在 ROM中; 8) 较长的生命周期;

9)嵌入式微处理器通常包含专用调试电路

2. 嵌入式系统的BooTLoader的功能是什么?

答:BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境。(对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。) 3. 目前嵌入式操作系统有哪些?

答:1)µC/OS-II 嵌入式操作系统内核;2)VxWorks嵌入式实时操作系统;3)WinCE操作系统;4)Linux操作系统 ;5)Symbian操作系统 4. 构造嵌入式开发环境有哪几种形式?

答:1)交叉开发环境 ;2)软件模拟环境 ;3)评估电路板 5. 嵌入式系统开发的基本流程? 答:1)系统定义与需求分析;

2)系统设计方案的初步确立;

3)初步设计方案性价比评估与方案评审论证; 4)完善初步方案、初步方案实施; 5)软硬件集成测试;

6)系统功能性能测试及可靠性测试。

6. 什么是可编程片上系统?

答:用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统SOPC.它是一

种特殊的嵌入式系统,首先它是SOC,即由单个芯片实现整个系统的主要逻辑功能,具有一般SOC基本属性;其次,它又具备软硬件在系统可编程的功能,是可编程系统,具有可裁剪、可扩充、可升级等灵活的设计方式。 7. 有时要使用Thumb技术的原因

答:(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,可以带来低功耗,小体积,低成本。 8. ARM处理器的工作模式有哪几种? 答:1)正常用户模式(usr);

2)快速中断模式(fiq); 3)普通中断模式(irq);

4)操作系统保护模式(svc)或 管理模式 ;

5)数据访问中止模式(abt);

6)处理未定义指令的未定义模式(und);

7)运行特权级的操作系统任务的系统模式(sys)。

9. 寄存器R13,R14,R15的专用功能各是什么?

答:1)寄存器R13保存堆栈指针SP;2)寄存器R14用作子程序链接寄存器,也称为LR ,用以保存返回地址;3)R15(PC)用作程序计数器。 10. 寄存器CPSR,SPSR的功能各是什么?

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

2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存

CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

11. ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?

答:1)复位(Reset)异常(管理模式);

2)未定义指令(undefined instruction)异常(未定义模式); 3)软件中断(SWI)异常(管理模式);

4)指令预取中止(Prefech Abort)异常(中止模式); 5)数据访问中止(Data Abort)(中止模式); 6)快速中断请求(FIQ)(FIQ模式); 7)外部中断请求(IRQ)(IRQ模式)。

异常返回指令:1)SWI,未定义的返回:MOVS PC,R14;2)IRQ,FIQ,预取中止的返回:SUBS PC,R14,#4;3)数据中止返回并重新存取:SUBS PC,R14,#8

异常中断的优先级:复位(最高优先级)--> 数据异常中止--->FIQ --> IRQ--->预取

指异常中止--->SWI---->未定义指令(包括缺协处理器)。 12. 什么是小端和大端存储器组织?

答:1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址(同同小)。 2) 大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址(正反大)。 13. 什么是数据的边界对齐?

答:默认情况下,ADS编译器使用的是数据类型的自然边界对其方式。数据的自然对其方式是指:如果该数据类型是n个字节的,那么该数据类型就按n字节对齐。 14. ARM核现在有哪几种?

答:ARM7、 ARM9、ARM9E 、ARM10E,、SecurCore 、ARM11 15. ARM的寻址方式有哪些?各写一条说明。

答:1)立即寻址 (1) ADD R0,R0,#1 /*R0←R0+1*/

(2)ADD R0,R0,#0x3f /*R0←R0+0x3f*/;

2)寄存器寻址(ADD R0,R1,R2 /*R0←R1+R2*/); 3)寄存器间接寻址 (1)、LDR R0,[R1] /*R0←[R1]*/;

(2)STR R0,[R1] /*[R1]←R0*/;

4)基址加偏址寻址(1)、LDR R0,[R1,#4];R0←[R1+4];

(2)、LDR R0,[R1,#4]!;R0←[R1+4]、R1←R1+4; (3)、LDR R0,[R1] ,#4;R0←[R1]、R1←R1+4

5)堆栈寻址(1)、 STMFD SP! {R1-R7,LR};

(2)、LDMFD SP! {R1-R7,LR};

6)块拷贝寻址(1)、LDMIA R0!, {R2-R9};(2)、STMIA R1,{R2,R9}; 7)相对寻址

16. 在ARM的立即寻址方式下其立即数如何在指令编码中表示?

答:在ARM数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都

是采用一个8位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。因此有效立即数immediate可以表示成:=immed_8循环右移(2×rotate_imm) 17. 指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?

答:ADR是将基于PC或者寄存器的地址值读入到寄存器的,ADR伪指令通常被替换

成一条ADD指令或SUB指令来实现该ADR指令的功能。而ADRL伪指令与ADR指令的最大不同之处是,它可以读取更大范围内的地址,而且被编译器替换成2条数据处理指令。LDR将一个32位的立即数或者一个地址值读取到寄存器中。大范围的地址读取。NOP在汇编时将被替换成ARM中的空操作。 18. 指令LDR R1,=0xFFF是如何将立即数0xfff读入到R1的?

答:由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的范围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。 LDR R1,[PC,offset_to_LPOOL]. ............

LTORG ;声明数据缓冲池

LPOOL DCD OxFFF; OxFFF放在数据缓冲池中。 19. 如何在c语言程序中内嵌汇编?

答:内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。嵌入式汇编在形式上表现为独立定义的函数体。

20. 如何在汇编语言程序访问C语言的全局变量?

答:汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引人全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。

对于不同类型的变量,需要采用不同选项的LDR和STR指令,如下所示: 1)unsigned char—— LDRB/STRB; 2)unsigned short——LDRH/STRH; 3)unsigned int——LDR/STR; 4)char ——LDRSB/STRSB; 5)Short——LDRSH/STRSH

21. 在C语言程序如何调用汇编语言程序?

答:为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。在汇编程序中需要使用EXPORT伪操作来声明,使得本程序可以被其它程序调用。同时,在C程序调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。 22. 汇编语言程序调用C语言程序?

答:为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。在C程序中不需要使用任何关键字来声明将被汇编语言调用的C程序,但是在汇编程序调用该C程序之前需要在汇编语言程序中使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL指令来调用子程序。

23. 在嵌入式C语言程序设计中为提高程序效率的相关设计技巧。

答:1)变量定义;2)参数传递;3)循环条件;4)以空间换时间;5)数学方法解决问题;6)使用位操作;7)嵌入汇编。

24.Linux操作系统的内核、文件系统、编程接口等。P192 P201

答:Linux的内核也有很多种,例如普通的Linux内核、uClinux内核、RTLinux内核等 25.嵌入式Linux操作系统的特点。

答:广泛的硬件支持、内核高效稳定、开放源码,软件丰富、优秀的开发工具、完善的网络通信和文件管理机制,

26.Windows CE操作系统及其特点。

答:Windows CE是一个32位、多任务、多线程的操作系统,其开放式的设计结构适用于各种各样的设备,其主要特点: 一、CE是一种压缩并可升级的软件系统,即使在小内存条件下,也能提供较高的性能。 二、CE具有便于携带的优点,可以运行于多种微处理器上 三、CE拥有很好的电源管理系统,能延长移动设备的电池寿命

四、CE支持标准的通讯系统,可以非常方便地访问Internet,发送和接受电子邮件,浏览万维网。

程序解释

AREA COPYBS,CODE,READONLY ;定义一个代码段 ENTRY ;程序入口

LDR RO,=SRC ;取得原数据表的表头 LDR R1,=DST ;取得目标数据表的表头 MOV R2,#20 ;R4作为循环控制

BCOPY MOVS R3,R2,LSR,#3 ;R3=R2 <<3 逻辑右移3位 BEQ CWORD ;若Z=1,跳转到CWORD

OCOPY LDMIA R0!,{R4-R11} ;加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新

STMIA R1!,{R4-R11} ;将R4-R11的数据存储到R1指向的地址上,R1值更新

SUBS R3,R3,#1 ;R3=R3-1

BNE OCOPY ;若Z=0,跳转到OCOPY CWORD AND R2,R2,#7 ;R2=R2&7

BEQ STOP ;若Z=1,跳转到STOP WCOPY LDR R3,{R0},#4 ;将R3中的字数据读入以R0为地址的存储器中,并将新地址R0+4写入R1

STR R3,{R1},#4 ;将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1

SUBS R2,R2,#1 ;R2=R2-1

BNE WCOPY ;若Z=0,跳转到WCOPY STOP …… ……

在程序中常常需要根据一定的参数选择执行不同的子程序。跳转表中存放的是各子函数的地址,选择不同的子程序的参数是该子程序在跳转表中的偏移量。在本例中R3寄存器中存放的是跳转表的基地址(首选地址,其中存放的是第一个子程序的地址)。R0寄存器的值用于选择不同的子程序;当R0为0时,选择的是子程序DoAdd;当R0为1时,选择的是子程序DoSub。

在ADS编译环境程序如下:

AREA Jump,CODE,READONLY ;设置本程序的名称及属性 NUM EQU 2 ;跳转表中的子程序个数 ENTRY ;程序执行的入口点

Start MOV R0,#0 ;设置3个参数,R0选择调用哪个子程序 MOV R1,#3 ;R1为子程序要用的参数 MOV R2,#2 ;R2为子程序要用的参数

BL Func ;调用子程序Func,进行算术运算 Stop MOV R0 ,#0x18 ;本条与下条指令的作用是参数传递 LDR R1,=&20026

SWI 0x123456 ;将CPU的控制权交给调试器 Func CMP R0,#NUM ;判断R0是否在有效范围之内 MOVHS PC,LR ;如果超出范围则程序返回 ADR R3,JTable ;读取跳转表的基地址 LDR PC,【R3,R0,LSL #2】;根据参数R0的值跳转到相应的子程序

JTable DCD DoAdd ;当参数R0为0时上面的代码将选择DoAdd DCD DoSub ;当参数R0为1时上面的代码将选择DoSub DoAdd ADD R0,R1,R2 ;子程序DoAdd执行加法操作 MOV PC,LR ;子程序返回

DoSub SUB R0,R1,R2 ;子程序DoSub执行减法操作 MOV PC,LR ;子程序返回 END ;结束汇编

嵌入式系统基础复习题 一、简答题

1、 什么是嵌入式系统?

嵌入到对象体系中的专用计算机应用系统。 2、 嵌入式系统的3个基本特点? 嵌入性、专用性、计算机

3、 什么是嵌入式处理器,嵌入式处理器可以分为几大类?

嵌入式处理器是为了完成特殊的应用而设计的特殊目的的处理器。

分为嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统(SOC)。 4、 广泛使用的三种类型的操作系统?

多道批处理操作系统、分时操作系统以及实时操作系统。 5、 常见的4种嵌入式操作系统?

嵌入式Linux、Win CE、VxWorks、μC/OS-II 6、 ARM是什么样的公司?

它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理

器。特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。

7、 什么是RISC?什么是CISC?

RISC是精简指令集计算机的缩写。CISC是复杂指令集计算机的缩写。 8、 举出2个ARM公司当前应用比较多的ARM处理器核?

ARM7系列、ARM9系列、ARM10系列、ARM11系列、intel的Xscale系列和MPCore系列。

9、 ARM7TDMI中的T、D、S、I分别表示什么含义? T:支持高密度16位的Thumb指令集 D:支持片上调试

S:ARM7TDMI 的可综合(synthesizable)版本(软核) I:支持EmbededICE观察硬件 M:支持64位乘法 10、 ARM7TDMI处理器采用什么样的体系结构,其可寻址地址空间多大? ARM处理器使用冯.诺依曼结构 使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。 11、 ARM7TDMI处理器采用几级流水线处理,使用何种存储器编址方式? ARM7TDMI处理器采用三级流水线。 ARM处理器将存储器看做是一个从0开始的线性递增的字节集合。 12、 ARM处理器模式和ARM处理器状态有什么区别? ARM处理器模式指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。ARM处理器状态指ARM状态和Thumb状态 ARM两种处理器状态下均有上述7种模式。 13、 ARM7TDMI内部寄存器特点? 分别为31个通用32位寄存器和6个状态寄存器。它们不能在同一使劲同时被访问,对其的访问取决于处理器状态和处理器模式。 14、 ARM7TDMI有几种寻址方式? 寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、相对寻址。 15、 ARM7的内部寄存器R13、R14、R15的主要功能和作用? R13:堆栈指针,用于保存堆栈的出入口处地址、保存待使用寄存器的内容

R14:连接寄存器,当使用BL指令调用子程序时,返回地址将自动存入14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址;其他时候作为通用寄存器。 R15:程序寄存器,总是指向正在“取指”的指令 16、 请说明MOV指令与LDR加载指令的区别和用途? LDR的操作数既可以来源于寄存器也可以来源于存储器,MOV的操作数能来源于寄存器。。

LDR指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;MOV指令将8位立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作。 17、 LPC2000系列器件有几种常见的封装形式和其封装特点? 常见的封装有64脚封装,144脚封装 功耗低,有多个32位定时器,多达9个外部中断,16K字节静态RAM,1/128/256k字

节片Flash存储器,128为宽度接口加速器,4路10位ADC或8路10位ADC(64脚和144脚封装),46或76~112个GPIO(64脚和144脚封装)。 18、 简要说明一下LPC2000系列器件片内存储器的特点? 片内存储器分为片内Flash和片内静态RAM。片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,特有的存储器加速功能,可以将程序直接放在Flash上运行。SRAM支持8位、16位和32位的读写访问。 19、 为什么要进行存储器重映射? 存储器重映射是为了实现引导块和异常向量表地址的固定。 重映射引导块,有利于用户调用其中的某些程序,增加代码的可移植性; 异常向量表重映射为了能让ARM内核通过访问0x0000~0x003F地址访问到其他存储区域的向量表。 20、 LPC2000系列ARM7微控制器对向量表有什么要求(向量表中的保留字)? 向量表中有一个空隙以确保软件能与不同的ARM结构兼容;表中异常入口地址处放置的是跳转指令,已转向中断子程序。FIQ地址要放在向量表的最后; 21、 ARM7微控制器内FLASH是多少位宽度的接口?它是通过哪个功能模块来提高

FLASH的访问速度?

FLASH是128位宽度的接口,通过存储器加速模块提高其访问速度。 22、 FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同? FIQ是快速中断,具有最高优先级,中断处理转入FIQ模式;IRQ是普通中断,优先级低于FIQ,中断处理转入IRQ模式。 向量IRQ支持16个向量IRQ中断,16个优先级,能为每个中断源设置服务程序地址;非向量IRQ支持一个非向量IRQ中断,所有中断都共用一个相同的服务程序入口地址。 23、 LPC2000系列芯片共有几个外接中断输入?它们是FIQ,还是IRQ? 共有4个外接中断输入,它们既可以是IFQ也可以是IRQ。 24、 LPC2000系列芯片常用的开发工具? ADS、IAR、JATG、ISP 25、 什么是嵌入式处理器的最小系统? 最小系统是指提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成的系统。 26、 嵌入式处理器的最小系统包含那些基本电路?

最小系统包含时钟系统、供电系统、复位及其配置系统、存储器系统(可选)、调试测试系统(可选)。

基本电路包括:末级电源电路、前级电源电路、时钟电路、复位电路、程序存储器(可选)、调试接口电路(可选)。 二、问答题

1、 ARM7TDMI支持哪几种指令集,各有什么特点? 支持ARM指令集和Thumb指令集两种。 ARM指令集:指令32位,效率高,代码密度低,所有ARM指令都是可以有条件执行的 。 Thumb指令集:指令16位,代码密度较高,Thumb指令仅有一条指令具备条件执行功能。保持ARM的大多数性能上的优势,是ARM指令集的子集。

2、 ARM7TDMI有几种处理器模式,简单介绍该几种模式的工作特点? ARM7TDMI有7种处理器模式。

用户模式:正常程序运行的工作模式,不能直接从用户模式切换到其它模式 系统模式:用于支持操作系统的特权任务等,可以直接切换到其它模式

快中断模式:用于快速中断处理,支持高速数据传输及通道处理,只有在FIQ异常响应时,才进入此模式。

中断模式:用于通用中断处理,只有在IRQ异常响应时,才进入此模式。

管理模式:供操作系统使用的一种保护模式,只有在系统复位和软件中断响应时,才进入此模式。

中止模式:用于虚拟内存和/或存储器保护。 未定义模式:支持软件仿真的硬件协处理器,只有在未定义指令异常响应时,才进入此模式。 3、 什么是引导程序?什么是启动程序?两者有什么区别? 引导程序是ARM微处理器在上电或复位后首先运行Boot Block中的一段代码;启动程序是在运行引导程序后,正式运行用户main函数之前,还需要运行一段代码

引导程序由芯片厂商固化在芯片中,功能包括:判断运行哪个存储器上的程序、检查用户代码是否有效、判断芯片是否被加密、芯片的在应用编程(IAP)以及在系统编程功能(ISP)。启动程序由用户添加,功能包括:向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、外围初始化,地址重映射等操作。

4、 简要描述LPC2000系列芯片内部GPIO的功能特点?

(1) 可以独立控制每个GPIO口的方向; (2) 可以独立设置每个GPIO的输出状态; (3) 所有GPIO口在复位后默认位输入状态。

5、 试说明LPC2000系列芯片的引脚设置寄存器PINSEL0、PINSEL1、PINSEL2的具体功

能? PINSEL0控制引脚P0.0~P0.15的连接状态,每两位控制一个引脚。 PINSEL1控制引脚P0.16~P0.31的连接状态,每两位控制一个引脚。 PINSEL2控制P1端口和P2端口。

6、 试说明LPC2000系列芯片的存储器映射的结构特点?(看图回答问题4) (1)0GB向上为128KB或256KB的片内非易失性存储器; (2)1GB向上为16KB片内静态RAM; (3)2GB向下为Boot Block重映射; (4)3.5GB向上为VPB外设; (5)4GB向下为AHB外设 。

7、 试说明LPC2000系列芯片内部向量中断控制器(VIC)的功能特点?(看图回答问题5)

(1) 可以管理最多32个中断请求,可将其编程为FIQ、向量IRQ或非向量IRQ; (2) 有16个向量IRQ中断;

(3) 16个优先级,可动态分配优先级; (4) 可产生软件中断。

8、 试说明LPC2000系列芯片的向量中断和非向量中断的功能特点?

向量中断支持16个向量IRQ中断;16个优先级;每个优先级指定一个服务程序入口地址。 非向量中断支持1个非向量IRQ中断; 所有非向量IRQ的入口地址都相同。 9、 试说明LPC2000系列芯片内部定时器的功能特点?(看图回答问题6)

(1) 各含有一个可编程32位预分频器;

(2) 具有4路捕获通道,当输入信号跳变时可取得定时器的瞬时值,也可选择使捕

获事件产生中断。

(3) 有4个32位匹配寄存器,匹配时动作有3种:定时器继续工作,可选择产生中

断;停止定时器,可选择中断;复位定时器,可选择中断

(4) 有4个对应于匹配寄存器的外部输出,匹配时输出有4种:设置为低电平;设

置为高电平;翻转;无动作。

10、 简要描述LPC2000系列芯片内部定时器的预分频功能,匹配功能,捕获功能? 预分频功能:通过设置某个常量来控制pclk(定时器的时钟源)的分频。 匹配功能:当定时器值等于预设的匹配值时,从引脚输出特定的信号。 捕获功能:如果输入信号满足设定的要求,将触发捕获动作,将定时器的计数值保存到捕获寄存器中。 11、 试说明LPC2000系列芯片内部都具有那些外设接口,及其特点? 12、 试比较说明JATG工具和ISP工具的异同点? 两者都可以将程序下载到开发板上。 JATG通过计算机的并口和开发板的JATG口下载程序;ISP通过计算机的串口和开发板的UART0下载程序。 三、看图回答问题

1、 下图是ARM7处理器的当前程序状态寄存器,请简单说明各位的功能。

3130292827876543210IFTM4M3M2M1M0ARM7当前程序状态寄存器NZCV

N:负标志位,运算结果的第31位值,记录标志设置的结果。 Z:零标志位,如果标志设置操作的结果为0,则置位。 C:进位标志位,记录无符号加法溢出,减法无错位,循环移位。 V:溢出标志位,记录标志设置操作的有符号溢出。 I:中断禁止标志位,置位时禁止IRQ中断,否则允许IRQ中断使能。 F:中断禁止标志位,置位时禁止FIQ中断,否则允许FIQ中断使能。 T:控制位,置位时处理器运行在Thumb状态下,清零时处理器运行在ARM状态下。 M0~M4:模式控制位,定义处理器的7中模式。 其余位为保留位,留作将来使用。

2、 下图是LPC2000内部的时钟发生系统图,试对该图进行简单的描述说明。

产生稳定的时钟信号ON/OFF1fOSCF晶体晶体OSC振荡器振荡器3将Fosc提升到合适的频率PLLPLL4FCCLKCPU内核外接晶体或外接时钟源2唤醒唤醒定时器定时器FPCLKVPBVPB分频器分频器芯片外设LPC2000内部的时钟发生系统图

晶体振荡器为系统提供基本的时钟信号(Fosc);在复位或处理器从掉电模式唤醒时,唤醒

定时器为输入的时钟信号做计数延时,使芯片内部有时间进行初始化;PLL把Fosc信号提高到一个符合用户需要的频率(Fcclk),用于CPU内核;

VPB分频器用于把Fcclk信号降低到一个合适的Fpclk(也可以不降低),用于外设部件。 3、 下图是ARM7系统内部的存储器加速模块(MAM)连接结构示意图,试针对该示意图

说明MAM如何实现存储器加速功能。

存储器地址Flash存储器组0ARM7局部总线总线接口预取指缓存Flash存储器组1预取指缓存分支跟踪缓存分支跟踪缓存2×128位2×128位数据缓存区选择存储器数据/指令

存储器加速模块中Flash存储器可以存放4个32位ARM指令或8个16位Thumb指令,它们被分成两组,轮番工作,及时的为CPU提供需要的指令和数据,以防止CPU取指暂停。 程序顺序执行时,一个Flash组包含当前正在取指的指令和包含该指令的整个Flash行,而另一个Flash组则包含或正在预取指下一个连续的代码行。 程序出现分支时,在预取指缓存区中保存着将要执行的指令,在分支跟踪缓存区中保存着程序跳转后可执行到的指令。 程序获取数据时,如果数据不在MAM的数据缓冲区,那么MAM会执行一次Flash读操作,把一个128位的数据行存入数据缓冲区,这样就加快了按顺序访问数据的速度。 4、 下图是ARM7系统存储器映射图,试对该映射图进行简单的描述说明。(问答题6)

4.0GB3.75GB3.5GB3.0GB2MBAHB外设保留2MBVPB外设0xFFFF FFFF0xF000 00000xE000 00000xC000 00000x8400 00000x8300 00000x8200 00000x8100 00000x8000 00000x7FFF E0000x4000 40000x4000 00000x0004 00000x0002 00000x0000 0000

保留给片外存储器2.0GB16MBBank316MBBank216MBBank116MBBank08KBBoot Block(片内ROM存储器重映射)保留给片内RAM存储器16KB 片内静态RAM保留给片内FLASH存储器256KB 片内非失忆性存储器(LPC2124/2214)1.0GB0.0GB128KB 片内非失忆性存储器(LPC2114/2212)ARM7系统存储器映射5、 下图是ARM7系统中断向量控制器(VIC)内部结构示意图,试说明VIC的功能特点。

(问答题7)

软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClear中断源[31:0]IRQ中断状态寄存器VICIRQStatus中断状态寄存器VICRawIntr中断使能清零寄存器VICIntEnClrFIQIRQFIQ中断状态寄存器VICFIQStatusFIQ中断信号中断使能寄存器VICIntEnable中断选择寄存器VICIntSelect高向量IRQ0向量IRQ0控制寄存器VICVectCntl0向量IRQ0使能中断源IRQ0VectAddr0优先级向量IRQ15向量地址0寄存器VICVectAddr0硬件优先级选择IRQ0IRQ中断信号向量IRQ15控制寄存器VICVectCntl15向量IRQ15使能中断源IRQ15VectAddr15向量地址15寄存器VICVectAddr15IRQ15DefIRQ向量地址寄存器VICVectAddr低非向量IRQ默认向量地址寄存器VICDefVectAddrDefIRQDefVectAddr向量地址选择

6、 下图是ARM7系统每个I/O端口的内部寄存器控制结构示意图,看图填写下表的寄存器

功能说明内容。 序号 1 2 3 4 通用名称 IOPIN IOSET IODIR IOCLR 功能说明 从该寄存器中可以读出引脚的当前状态,和方向模式无关 该寄存器控制引脚输出高电平,为1时高电平,为0无效 该寄存器单独控制每个IO口的方向,为1时输出,为0时输入 该寄存器控制引脚输出低电平,为1时低电平为0无效 outinIOxDIRIOxDIRIOxCLRIOxSET10PINSELxPINSELxIOxPIN

7、 下图是ARM7系统内部的定时器结构示意图,试说明内部定时器的功能特点。(问答题

9)

中断标志寄存器(IR)匹配功能匹配寄存器0(MR0)匹配寄存器1(MR1)匹配寄存器2(MR2)匹配寄存器3(MR3)匹配控制寄存器(MCR)MAT[3:0]外部匹配寄存器(EMR)0x0000 0000比较器定时器计数值捕获功能捕获寄存器0(CR0)捕获寄存器1(CR1)捕获寄存器2(CR2)捕获寄存器3(CR3)CAP[3:0]捕获控制寄存器(CCR)定时器、计数器(TC)复位定时器控制寄存器(TCR)使能预分频器(PR、PC)PCLK

四、计算题

1、 设有一个基于LPC2114的系统,所使用的石英晶振为10MHz。请计算出最大的系统时

钟(Fcclk)频率为多少?此时PLL的M值和P值各为多少?请列出计算公式,并编写设置PLL的程序段。

7控制寄存器PLLCON7配置寄存器PLLCFG保留位2保留位654MSEL 4:01PLLC0PLLE0PSEL 1:015状态寄存器PLLSTAT保留位1110987654MSEL0PLOCKPLLCPLLEPSEL 依题得,Fosc=10MHz

因为Fcclk范围为10MHz~60MHz,所以 最大的系统所时钟Fcclk=60MHz M=Fcclk/Fosc=60/10=6

因为Fcco范围为156MHz~320MHz,P=Fcco/(2Fcclk)所以 当Fcco取最小值时,P=156/(2*60)=1.3 当Fcco取最大值时,P=320/(2*60)=2.67

因为P的值必须是1、2、4、8中的一个,所以P=2 uint8 PLLSet(uint32 Fcclk, uint32 Fosc, uint32 Fcco) {

uint8 i;

uint32 plldat;

i = (Fcco / Fcclk); // 计算PLL分频值,i的值为2P switch(i) // 检测参数是否合法 {

case 2: // 2P为2,P为1

plldat = ((Fcclk / Fosc) - 1) | (0 << 5); // 设置M的值,实际写入M-1 break;

case 4: // P为2

plldat = ((Fcclk / Fosc) - 1) | (1 << 5); // 设置M的值,实际写入M-1 break;

case 8: // P为4

plldat = ((Fcclk / Fosc) - 1) | (3 << 5); // 设置M的值,实际写入M-1 break;

case 16: // P为4

plldat = ((Fcclk / Fosc) - 1) | (3 << 5); // 设置M的值,实际写入M-1 break;

default: // P的值不是1、2、4、8中的一个,不合法 return(FALSE); break; // 错误返回 }

PLLCON = 1; // 使能PLL PLLCFG = plldat; // 设置PLL分频值 PLLFEED = 0xaa; // PLL馈送序列 PLLFEED = 0x55;

while((PLLSTAT & (1 << 10)) == 0); // 等待PLL锁定 PLLCON = 3; // 连接PLL

PLLFEED = 0xaa; // PLL馈送序列 PLLFEED = 0x55;

return(TRUE); // 正确返回

阅读下列与看门狗有关的寄存器描述,解释每一行代码的功能。 看门狗定时器控制寄存器(WTCON) 寄存器 WTCON WTCON Prescaler Value Reserved Watchdog Timer 地 址 0x53000000 Bit [15:8] [7:6] [5] 读/写 读/写 描 述 看门狗定控制寄存器 描 述 保留 使能和禁止看门狗定时器 0=禁止看门狗定时器 1=使能看门狗定时器 这两位决定时钟分频因素 00:1/16 01:1/32 初 始 值 0x8021 初 始 值 00 0 WTCON的标识位 预装比例值,有效范围值为0~255 0x80 Clock Select [4:3] 00 10:1/64 11:1/128 Interrupt Generation Reserved Reset Enable/Disable [2] [1] 中断的禁止和使能 0=禁止中断产生 1=使能中断产生 保留 禁止很使能看门狗复位信号的输出 1=看门狗复位信号使能 0=看门狗复位信号禁止 读/写 读/写 读/写 读/写 描 述 看门狗数据寄存器 描 述 看门狗计数器当前值 0 0 [0] 1 看门狗定时器数据寄存器(WTDAT) 寄 存 器 WTDAT 寄 存 器 WTCNT 地 址 0x53000004 地 址 0x53000008 初 始 值 0x8000 初 始 值 0x8000 看门狗计数寄存器(WTCNT) #define rWTCON (*(volatile unsigned *)0x53000000) // 第1行 #define rWTDAT (*(volatile unsigned *)0x53000004) // 第2行 #define rWTCNT (*(volatile unsigned *)0x53000008) // 第3行 void watchdog_test(void) { rWTCON = ((PCLK/1000000-1)<<8)|(3<<3)|(1<<2); // 第4行 rWTDAT = 7812; // 第5行 rWTCNT = 7812; // 第6行 rWTCON |=(1<<5); // 第7行 }

第1-3 行:定义看门狗控制寄存器、数据寄存器和计数寄存器为rWTCON、rWTDAT和rWTCNT。

第4 行:设置看门狗的预装比例值为1000000,分频因素为1/128,并使能中断。(6分) 第5-6 行:对数据寄存器和计数寄存器赋值为7812。(2分) 第7 行:启动看门狗。(2分)

7、阅读以下S3C2410部分用户手册.求:当PCLK 或 UCLK 为40 MHz时,串口0的波特率为2400 bps ,串口1的波特率为115200bps,相应的控制寄存器如何设置. UART BAUD RATE DIVISOR REGISTER

There are three UART baud rate divisor registers(寄存器)including UBRDIV0, UBRDIV1 and UBRDIV2 in the UART block(模块). The value stored in the baud rate divisor register (UBRDIVn), is used to determine the serial Tx/Rx clock rate(baud rate) as follows:

UBRDIVn = (int)(PCLK / (bps x 16) ) –1 or UBRDIVn = (int)(UCLK / (bps x 16) ) –1 Where, the divisor should be from 1 to (216-1) and UCLK should be smaller than PCLK. Register UBRDIV0 UBRDIV1 UBRDIV2 UBRDIVn Address 0x50000028 0x50004028 0x50008028 Bit R/W R/W R/W R/W Description Baud rate divisor register 0 Baud rate divisor register 1 Baud rate divisor register 2 Reset Value – – – Description Initial State UBRDIV [15:0] Baud rate division value UBRDIVn >0 – 答: 根据UBRDIVn = (int)(PCLK / (bps x 16) ) –1 寄存器UBRDIV0= (int)(40000000/2400*16)-1=1040=10000010000(B) 寄存器UBRDIV1=( int)(40000000/115200*16)-1=20=10100(B) 任务控制块(TCB)的数据结构OS-TCB表示任务的状态。当任务的CPU控制权被枪战后,任务控制块用来保存该任务的状态。当任务重新获得CPU的控制权后,任务控制块能够保证任务从被中断的位置继续正确执行。 任务控制块提供了任务的基本信息,如任务的执行状态、优先级和堆栈位置等。

1.计算机中的两种典型体系结构是什么,各自的特点是什么? 冯·诺依曼体系和哈佛体系结构 冯·诺依曼体系:

1)数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。 2)被早期大多数计算机所采用 3)ARM7——冯诺依曼体系

结构简单,但速度较慢。取指不能同时取数据 哈佛体系结构:

1)程序存储器与数据存储器分开.

2)提供了较大的存储器带宽,各自有自己的总线。 3)适合于数字信号处理.

4)大多数DSP都是哈佛结构. 5)ARM9是哈佛结构

6)取指和取数在同一周期进行,提高速度,

改进哈佛体系结构分成三个存储区:程序、数据、程序和数据共用 2.在ARM系列中,ARM7, ARM9分别是什么体系结构。 ARM7是冯·诺依曼体系结构 ARM9是哈佛体系结构 3.ARM7处理器,PXA270处理器分别采用几级流水线; ARM7采用的是3级流水线 PXA270采用的是7级流水线

4. ARM处理器有几种工作状态,各自的特点。工作状态之间如何进行转换,异常响应时,处理器处于何种状态。

答:ARM有两种工作状态:

①ARM状态,此时处理器执行32位的字对齐的ARM指令。

②Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令.

在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且不影响处理器运行模式和相应寄存器中的内容。ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM微处理器在上电或复位后,应该处于ARM状态。 执行BX跳转指令,将操作数的状态位(位0)设置为1时,可以使处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。

执行BX跳转指令,将操作数的状态位(位0)设置为0时,可以使处理器从Thumb状态切换到ARM状态。此外,当处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。

THUMB指令集在功能上只是ARM指令集的一个子集,某些功能只能在ARM状态下执行,如CPSR和协处理器的访问.

进行异常响应时,处理器会自动进入ARM状态.

即使是一个单纯的THUMB应用系统,必须加一个汇编的交互头程序,因为系统总是自动从ARM开始启动

5.ARM体系结构所支持的最大寻址空间为4GB;

6.ARM处理器数据存储格式有哪几种?各自的特点?能否举例进行说明。

答:ARM存储器有大端格式和小端。大端格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中;小端格式则相反。 7.ARM处理器数据类型包括哪些?各自特点。 答:字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。 半字(Half-Word):在ARM体系结构中,半字的长度为16位,而在8位/16位处理器体系结构中字的长度一致。 字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字的长度均为8位。 由于一个字数据占用地址空间中的4个字节的地址,因此其地址总是4的倍数,在二进制计数中,字数据的地址低2位总为0,称为地址4字节对齐(地址的低两位为0);同理,半字需要2字节对齐(地址的最低位为0)

8.ARM处理器一共有几种中工作模式,分别是?那种模式下,专业寄存器最多。

ARM处理器一共有7种运行模式,它们分别是:用户模式(user)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、数据访问中止模式(abt) 系统模式(sys)和未定义指令中止模式(und)。

9.ARM处理器正常工作时,处于何种工作模式? 答:用户模式(user)。

9.ARM处理器共有多少个32位寄存器,多少个为通用寄存器,多少个状态寄存器。

答:共有37个32位寄存器,其中31个为通用寄存器,可用于累加操作,6个为状态寄存器。

10. 在ARM指令中,R13寄存器常用?R14寄存器被称为?,R15寄存器? 答:R13常用做堆栈指针,R14被称为子程序连接寄存器或连接寄存器。 R15寄存器用于保存程序计数器(PC)。R15一般不作为通用寄存器使用 11. 弄清楚CPSR每一位的含义,例如:条件标志位N,Z,C,V;控制位;T标志位 条件码标志位:N·Z·C·V N:Negative/Less Than 当用两个补码表示的带符号数进行运算时,N=1表示运算结果为负;

N=0表示运算结果为正或者0 C:Carry/Borrow/Extend

可以有4种方法设置C的值:加法运算(包括反值比较指令CMN);当运算产生了进位时(无符号数溢出),C=1,否则C=0; 减法运算(包括比较指令CMP);当运算产生了借进位时(无符号数溢出),C=1,否则C=0; 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 杜宇其他的非加/减运算指令,C的值通常不改变 V:Overflow

可以有2种方法设置V的值:

对于加/减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

对于其他非加/减运算指令,V的值通常不改变。

Q:在ARM v5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生溢出。其他版本的处理器,Q标志位无定义。 控制位:

程序状态寄存器(PSR)的低8位(包括I·F·T和M【4:0】)为控制位,当发生异常时,这些位可以被改变,如果处理器运行特权模式,这些位也可以有程序修改。 I·F:中断禁止位 I=1:禁止IRQ中断 F=0:禁止FIQ中断 T标志位:

T标志位反映处理器的运行状态。对于ARM v5及以上版本的T系列处理器中,当该位为1时,程序运行Thunm状态,否则运行于ARM状态。

对于ARM v5及以上版本的非T系列处理器中,当该位为1时,执行吓一跳指令以引起未定义指令异常;当该为为0时,表示运行于ARM状态。

运行模式位M【4:0】 M0·1M2·M3·M4是模式位,这些决定了处理器的运行模式 12.ARM指令的寻址方式。

(1)寄存器寻址; (2)立即寻址;

(3)寄存器偏移寻址; (4)寄存器间接寻址; (5)基址变址寻址; (6)多寄存器寻址;

(7)堆栈寻址; (8)块拷贝(复制)寻址; (9)相对寻址。

13.掌握ARM指令集,常用指令的使用。 跳转指令: B BL

数据处理指令: MOV ADD SUB AND ORR 程序状态寄存器访问指令:MRS MSR 加载/存储指令:

1)LDR指令 LDR LDRB LDRH 2)STR指令 STR STRB STRH 3)批量数据加载/存储指令 LDM STM 14.ARM伪指令(掌握教科书中提到的即可);汇编语言的编程;C语言编程,混合编程。 AREA ENTRY END IMPORT GET(或INCLUDE)

因篇幅问题不能全部显示,请点此查看更多更全内容