Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49507
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 111
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-25 09:22
个人简介

恭喜你捕获了一只野生的脏羊!

文章分类

全部博文(13)

我的朋友

分类: IT职场

2014-09-04 23:46:59

第二章 嵌入式处理器

(1)了解嵌入式处理器的结构特点及分类,熟悉ARM处理器的技术特点P48工作状态及工作模式P53

结构特点:

按指令集分为复杂指令集结构CISC及精简指令集结构RISC

按存储机制分为冯诺依曼结构及哈佛结构;

按字长分为8位、16位、32位、64位结构

按不同内核系列可以分为51AVRPICMSP430PowerPCColdfileARM

技术特点:

1)单周期操作 2) 采用加载/储存指令访问内存 3)固定的32位字长 4)三地址指令格式 5)指令流水线技术

工作状态:ARM状态,Thumb/Thumb-2状态,调试状态

工作模式:7种。

工作模式

功能说明

可访问的寄存器

CPSR[M4:M0]

用户模User

程序正常执行工作模式

PC,R14-R0,CPSR

10000

快速中断模式FIQ

处理高速中断,用于高速数据传输或通道处理

PC,R14_fiq-R8_fiq,

R7-R0,CPSR,SPSR_fiq

10001

外部中断模式IRQ

用于普通中断处理

PC,R14_irq-R13_irq,

R12-R0,CPSR,SPSR_irq

10010

管理模式SVC

操作系统的保护模式,处理软中断SWI

PC,R14_svc-R13_svc,

R12-R0,CPSR,SPSR_svc

10011

中止模式ABT

处理存储器故障,实现虚拟存储器和存储器保护

PC,R14_abt-R13_abt,

R12-R0,CPSR,SPSR_abt

10111

未定义指令模式UND

处理为定义的指令陷阱,用于支持硬件协处理器仿真

PC,R14_und-R13_und,

R12-R0,CPSR,SPSR_und

11011

系统模SYS

运行特权及的操作系统任务

PC, R14-R0,CPSR

11111

 

(2)了解ARM处理器的寄存器结构P54,理解ARM处理器的异常处理P56、数据类型P59和存储格式P58,以及存储器管理单元MMU和存储器保护单元MPU的含义和功能P59

寄存器结构:ARM处理器共有37种寄存器,包括31个通用寄存器(含PC)和6个状态寄存器。

无论何种模式,R15均作为PC使用;CPSR为当前程序状态寄存器;R7-R0为公用的通用寄存器。所有通用寄存器均为32位结构。

程序状态寄存器的格式:

31 30 29  28  27      26……8       7     6    5     4     3     2    1     0

N

Z

C

V

Q

状态保留

I

F

T

M4

M3

M2

M1

M0

条件码标志含义如下:

N为符号标志位,N=1为负数,N=0为正数。

Z为全0标志位,运算结果为0,则Z=1,否则Z=0

C为进借位标志,有进/借位时C=1,否则C=0.

V为溢出标志,加减法运算结果溢出时V=1,否则V=0.

Q为增强的DSP运算指令溢出标志,溢出时Q=1,否则Q=0.

控制位含义如下:

I为中断禁止控制位,I=1禁止IRQ中断,I=0,允许中断。

F为禁止快速中断FIQ的控制位,F=1禁止FIQ中断,F=0允许。

TARMThumb指令切换,T=1时执行Thumb指令,否则执行ARM指令。

M4-M0为模式选择位

异常处理:

异常类型

优先级

工作模式

异常向量地址

复位RESET

1

管理模式

0x00000000

未定义的指令UND

6

未定义指令中止模式

0x00000004

软件中断SWI

6

管理模式

0x00000008

指令预取中止PABT

5

中止模式

0x0000000C

数据访问中止DABT

2

中止模式

0x00000008

外部中断请求IRQ

4

外部中断模式

0x00000010

快速中断请求FIQ

3

快速中断模式

0x0000001C

数据类型:字节8位,半字16位,字32位,每种分有无符号,共六种。

存储格式:大端,小端(小端字节序低位低地址)。

MMU1)虚拟地址到物理地址映射2)存储器访问权限受限3)虚拟存储空间缓冲特性设置

MPU:允许ARM处理器4GB地址空间定义8对域,分别控制8个指令和8个数据内存区域。每个域的首地址和届均可编程。带MPUARM处理器使用不同的域来管理和控制指令内存和数据内存。

(3)了解若干典型ARM处理器(ARM9Cortex-ACortex-MCortex-R)内核的技术特点及主要应用领域。

1Cortex-A系列是面向高端嵌入式应用的处理器核:具有MMUCache、最快频率、最高性能、合理功耗。

2Cortex-R系列是面向实时控制的处理器:具有MPUCache、实时响应、合理性能、较低功耗。

3Cortex-M系列是面向低端微控制器的处理器,没有MMU但有MPU,极高性价比、最低成本,极低功耗。

(4)了解ARM的指令类型及指令格式,掌握移位操作实现数据变换以及简单乘除操作的方法,熟悉寻址方式,掌握ARM指令系统中的常用指令。(指令格式、寻址方式、指令集、伪指令、语句格式与程序结构、ARM汇编语言及C的混合编程。)

1)指令格式

指令一般格式

{}{S}  ,{,}     其中<>不可省

指令格式说明:

项目

含义

备注

指令的操作码

即助记符,如MOV、ADD、B等

{cond}

条件域,满足条件才执行指令

可不加条件即可省略条件,如EQ、NE等

{S}

指令执行时是否需要更新CPSR

可省略

Rd 

目的寄存器

Rd可为任意通用寄存器

Rn 

第一个源操作数

Rd可为任意通用寄存器,可以与Rd相同

Op2

第二个源操作数

可为#imm8m、寄存器Rm及任意移位寄存器

关于#imm8m的说明:#表示立即数,其后可以是十进制或十六进制数

对于ARM指令集,#imm8m表示一个由8位立即数经循环右移任意偶数位次形成的32位操作数。

对于Thumb指令集,#imm8m表示一个由8位立即数经左移任意位次形成的32位操作数。

指令的条件码

条件码

助记符

标    志

含    义

0000

EQ

Z置位

相等

0001

NE

Z清零

不相等

0010

CS

C置位

无符号数大于或等于

0011

CC

C清零

无符号数小于

0100

MI

N置位

负数

0101

PL

N清零

正数或零

0110

VS

V置位

溢出

0111

VC

V清零

未溢出

1000

HI

C置位Z清零

无符号数大于

1001

LS

C清零Z置位

带符号数小于或等于

1010

GE

N等于V

带符号数大于或等于

1011

LT

N不等于V

带符号数小于

1100

GT

Z清零且N等于V

带符号数大于

1101

LE

Z置位或N不等于V

带符号数小于或等于

1110

AL

忽略

无条件执行

2)寻址方式

1)立即寻址(立即数寻址)

例如:MOV R0#0x1212121212

      ADC R0R0#100 ;R0 R0+100+C

2)寄存器寻址(执行效率较高)

例如:ADD R0R1R2                    ;R0 R1+R2

3)寄存器间接寻址

寄存器间接转址就是以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。用间接寻址的寄存器必须用[ ]括起来。

例如:LDR R5[R4]                   ;R5 [R4],间接寻址的寄存器是R4

STR R1[R2] ;[R2]    R1,间接寻址的寄存器是R2

4)基址加变址寻址

常见的几种形式:

LDR R0[R1#4] ;R1+4形成地址,取其中内容放入R0

STR R1[R2#8] ;R2+8形成地址,取R1中内容放入该地址

LDR R0[R1#4]!   ;R1+4形成地址,取其中内容放入R0 且 R1中的内容+4

LDR R0[R1]#4 ;R1中内容形成地址,取地址中内容放入R0中,且R1中内容+4

LDR R0, [R1, R2] ;R1+R2后形成地址,取地址中内容(操作数)放入R0

STR R0, [R1, R2] ;R1+R2后形成地址,取R0中内容放入地址中

5)相对寻址

相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加后得到操作数的有效地址。

下列程序中跳转指令BL利用相对寻址方式:

BL Subroutine_A          ;跳转子程序Subroutine_A处执行

Subroutine_A

MOV PC ,LR             ;从子程序返回

6)堆栈寻址:满递增、满递减、空递增、空递减

7)块拷贝寻址(多寄存器寻址):一条指令最多传送16个通用寄存器的值。

LDMIA R0,{R1,R2,R3,R4} ;R0->R1 ;R0+4 ->R2 ; R0+8->R3 ;R0+12->R4

STMIA R0,{R1-7} ;R1->R0 ;R2->[R0+4]

 P75常用指令

(5)了解ARM汇编语言常用的伪指令,熟悉ARM汇编语言程序结构,掌握ARM汇编语言程序设计的方法并能设计和阅读理解简单的汇编语言程序
关于ARM汇编语句可以参考fishc.com上小甲鱼的零基础学汇编的视频,确实很有帮助。不过关于三级考试,汇编指令考不得多,会基本的运算即可。

阅读(1230) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~