现在的位置: 首页 > 综合 > 正文

Temporary…

2013年06月01日 ⁄ 综合 ⁄ 共 6612字 ⁄ 字号 评论关闭

<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
A:link { so-language: zxx }
-->

ARM嵌入式系统
习题

第一章

1.什么是嵌入式系统?

以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

2.与通用计算机相比,嵌入式系统有哪些特点?

1).专用性强

2).功耗低、体积小、集成度高、成本低

3).具有较强的生命周期

4).具有固化的代码

5).需专门开发工具和环境

6).嵌入式系统软件需要RTOS开发平台

7).嵌入式系统开发人员以应用专家为主

8).嵌入式系统是知识集成系统

3.根据嵌入式系统的复杂程度,嵌入式系统可分为哪4类?

  •  

    • 单个微处理器:

由单片嵌入式处理器组成,嵌入式处理器上集成了存储器I/O设备、接口设备(如A/D
转换器)等,再加上简单的元件如电源、时钟元件等就可以工作。

通常用于小型设备中,由供应商根据设备的用途设计。

  •  

    • 嵌入式处理器可扩展的系统:

这类嵌入式系统使用的处理器根据需要可以扩展存储器,也可以使用片上存储器,处理器一般容量在64KB左右,字长为8位或16位。在处理器上扩充少量的存储器和外部接口,便构成嵌入式系统,通常用于过程控制、信号放大器、位置传感器以及阀门传动器等。

  •  

    • 复杂嵌入式系统:

处理器一般是16位、32位等,用于大规模的应用。软件量大,因此需要扩展存储器。扩展存储器一般在1MB以上,外部接口一般仍然集成在处理器上。

在制造或过程控制中使用的计算机系统

计算机与仪器、机械以及设备相连来控制装置的工作。计算机用于总体控制和监视,不是对单个设备直接控制。

4.嵌入式微处理器有哪几类?试举例说明。

0100090000030202000002008a01000000008a01000026060f000a03574d46430100000000000100198a0000000001000000e802000000000000e8020000010000006c0000000000000006000000180000002600000000000000000000004e2500009017000020454d4600000100e80200000e000000020000000000000000000000000000007606000023090000d2000000290100000000000000000000000000008a3403005d880400160000000c000000180000000a0000001000000000000000000000000900000010000000f1020000dc010000250000000c0000000e000080120000000c00000001000000520000007001000001000000e3ffffff000000000000000000000000900100000000000004400012540069006d006500730020004e0065007700200052006f006d0061006e00000000000000000000000000000000000000000000000000000000000000000000000000240000000400e0b2e13000000300b856240014b812000000c93000000000000000000000000000000000b8b5000088272400c542f630020000001004aa001004aa0034098e0008b812008b2a083014b812001004aa0008b812009d2a083013000000d004aa0060b912001004aa0098721c5770b812006241000020b7120000001500b0ff120020e9927c47169001000000000000000000000000877a0020000000800800000000000000ff01000000000000540069006d00650073002000000065007700200052006f006d0061006e0000000000000068b81200803500300000c930c542f6300000000064b8120012b5023064b812004c6eaf307cb812006476000800000000250000000c00000001000000180000000c0000000000000254000000540000000000000006000000180000002600000001000000d6244b41eb294b410000000020000000010000004c000000040000000000000000000000f0020000db01000050000000200000001900000046000000280000001c0000004744494302000000fffffffffffffffff2020000dd010000000000004600000014000000080000004744494303000000250000000c0000000e0000800e000000140000000000000010000000140000000400000003010800050000000b0200000000050000000c02f1007e01040000002e0118001c000000fb020800040000000000bc02000000860102022253797374656d0000000000000000000000000000000000000000000000000000040000002d01000004000000020101001c000000fb02f1ff0000000000009001000000000440001254696d6573204e657720526f6d616e0000000000000000000000000000000000040000002d010100050000000902000000020d000000320a1000000001000400000000007e01f10020e70d00040000002d010000030000000000

 

 

 

 

 

5.从硬件系统来看,嵌入式系统由哪几部分组成?画出简图。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.嵌入式微处理器和嵌入式微控制器分别由哪些部件组成?两者有何区别?

嵌入式微处理器的基础是通用计算机中的CPU即由通用计算机中的CPU演变而来。与通用计算机处理器不同的是,在实际嵌入式应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用紧密相关的母板功能,去除了其他冗余的功能部分,这样可以大幅度减小系统体积和功耗。

嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中

和嵌入式微处理器相比,嵌入式微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。

第二章

1.哈佛体系结构和冯·诺依曼体系结构有何不同?

冯·诺依曼机:将数据和指令都存储在存储器中的计算机。

计算系统由一个中央处理单元(CPU和一个存储器组成。存储器拥有数据和指令,并且可以根据所给的地址对它进行读或写。

哈佛机:为数据和程序提供了各自独立的存储器。

程序计数器只指向程序存储器而不指向数据存储器

2(1)在该模式中有多少通用寄存器?

31个通用寄存器

(2)CPRS作用是什么?

寄存器CPSR为当前程序状态寄存器,可以在任何工作模式下被访问。

状态标志:5个,N符号位,Z零标志,C进位,V溢出位,Q
DSP
运算溢出位。

控制标志:4个,I中断允许,F快速中断允许,T状态选择,M[4:0]
处理器工作模式

(3)Z位的作用是什么?

Z=1
表示运算的结果为零;Z=0表示运算的结果不为零;

(4)程序计数器保存在何处?

寄存器R15为程序计数器(PC),它指向正在取指的地址。

 

 

 

3.下列ARM条件码的含义的是什么?

(1)EQ
相等

(2)NE不相等

(3)MI负数

(4)VS溢出

(5)GE带符号数大于或等于

(6)LT带符号数小于

4.ARM处理器有几种工作模式?各种工作模式分别有什么特点?

处理器模式用户
(
usr)快速中断
(
fiq)外部中断
(
irq)管理
(
svc)中止
(
abt)未定义
(
und)系统
(
sys)

说明正常程序执行模式支持高速数据传输及通道处理用于通用中断处理操作系统保护模式用于支持虚拟内存和/或存储器保护支持硬件协处理器的软件仿真运行操作系统的特权任务

备注不能直接切换到其它模式FIQ异常响应时进入此模式IRQ异常响应时进入此模式系统复位和软件中断响应时进入此模式在ARM7TDMI没有大用处未定义指令异常响应时进入此模式与用户模式类似,但具有可以直接切换到其它模式等特权

5.ARM处理器共有多少个寄存器?这些寄存器按其在用户编程中的功能如何进行划分?这些寄存器在使用中各有何特殊之处?

37个寄存器:31个通用寄存器,包括程序计数器PC;6个状态寄存器。

寄存器均为32位,分成7组,各工作模式拥有自己的寄存器组,只能访问自己的寄存器组。

有些寄存器是重叠的,有些是工作模式特有的。

在不同的工作模式和处理器状态下,程序员可以访问的寄存器不尽相同。

6.

 

  •  

    • 7

    • 总线周期使用nMREQSEQ信号编码。

    • 4种不同类型的总线周期。

    • N周期:非顺序周期,最简单的总线周期;存储控制器必须启动存储器访问来满足这个请求;该方式存储系统常需要长的访问时间。(存储器访问周期)

    • S周期:顺序周期,实现总线上的突发传送;第一个周期,地址可与前一个内部周期相同;与非顺序访问相比响应更快,访问时间更短。(cache访问周期)

    • I周期:内部周期,不要求存储器访问;可广播下一次访问的地址以便开始译码,但存储控制器不允许进行存储器访问。(cache访问周期)

    • C周期:协处理器寄存器传递周期,通过数据总线向或从协处理器传送数据;不需存储周期,存储控制器不启动事务;传送期间,存储系统不允许驱动数据总线。

 

 

  •  

    • 8.

    • Cache存储系统当中,把主存储器和Cache都划分成相同大小的块。

    • 主存地址可以由块号M和块内地址N两部分组成。

    • 同样,Cache的地址也由块号m和块内地址n组成。

 

  •  

    • 9

    • 写通法:
      write-throught,CPU在执行写操作时,必须把数据同时写入Cache和主存。

    • 写回法:
      write-back,CPU在执行写操作时,被写的数据只写入Cache,不写入主存。仅当需要替换时,才把已经修改的Cache块写回到主存中。

 

  •  

    • ARM系统中,存储管理单元MMU主要工作:

(1)虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟存储管理。

(2)存储器访问权限的控制。

(3)设置虚拟存储空间的缓冲的特性。

 

11.

 

  •  

    • 12

    • ARM支持的存储块大小有4种:

(1)段(Section):大小为1MB的存储块。

(2)大页(Large
Pages
):
大小为64KB的存储块。

(3)小页(Small
Pages
):
大小为4KB的存储块。

(4)极小页(Tiny
Pages
):
大小为1KB的存储块。

 

  •  

    • 13.

 

 

  •  

    • 14

 

  •  

    • 1

    • CPSR的内容保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽位及各标志位的保存。各中断模式都有自己的SPSR寄存器。

    • 设置当前状态寄存器CPSR的相应位。

  •  

    •  

      • 设置CPSR模式控制位CPSR[4:0],使处理器进入相应的执行模式;

      • 设置中断标志位(CPSR[6]=1,禁止IRQ中断;

      • 当进入Reset或者FIQ模式时,还要设置中断标志位(CPSR[7]=1,禁止FIQ中断。

  •  

    • 将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14R14_mode中,使异常处理程序执行完后能正确返回原程序。

    • 给程序计数器(PC强制赋值,使程序从相应的异常向量地址开始执行中断处理程序。一般来说,异常向量地址处是一条指向相应程序的转移指令,从而可以跳转到相应的异常中断处理程序中。

 

  •  

    • 2.

    • 所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈)。

    • SPSR_mode寄存器内容复制到CPSR中,使得CPSR从相应的SPSR中恢复,即恢复中断的程序工作状态。

    • 根据异常类型将PC变回到用户指令流中的相应指令处。

    • 清除CPSR中的中断禁止标志位I/F

 

 

  •  

    • 3. 9种:

    • 立即数寻址

    • 寄存器寻址

    • 寄存器移位寻址

    • 寄存器间接寻址

    • 基址变址寻址

    • 相对寻址

    • 多寄存器寻址

    • 块拷贝寻址

    • 堆栈寻址

 

 

  •  

    • 5.

    • LCLA num1 ;定义一个局部的数字变量,变量名为

num1

  •  

    • LCLL l2 ;定义一个局部的逻辑变量,变量名为l2

    • LCLS str3 ;定义一个局部的字符串变量,变量名

str3

  •  

    • num1 SETA 0xabcd ;将该变量赋值为0xabcd

    • l2 SETL {FALSE} ;将该变量赋值为真

    • str3 SETS "Hello!" ;将该变量赋值为“Hello!”

 

 

  •  

    • 4.

 

  •  

    • 6.

    • X的地址为0x20000-0x20003

    • Y的地址为0x20004-0x2000B

    • Z的地址为0x2000C-0x2001B

 

  •  

    • 7.(1)

    • LDR
      R0,=X

    • LDR
      R1,[R0]

    • ADD
      R1,R1,6

    • LDR
      R2,=W

    • LDR
      R3,[R2]

    • SUB
      R3,R3,R1

    • LDR
      R4,=R

    • LDR
      R4,[R4]

    • ADD
      R4,R4,9

    • SUB
      R3,R3,R4

    • LDR R2,=Z

    • STR R3,[R2]

 

 

  •  

    • (2)

    • LDR R0,=W

    • LDR R0,[R0]

    • LDR R1,=X

    • LDR R1,[R1]

    • MUL R1,R1,R0

    • MOV R1,R1,LSR
      #4

    • LDR R2,=Z

    • STR R1,[R2]

 

第三章

  •  

    • 9.
      //利用冒泡排序实现X数组排序

    • AREA
      Sort,CODE,READONLY

       ENTRY
       

      start
          
      MOV r4,#0
           LDR r6,=x ;len
      x数组的长度

MOV
r2,#len

ADD
r6,r6,r2,lsl,#2 ;r6=x+#len*4

outer
;
外层循环控制
   
LDR
r1,=X

  •  

    •  
      inner
      //
      内层循环控制

          LDR
      r2,[r1]
           LDR r3,[r1,#4]
          
      CMP r2,r3
           STRGT r3,[r1]
          
      STRGT r2,[r1,#4]
           ADD r1,r1,#4
          
      CMP r1,r6 ;
      如果没执行到结尾继续
          
      BLT
      inner
       

          

 

  •  

    • 8(1)CMP
      R2,R3

    • BCC
      EXCEED

    • (2)CMP
      R0,R1

    • BLT
      EXCEED

    • (3)TEQ
      R2,0

    • BEQ
      ZERO

    • (4)TEQ
      R0,R1

    • BEQ
      EQU

 

  •  

    • 10

AREA
MAXMIN, CODE, READONLY ENTRY

start

LDR
r1,=BUFF

MOV
r0,#100

LDR
r3,[r1] ;r3
中存放max

LDR
r4,[r1];r4
中存放min

setvalue

LDR
r2,[r1],#4
  CMP r2,r3
  MOVGT
r3,r2
CMP r2,r4

MOVLT
r4,r2

SUB
r0,r0,1

BPL

ldr
r0,=MAX;
str r3,[r0]
ldr r0,=MIN;
str r4,[r0]
stop

MOV
r0, #0x18 ;

LDR
r1, =0x20026 ;

SWI
0x123456 ;

AREA
BlockData, DATA, READWRITE

BUFF
DCD 0x00,0x01,0x03,……

MAX
DCD 0

MIN
DCD 0

END

 

 

  •  

    • 11

AREA
sum, CODE, READONLY ENTRY

start

MOV
r0,0

MOV
r1,#1

MOV
r2,#100

Doadd

ADD
r0,r0,r1

ADD
r1,r1,1

CMP
r1,r2

BLS
Doadd

 

stop

MOV
r0, #0x18 ;

LDR
r1, =0x20026 ;

SWI
0x123456