ARM嵌入式系统结构与编程--复习_图文_第1页
ARM嵌入式系统结构与编程--复习_图文_第2页
ARM嵌入式系统结构与编程--复习_图文_第3页
ARM嵌入式系统结构与编程--复习_图文_第4页
ARM嵌入式系统结构与编程--复习_图文_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统的定义An Embedded system is the devices used to control,monitor, or assist the operation of equipment,machinery or plants.以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、功耗严格要求的,专用计算机系统。 嵌入式实时操作系统的特点:(1)采用抢占式的调度策略,任务实时性好,且执行时间是确定的;(2)具有可裁剪性(根据任务的需要与否进行添加或删除操作系统模块)和可移植性(移植到各种处理器上);(3)具有较好的可靠性和可扩展性,适合嵌入式产

2、品的应用开发。 嵌入式系统在工程领域的应用 ARM 内核版本命名规则ARM xyzTDMIEJF-Sx 系列号,例如ARM7中的“7” y 内部存储管理/保护单元 z 内含有高速缓存Cache ; T 支持16位的Thumb 指令集;D 支持JTAG 片上调试; M 支持用于长乘法操作的ARM 指令 I 带有嵌入式追踪宏单元; E 增强型DSP 指令(基于TDMI ) J 含有Java 加速器Jazelle F向量浮点单元ARM 内核模块ICE ,在线仿真器,In Circuit EmulatorETM ,嵌入式追踪宏单元,Embedded Trace MacroTAP ,测试访问端口,Tes

3、t Access PortJTAG 是联合测试工作组(Joint Test Action Group)三级流水线:取指、译码、执行(进行逻辑电路的实现)五级流水线:取指、译码、执行(计算要访问的存储器地址)、存储器访问(实现数据缓冲功能)、寄存器回写 程序状态寄存器 T :控制位,0表示ARM 指令,1表示Thumb 指令F :FIQ 中断使能 I:IRQ 中断使能J :Jazelle 状态标志位 V:溢出标志位C :进位或借位标识 Z:结果为0标识N :符号位标识ARM 处理器的异常数据终止、快速中断请求、普通中断请求、预取指中止、软件中断、复位、未定义指令。ARM 所有异常中,除了复位异常

4、外,其余的异常都需要返回。 PC 指向正被取指的指令,而非正在执行的指令寄存器移位ASR 算术右移:空出的最高有效位用“符号位”填充;ROR 循环右移:移出的低位依次填入空出的高位RRX 带扩展的循环右移:数据处理指令寻址方式(第二操作数):立即数方式、寄存器方式、寄存器移位且移位数为5位立即数、寄存器移位且移位数值放在寄存器中、寄存器进行RRX 移位得到ARM 指令集系统:数据处理指令、分支指令、加载/存储指令、批量加载/存储指令、交换指令、程序状态寄存器处理指令、协处理器操作指令、异常产生指令。程序流跳转:使用专门的分支指令(跳转范围-32M +32M)直接向PC 写入跳转地址值(在4G

5、的地址空间中任意跳转) 交换指令:能在一条指令中实现存储器和寄存器之间交换数据。 程序状态寄存器PSR 访问指令:MSR (读)和MRS (写),通过“读取-修改-写回”的操作序列实现。但必须通过BX 等指令完成程序状态等的切换。ARM 处理器最多可支持16个协处理器,每个协处理器只执行针对自身的协处理指令。协处理器执行加载/存储指令失败,将产生未定义的指令异常。ARM 异常产生指令:软中断指令SWI ,断点调试指令BKPT伪指令ARM 处理器支持的汇编语言程序里的特殊助记符,它不在处理器运行期间由机器执行,而是在汇编时被合适的机器指令替代成ARM 或Thumb 指令,从而实现真正的指令操作。

6、伪操作ARM 汇编语言程序里的特殊的指令助记符,其作用是为完成汇编程序做各种准备工作。只在汇编过程中起作用。LDR :将32位的常数或地址值读取到寄存器中。若常数符合立即数的要求,则用MOV 或MVN 替代,否则放入内存文字池。ADRL 、ADR :将基于PC 相对偏移的地址或基于寄存器相对偏移的地址值读取到寄存器。可被两条具有等功能的ADD 或SUB 指令替代。.equ /.set symbol expr:给数字常量或程序中的标号指定一个名称 .equiv :功能同上。symbol 必须在程序段中第一次定义。.fill repeat,size,value 分配一段字节内存单元,用长度为siz

7、e 的value 值填充repeat 次.zero size 用0初始化长度为size 的内存单元.org offset,expr 指定从当前地址加offset 开始存放代码,并且用0或指定的数据填充当前地址到当前地址加上offset 之间的空间. GNU 标准中提供了:支持ARM 汇编语言的汇编器as 、交叉编译器gcc 、 链接器ld.LDRB R0,R1 R0 <- R1字节单元,R0高24位清零STRB R0,R1 R0的低8位 -> R1LDRH R2,R1,#4 R2 <- R1+4半字单元,R2的高16位清零 STRH R0,R1,#4! R0低16位 ->

8、; R1+4,同时R1=R1+4LDRSB R0,R1,#4 R0 <- R1+4字节单元,R0高24位用符号扩展 LDRSH R0,R1,#4 R0 -> R1半字单元且R0高16位用符号扩展,R1=R1+4如何用带PSR 操作的批量字数据加载指令实现IRQ 中断的返回 SUB R14,R14,#4 ;计算返回地址,并保存相关寄存器STMFD R13!,R0-R3,R12,LRLDMFD R13!,R0-R3,R12,PC;将LR 的内容装入PC ,实现子程序返回对数据区进行 64 位结果累加操作 .global _start MOV R2,#100 .text MOV R8,#

9、0 .arm MOV R9,#0 _start Loop_2: MOV R0,0x3000 LDR R1,R0,#4 MOV R1,0x10000001 ADDS R8,R8,R1 MOV R2,#100 ADC R9,R9,#0 Loop_1: SUBS R2,R2,#1 STR R1,R0,#4 BNE Loop_2 ADD R1,R1,#1 stop: SUBS R2,R2,#1 B stop BNE Loop_1 .end MOV R0,0x3000 求一个数的阶乘(20) .global _start UMULL R8,R9,R8,R0 .text MLA R9,R1,R0,R9 _

10、start: SUB R0,R0,#1 MOV R8,#20 BNE Loop MOV R9,#0 Stop: SUB R0,R8,#1 B Stop Loop: .end MOV R1,R9 从源地址拷贝 num 个字数据即 num*4 个字节的内容到目的地址 Dst .global _start MOV R0,=Src .text MOV R1,=Dst .equ NUM ,20 MOV R2,#NUM _start MOV SP ,#0x0c700000 blockcopy: MOVS R3,R2,LSR #3 BEQ copywords STMFD SP!,R4-R11 octcopy

11、: LDMIA R0!,R4-R11 STMIA R1!,R4-R11 SUBS R3,R3,#1 BNE octcopy LDMFD SP!,R4-R11 copywords: ANDS R2,R2,#7 BEQ stop wordcopy: LDR R3,R0,#4 STR R3,R1,#4 SUBS R2,R2,#1 BNE wordcopy stop: B stop .ltorg: Src: Dst: .end 累加一个队列中的所有元素,碰到 0 时停止,结果放入 R4 假设队列为地址从 R0 开始递增的字队列: LOOP LDR R1,R0,#4! MOVS R2,R1 BEQ END ADD R4,R4,R2 B LOOP END 用 ARM 编写代码, 实现将 ARM 处理器切换到未定义模式, 并关闭中断 .equ Undef_Mode 0x1B .equ Mode_Mask 0x1F .equ NOINT 0xC0 MRS R0,CPSR ;读 CPSR BIC R0,R0,#Mode_Mask

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论