《ARM体系结构与编程》论文
ARM体系结构与编程
DSP56300等几个不同系列的处理器。
PHILIPS公司也推出了基于可重置嵌入式DSP结构低成本、低功耗技术上制造的DSP
处理器,特点是具备双Harvard结构和双乘/累加器单元,应用目标是大批量消费类电
ARM的命名hitecture的版本命名规则; 基于ARM Architecture版本的处理器系列命名规则。
举个例子,s3c2410采用ARMv4T架构版本,ARM920T处理器系列,其中处理器核 为ARM9TDMI。
2020/12/1
基于ARM Architecture的版本命名
2020/12/1
什么是ARM
ARM是一个公司的名字 ARM代表一项技术,即Advanced RISC Machine ARM是一个内核,而不是我们看到的具体的芯片
ARM发展的历程
第一片ARM处理器是1983年10月到1985年4月间 在位于英国剑桥的Acorn Computer公司开发
1990年,为广泛推广ARM技术而成立了独立的公司 ꝴAdvance RISC Machine(ARM) 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴
2020/12/1
器系列命名
采用上述的架构,形成一系列的处理器。有时候还要区分处理器核和处理器 系列。不过,在这里其实不用区分太细,毕竟这是功能的小部分的变化,核 心是相同的。
规则:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
·x -- 处理器系列 ·y -- 存储管理/保护单元 ·z -- cache ·T -- 支持Thumb指令集 ·D -- 支持片上调试 ·M -- 支持快速乘法器 ·I -- 支持Embedded ICE,支持嵌入式跟踪调试 ·E -- 支持增强型DSP指令 ·J -- 支持Jazelle ·F -- 具备向量浮点单元VFP ·-S -- 可综合版本
最新ARM体系结构与编程
2020/10/14
9
ARM分类
基于指令集体系结构(构架ISA)的分类
ARM V1 体系是最初版本,只有26位的寻址空间,没有乘法指 令,最终没有商业化
ARM V2 体系与V1体系同为26位寻址空间,具有乘法和加法指 令,支持协处理器
ARM V3 体系的寻址范围扩展到32位,具有乘法和加法指令, 支持协处理器
采用上述的架构,形成一系列的处理器。有时候还要区分处理器核和处理器 系列。不过,在这里其实不用区分太细,毕竟这是功能的小部分的变化,核 心是相同的。
规则:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
·x -- 处理器系列 ·y -- 存储管理/保护单元
·z -- cache ·T -- 支持Thumb指令集 ·D -- 支持片上调试 ·M -- 支持快速乘法器 ·I -- 支持Embedded ICE,支持嵌入式跟踪调试 ·E -- 支持增强型DSP指令 ·J -- 支持Jazelle ·F -- 具备向量浮点单元VFP ·-S -- 可综合版本
V4 V4T V5TE V5TE V6
12
ARM体系的变种
1)Thumb指令集(T变种) Thumb指令集是把32位的ARM指令集的一个子集重新编码后而 形成的一个特殊的16位的指令集
2)长乘指令(M变种) 长乘指令是一种生成64位相乘结果的乘法指令(此指令为ARM指
令),
M变种增加了两条长乘指令 3)增强型DSP指令(E变种)
E变种的ARM体系增加了一些增强处理器对典型的DSP算法 处理能力的附加指令。 4)Java加速器Jazelle(J变种)
ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结 合的产物 。
ARM教程--ARM体系结构与编程模型
FETCH
DECODE
EXECUTE
MEMORY
WRITE
ARM10
Branch Prediction Instruction Fetch ARM or Thumb Instruction Decode Shift + ALU Multiply Memory Access Multiply Add
Reg Read
跳转地址标号
;从Arm状态切换到Thumb状态 LDR BX R0,=Lable+1 R0
地址最低位为1,表示切 换到Thumb状态 地址最低位为0,表示切 换到ARM状态
;从Thumb状态切换到ARM状态 LDR R0,=Lable
BX
R0
ARM处理器模式
ARM体系结构支持7种处理器模式,分别 为:用户模式、快中断模式、中断模式、 管理模式、中止模式、未定义模式和系统 模式 这样的好处是可以更好的支持操作系统并 提高工作效率。
ADD r1 r2 SUB r3 r2 CMP r1 r3
ADD
译码
执行
SUB
译码
执行
CMP
译码
执行
在第一个周期,内核从存储器取出指令ADD; 在第二个周期,内核取出指令SUB,同时对ADD译码; 在第三个周期,ADD被执行,而SUB被译码,同时又取出 CMP指令。
ARM9/E系列
5 级 流 水 线 组 织 ARM
Reg Write
FETCH
ISSUE
DECODE
EXECUTE
MEMORY
WRITE
ARM11系列
ARM体系结构支持的数据类型
ARM处理器支持下列数据类型
ARM体系结构与编程
2005-8-10
理解ARM体系结构与编程的 意义
嵌入式系统的开发在很大程度上就是 嵌入式软件的开发
硬件:利用嵌入式微处理器和其他外围芯 片和电路搭建符合应用要求的开发板
软件:嵌入式操作系统、驱动、系统的初 始化、内存的管理、编译和连接、生成可 执行目标文件烧录到开发板的Flash中。
软件开发的第一步就是用汇编语言编 写系统初始化部分的代码
Copyright 2005 Prochip Electronics Co,ltd. All Rights Reserved.
Not to be repr1o6duced by any means without prior written consent.
2005-8-10
ARM工作模式(一)
ARM的七种运行模式
1个专用的程序计数器 1个专用的当前程序状态寄存器 5个专用的程序状态保存寄存器 30个通用寄存器
每一种处理器模式可以访问
R0-r12寄存器 R13(堆栈指针,SP)和R14(连接寄存器) 程序计数器,r15(PC) 当前程序状态寄存器,cpsr
在特权模式下(除了系统模式)还可以访问
一个特殊的spsr(程序状态保存寄存器)
Not to be repr6oduced by any means without prior written consent.
2005-8-10
ARM介绍
ARM(Advanced RISC Machines)公司是1990年成 立的设计公司,它本身不生产芯片,只提供芯片设 计技术,由合作公司生产各具特色的芯片。如三星 公司的S3C44B0X,Intel公司的PXA255。
Copyright 2005 Prochip Electronics Co,ltd. All Rights Reserved.
ARM体系结构与编程
ARM体系结构与编程
一、ARM体系结构
ARM(Advanced RISC Machine)是由英国ARM公司开发的一种低功耗、超低成本的处理器架构,是移动设备的首选处理器。
ARM架构的处理器有ARM7、ARM9、ARM11、 Cortex-A8 、Cortex-A15等,它们核心架构特点为以下几点:
1.保护模式。
ARM架构的处理器能够在用户模式和两个高级的保护模式之间来回切换。
2.对齐式存储。
ARM架构的处理器采用对齐方式,其二进制指令必须按照固定的位置排列,以便提高存储空间的利用率。
3.浮点处理单元。
ARM架构的处理器具有浮点数处理功能,使数值运算能够高效率地完成。
4.多级缓存。
ARM架构的处理器将原始数据复制到不同级别的快速缓存中,以便快速访问。
二、ARM程序的编程
1、ARM程序的编写
ARM程序的编写可以使用C语言编写,程序开发者需要掌握ARM架构各种中央处理器扩展指令集的使用方法,以便获得更好的效率。
2、编译ARM程序
ARM程序的编译是使用GNU的gcc编译器进行的,它可以将C语言编写的程序编译成ARM架构的机器码,并可以在ARM架构的处理器上运行。
3、调试ARM程序
ARM程序的调试使用GDB程序调试,它可以提供丰富的调试工具,可以跟踪程序执行的步骤,提供全面的程序反馈信息,可以帮助开发者快速定位程序运行出错的地方。
三、总结。
arm体系结构与编程
1.2.2 ARM 体系的变种
这里将某种特定功能称为 ARM 体系的某种变种,例如支持 Thumb 指令集称 为 T 变种。目前 ARM 定义了一些变种。 1、Thumb 指令集(T 变种) Thumb 指令集是将 ARM 指令集的一个子集重新编码 而形成的一个指令集。 ARM 指令长度为 32 位,Thumb 指令长度为 16 位。这样,使用 Thumb 指令集得 到密度更高的代码,这对于需要严格控制成本的设计是非常有意义的。 与 ARM 指令集相比,Thumb 指令集具有以下局限:
第一章 ARM 概述及其基本编程模型
ARM 芯片具有 RISC 体系的一般特点,如: � 具有大量的寄存器 � 绝大多数操作都在寄存器中进行, 通过 Load/Store 的体系在内存和寄存器之间 进行数据传递 � 寻址方式简单 � 采用固定长度的指令格式 除此之外,ARM 体系采用了一些特殊的技术,在保证高性能的同时尽量减少芯片 体积,减低芯片的功耗,这些技术包括: � 在同一条数据处理指令中包含算术逻辑处理单元和移位处理 � 使用地址自动增加(减少) ;来优化程序中循环处理 � Load/Store 指令可以批量传输数据,从而提高数据传输的效率 � 所有指令都可以根据前面指令执行的结果, 决定是否执行, 以提高指令执行的 效率
双字读取指令 LDRD,双字写入指令 STRD,协处理器的寄存器传输指令 MCRR/MRRC 以及 cache 预取指令 PLD 。这种 E 变种记作 ExP ,其中 x 表示缺少,P 代表上诉的几种指令。 目前有效的 ARM/Thumb 体系版本名称以及其含义如表 1.1 和表 1.2 中所列。 这些名称描述了各版本的具体特点。
1.2
ARM 体系结构的版本及命名方法
迄今为止,ARM 体系结构共定义了 6 个版本,版本号分别为 1~6.从版本 1 到 版本 6,ARM 体系的指令功能不断扩大,同时,各版本中还有一些变种,这些变 种定义了该版本指令集中不同的功能。ARM 处理器系类中的各种处理器,其采用 的实现技术各不相同,性能差别很大,应用场合也有所不同,但是只要它们支持 相同的 ARM 体现版本,基于它们的应用软件将是兼容的。
第2章ARM体系结构与编程模型
ARM920T, ARM922T
五级流水, 性能:1.1MIPS/MHz,可达300 MIPS (Dhrystone 2.1),单32-bit AMBA bus 接口,支持MMU
ARM926EJ-S, RM946E-S, ARM966E-S, ARM968E-S, ARM996HS
特征:MMU, Cache 最快频率、最高性能、合理功耗
特征:MPU, Cache 实时响应、合理性能、较低功耗
特征:no sub-memory system 一般性能、最低成本、极低功耗
第2章ARM体系结构与编程模型
ARM体系结构的命名规则
ARM{X}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S} x——系列 y——存储管理/保护单元 z——Cache T——Thumb16位译码器 D——JTAG调试器 M——快速乘法器 I——嵌入式跟踪宏单元 E——增强DSP指令 J——Jazelle F——向量浮点单元 S——可综合版本,以源代码形式提供的ARM核
第2章ARM体系结构与编程模型
ARM11 Micro-Architecture
v6 / Jazelle
ARM1026EJ-S
ARM926EJ-S
ARM7EJ-S
ARM1020E ARM946E-S
ARM966E-S
ARM920T ARM922T ARM940T ARM720T ARM7TDMI-S
第2章ARM体系结构与编程模型
如何选择嵌入式微处理器
• 微处理器内核的选择
– 有无MMU – OS的考虑
• 系统的工作频率 • 芯片存储器的容量 • 片内外设的考虑
– 实际应用的要求 – 接口时序
物联网工程专业ARM体系架构与编程课程思政教学改革实践探索
物联网工程专业ARM体系架构与编程课程思政教学改革实践探索作者:杨树媛郭斌靳晟来源:《电脑知识与技术》2023年第28期摘要:ARM体系架构与编程是新疆农业大学计算机与信息工程学院物联网工程专业的专业拓展类课程,课程开设学期为大三上学期,在专业培养计划中,该课程起着承上启下的重要作用,挖掘该课程的思政元素,研究该课程的思政教学方法,是落实立德树人根本任务的重要途径。
文中从该课程的特点出发,说明对该课程进行思想教学改革的必要性,介绍该课程融入思政教育的教学目标、课程思政教学内容、方法及案例,提出了思政教学的改革思路,为高校物联网工程嵌入式类相关课程的课程思政教学改革提供一定的参考和借鉴。
关键词:课程思政;思政元素;思政教学;物联网工程中图分类号:G642 文献标识码:A文章编号:1009-3044(2023)28-0164-030 引言习近平总书记在全国高校思想政治工作会议上指出:“要用好课堂教学这个主渠道,思想政治理论课要坚持在改进中加强,提升思想政治教育亲和力和针对性,满足学生成长发展需求和期待,其他各门课都要守好一段渠、种好责任田,使各类课程与思想政治理论课同向同行,形成协同效应[1]。
”大学生的思政教育工作必须与专业课程同步进行,要找到一个合适的切入点,将思政教育贯穿于整个专业课程的教学全过程中,切实落实立德树人的根本任务。
专业课程的思政教学改革必须利用网络平台和课堂教学阵地,把握课程教学改革的核心环节,改革教学内容、教学目标、教学方法等教学环节,从而构建高效的课程思政教学体系[2-3]。
ARM体系架构与编程课程是国家一流本科专业——物联网工程专业的一门专业拓展类课程,具有较强的理论性和实践性,是基础课程的综合应用类课程,同时又是连接基础课程与相关嵌入式类专业课程的桥梁,在物联网专业中起到承上启下的作用,对于后续的实时操作系统课程、专业实习和毕业设计等的学习有着重要的作用。
课程以STM32F407系列开发板为例,主要讲授ARM嵌入式系统涉及的理论知识、STM32处理器的功能特点、工作原理、硬件资源、常用外设包括GPIO、中断、串口、定时器以及其他基本外设接口的程序设计方法、嵌入式系统设计方法等内容,为今后开展“智能感知与控制”相关科研训练、科技竞赛、产品研发等工作做好技术储备。
第2 章 ARM体系结构及编程模型(OBE)汇总
ARM9TDMI的五级流水线
2020/6/24
ARM7TDMI与ARM9TDMI流水线比较
3.ARM9TDMI的五级流水线
ARM7TDMI与ARM9TDMI流水线比较
2020/6/24
ARM7和ARM9流水线比较
• 5级流水线的ARM9内核是哈佛架构,拥有独立的 指令和数据总线;指令和数据的读取可以在同一周 期进行;
ARM1020E XScale ARM9E-S ARM966E-S
SIMD Instructions
6
Multi-processing
V6 Memory architecture (VMSA)
Unaligned data
support
ARM1136EJ-S
ARM系列产品命名规则
ARM 926EJ-S
ARM体系结构的特点
• 1) RISC型处理器结构
– (LOAD/STORD, I-cache, D-cache)
• 2)Thumb指令集 (32/16) • 3)多处理器状态模式 (7) • 4)两种处理器工作状态(2) • 5)嵌入式在线仿真调试(ICE-RT ,JTAG) • 6)灵活方便的协处理器接口 (16个) • 7)低电压功耗的设计
ARM体系结构的发展
Halfword
4
1
and signed halfword /
byte support
System
2
mode
SA-110 SA-1110
3
Early ARM architectures
Thumb instruction set
ARM7TDMI
4T
ARM9TDMI
ARM720T
关于arm技术论文(2)
关于arm技术论文(2)副标题#关于arm技术论文篇二ARM嵌入式远程监控技术研究摘要:在本文中,对常用的远程监控技术做出了总结,系统介绍了嵌入式远程监控系统的基本组成,特别是对基于ARM的嵌入式远程监控技术做了详细分析。
首先介绍了嵌入式系统和远程监控系统的基本概况,介绍了Linux平台建设和图像采集处理主要的硬件电路,最后对嵌入式远程监控技术提出了自己的建议,并对在这个领域未来的研究方向进行了讨论。
关键词:远程监控 ARM中图分类号:TN915 文献标识码:A 文章编号:1007-9416(2013)03-0007-011 引言当今社会已经进入了数字信息技术和网络技术高速发展的个人电脑时代,嵌入式设备已经渗透到各个领域,逐步向网络方向发展。
嵌入式监控系统采用嵌入式实时多任务操作系统,利用以太网传输图像数据和控制信号,同时具备可以应用于个人计算机的强大处理能力,进一步监测分析和处理图像,它的功能集中到一个小尺寸芯片,可以直接连接到局域网或广域网,大大提高了实时性能、稳定性和可靠性。
因此嵌入式远程监控技术具有广泛的应用领域,是科学研究和军事发展必不可少的一项重要技术。
2 嵌入式系统嵌入式系统有两种定义,第一个是指以嵌入式系统应用为中心,基于计算机技术的软件硬件。
指为了减少对功能、可靠性、成本、体积、功耗方面的严格要求,适应应用系统的专用计算机系统;第二个是根据IEEE的定义:嵌入式系统是用于控制、监视或者辅助操作机器和设备的装置。
它通常指的是电脑系统,包括硬件和软件两部分。
目前,嵌入式设备已深深融入人们的日常生活。
该技术涉及到生活的角角落落,包括了电子玩具、MP3、MP4、SOHO路由器、手机、机顶盒、汽车电子、电磁炉、电梯、安全系统、自动售货机、医疗仪器、音频、ATM等。
3 远程监控系统3.1 远程监控系统概述远程监控是通过计算机的远程监控来实现控制对象的网络系统。
远程监控系统是可以实现本地和远程监控功能的硬件和软件系统的结合。
ARM体系结构与编程一arm开发板上运行第一个程序Hello World
今天是第一讲arm体系结构与编程一arm开发板上运行Hello World后续我们会讲解ARM指令,和中断机制,SDRAM原理等等后续会讲解linux驱动,让嵌入式更平民化欢迎加入我们深嵌这里以s3c2440为主,我们都知道2440内存有效的应用范围是地址SRAM的0-1000(16进制),还有就是30000000-34000000。
那么我们要运行一个程序的话就要选用一个内存来运行我们的程序,要想办法把程序放进去,我们一般放到sd 一般sram是用作一些初始化的。
在sdram中33000000以上的空间已被uboot所占用,我们只能用33000000以下的空间。
我们用C语言来写,最简单的莫过于hello world!我们就用这个例子来讲解,命令为test.c。
#include<stdio.h>int main(int argc,char **argv){printf("hello world!\n")return 0;}该程序在x86平台上编译时很简单的,gcc test.c -o test运行./test在X86上面是装着linux操作系统的,但是在我们一开始开发板没有装操作系统的话那怎么办呢?要是我们在arm开发板上运行怎么办?我们知道编译的过程是先把C语言编程汇编,再把汇编编程机器代码,但是ARM和X86不是同一个体系。
汇就是说运算的指令是不一样的!那么我们就不能用上面的来编译了!那么怎么办呢?我们只能用arm编译器,那么我们要安装交叉工具链,如何安装呢?下面就讲解交叉编译器的安装我们先下载arm-linux-gcc-3.4.1.tar.bz2(这个有不同版本,各取所爱)下载地址:/thread-36-1-1.html首先我们用tar jxf arm-linux-gcc-3.4.1.tar.bz2解压出来解压出来了就是我们的编译器,支持的汇编或者机器指令是arm的,为什么要叫arm-linux-gcc呢?意思是在arm平台上装一个Linux,写出来的程序就能再我们arm开发板上运行。
汇编语言程序设计 基于arm体系结构 pdf
汇编语言程序设计基于arm体系结构pdf1. 引言1.1 概述汇编语言程序设计是计算机科学中重要的一环,它提供了对底层硬件的直接控制能力。
在这个数字化时代,我们生活在嵌入式系统和移动设备无处不在的时代。
ARM体系结构作为一种广泛应用于嵌入式系统和移动设备中的处理器架构,需求人员必须具备ARM汇编语言的基本开发技巧。
1.2 文章结构本文将深入探讨ARM体系结构下汇编语言程序设计的基础知识及其实践应用。
文章分为五个主要部分:- ARM体系结构概述:简要介绍ARM体系结构的发展历程、关键特点以及应用领域。
- 汇编语言基础知识:详细讲解ARM汇编语言中数据类型与运算指令、寄存器与内存访问、分支和循环指令等基本概念。
- ARM汇编语言程序设计实例解析:通过实例解析阐述ARM汇编语言程序结构与组成部分、寄存器使用示范以及内存访问案例分析等内容。
- 实践应用与未来展望:分享ARM汇编语言在嵌入式系统开发中的应用实例,并展望ARM技术的发展趋势和面临的挑战。
- 总结与建议:对文章进行总结,并给出学习ARM汇编语言程序设计的建议。
1.3 目的本文旨在帮助读者全面了解ARM体系结构下汇编语言程序设计的基本原理和操作方法。
通过学习此类知识,读者可以掌握ARM汇编语言的核心概念和技巧,提升在嵌入式系统、移动设备等领域中的开发能力。
同时,本文也将分享一些实践经验和未来发展趋势,为读者提供更多参考和启示。
无论是初学者还是有一定经验的开发人员,都可以从本文中获益并得到有益的指导。
2. ARM体系结构概述:2.1 发展历程:ARM(Advanced RISC Machine)体系结构起源于上世纪80年代末,最初由英国公司Acorn Computer开发。
早期的ARM处理器主要用于个人电脑领域。
随着技术的不断进步和市场需求的扩大,ARM逐渐应用于各种移动设备和嵌入式系统中,并取得了巨大成功。
2.2 关键特点:ARM体系结构有一些关键特点使其在市场上受到广泛认可。
3ARM体系结构及编程模型
第二章 ARM体系结构及编程模型
1
ARM技术的应用领域及特点
2 ARM微处理器系列 3 ARM处理器的工作状态 4 ARM处理器的工作模式 5
ARM处理器的存储器格式
6 ARM 处理器的寄存器组织 7
ARM 异常处理 1
ARM技术的应用领域及特点
ARM-Advanced RISC Machines
8
ARM微处理器系列
ARM微处理器系列
ARM7系列 系列 ARM9系列 系列 ARM9E系列 系列 ARM10E系列 系列 SecurCore系列 系列 Intel的Xscale 的 其中, 其中,ARM7、ARM9、ARM9E和ARM10为4个通用 、 、 和 为 个通用 处理器系列, 处理器系列,每一个系列提供一套相对独特的性能来满足不 同应用领域的需求。 同应用领域的需求。SecurCore系列专门为安全要求较高的 系列专门为安全要求较高的 应用而设计。 应用而设计。
5
ARM技术的应用领域及特点
ARM微处理器的特点—大量使用寄存器 大量使用寄存器
ARM 处理器共有 个寄存器,被分为若干个组,这些 处理器共有37个寄存器 被分为若干个组, 个寄存器, 寄存器包括: 寄存器包括: 31个通用寄存器,包括程序计数器(PC 指针), 个通用寄存器,包括程序计数器( 指针), 个通用寄存器 均为32位的寄存器 位的寄存器; 均为 位的寄存器; 6个状态寄存器,用以标识CPU的工作状态及程 个状态寄存器,用以标识 个状态寄存器 的工作状态及程 序的运行状态,均为32位 序的运行状态,均为 位。
14
ARM微处理器的工作状态
ARM与THUMB
THUMB指令是ARM指令的子集 可以相互调用,只要遵循一定的调用规则 Thumb指令与ARM指令的时间效率和空间效率关系为: 存储空间约为ARM代码的60%~70% 指令数比ARM代码多约30%~40% 存储器为32位时ARM代码比Thumb代码快约40% 存储器为16位时Thumb比ARM代码快约40~50% 使用Thumb代码,存储器的功耗会降低约30%
ARM体系结构与编程第版第章
一种类型的二级页表还包含有以极小页为单位的地址变换条 目。
第十一页,编辑于星期日:二十二点 十一分。
122
5.3.3 MMU中的地址变换过程
1. 基于一级页表的地址变换过程
(1) (2)
基于一级页表的地址变换过程 段描述符及其地址变换过程
第六页,编辑于星期日:二十二点 十一分。
7
5.3 存储器管理单元MMU
5.3.1 存储器管理单元MMU概述 在ARM系统中,存储器管理单元MMU主要完成以下工作:
虚拟存储空间到物理存储空间的映射。在ARM中采用了页式虚拟 存储管理。它把虚拟地址空间分成一个个固定大小的块,每一块 称为一页,把物理内存的地址空间也分成同样大小的页。页的大 小可以分为粗粒度和细粒度两种。MMU就要实现从虚拟地址到物 理地址的转换。
换条目中的访问权限控制位联合作用,控制存储访问的
权限。具体规则如表5.20所示。
AP 0b00 0b00 0b00 0b00 0b01 0b10 0b11
SR 00 10 01 11 XX XX XX
特权级的访问权限 没有访问权限 只读 只读 不可预知 读/写 读/写 读/写
用户级的访问权限 没有访问权限 没有访问权限 只读 不可预知 没有访问权限 只读 读/写
D15
D14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
第十五页,编辑于星期日:二十二点 十一分。
16
5.3.6 关于快表的操作
1. 使无效(Invalidate)快表的内容
ARM体系结构课程论文
基于STM32F103的类人机器人舵机控制器设计摘要:类人机器人由于其特殊的身体结构和运动方式,对舵机的精确性和稳定性提出了很高的要求。
采用以Cortex-M3为内核的STM32F103作为控制芯片,配合以较高精度的AS5045磁旋转编码器构建伺服系统,能较好满足类人机器人的各种运动要求。
关键词:类人机器人;STM32F103;磁旋转编码器;舵机控制Design of actuator Controller in humanoid Robot Based on STM32F103Abstract:With the problem of humanoid robot the design takes STM32F103 as the kernel based on Cortex-M3 and embedded real-time operating system }C/OS-II. It divides the program into initiating task,motor's speed control task,steering engine control task and other relatively independent tasks,setting the priority of each task. The system can achieve motion control fo Key words: humanoid robot;STM32F103;magnetic rotary encoder;motion control引言类人机器人在日常生活中的应用越来越广泛,其最大的难关就是双足直立行走,这就对其舵机的动态性能提出了较高的要求——能在任意时刻到达控制需要的指定位置并且使舵机停在任意角度。
本文选用了大小适中、高可靠性的maxon RE-max Ø17直流电机作为舵机的执行机构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《ARM体系结构与编程》论文
ARM指令
摘要:
在此论文中,简单了列出一些ARM指令的命令。
包括跳转,数据处理乘法与乘加,程序状态寄存器存取,寄存器加载/存储,移位元,协处理器和和Thumb 指令。
最后有总结了ARM指令极中需要注意和不太容易理解的地方。
关键字:Thumb指令,跳转指令,堆栈寻址,立即数寻址
The ARM instruction set
Abstract:
In this paper, a simple list of instructions commands. The ARM Including jump, data processing method, process and by state registers access, storage, loading/shift register, Thumb and processor instructions. Finally summarizes the ARM instructions in a need to pay attention and not too easy to understand.
Key words: Thumb instruction, jump instruction, stack addressing, immediately several addressing.
1.1 ARM微处理器的指令集概述
ARM指令集
* 跳转指令:
B 跳转指令。
BL 带返回的跳转指令。
BLX 带返回和状态切换的跳转指令。
BX 带状态切换的跳转指令。
* 数据处理指令
MOV 数据传送指令MVN 数据取反传送指令CMP 比较指令
CMN 反值比较指令TST 位测试指令
TEQ 相等测试指令
ADD 加法指令28
ADC 带进位加法指令SUB 减法指令
SBC 带借位减法指令
RSB 逆向减法指令
RSC 带借位的逆向减法指令AND 逻辑与指令
ORR 逻辑或指令
EOR 逻辑互斥指令
BIC 位清除指令
* 乘法指令与乘加指令
MUL 32 位乘法指令
MLA 32 位乘加指令SMULL 64 位有符号数乘法指令
SMLAL 64 位有符号数乘加指令
UMULL 64 位无符号数乘法指令
UMLAL 64 位无符号数乘加指令
* 程序状态寄存器存取指令
MRS 程序状态寄存器到通用寄存器的数据传送指令。
MSR 通用寄存器到程序状态寄存器的数据传送指令。
* 寄存器加载/存储指令:
LDR 字数据加载指令DRB 字节数据加载指令LDRH 半字数据加载指令STR 字数据存储指令STRB 字节数据存储指令STRH 半字数据存储指令LDM 连续数据加载指令STM 连续数据存储指令
* 数据交换指令:
SWP 字数据交换指令
SWPB 字节数据交换指令* 移位元指令:
LSL 逻辑左移ASL 算术左移LSR 逻辑右移ASR 算术右移
ROR 循环右移
RRX 带扩充的循环右移44
* 协处理器指令
CDP 协处理器数操作指令
LDC 协处理器数据加载指令STC 协处理器数据存储指令46 MCR ARM处理器寄存器到协处理器寄存器的数据传送指令MRC 协处理器寄存器到ARM处理器寄存器的数据传送指令
1.2 Thumb指令及应用
Thumb指令集是ARM指令集的一个子集,所有的Thumb指令都有对应的ARM指令。
它舍弃了ARM指令集的一些特性
如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。
Thumb指令集在保留32代码优势的同时,大大的节省了系统的存储空间。
Thumb指令集中操作数仍然是32位,指令地址也为32位,指令编码16位。
由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。
1.2.1 Thumb指令优势
在一般的情况下,Thumb指令与ARM指令的时间效率和空间效率关系为:–Thumb代码所需的存储空间约为ARM代码的60%~70%;
–Thumb代码使用的指令数比ARM代码多约30%~40%;
–若使用32位的存储器,ARM代码比Thumb代码快约40%;
–若使用16位的存储器,Thumb代码比ARM代码快约40%~50%;
–与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%。
1.2.2.Thumb指令集的局限性
条件跳转限制在256byte 偏移范围内,无条件跳转限制为4K偏移范围内,而ARM为32 Mbytes偏移。
它不支持乘法和累加指令;没有协处理器指令;没有信号量指令;没有访问CPSR指令。
1.3 对ARM指令的一些总结
ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。
ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL 汇编是不同的,初学者很不易理解。
(1) 指令的后缀:
"S" 可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码。
很多初学着不知道怎么更新,若这条指令执行完以后,对ARM程序状态寄存器的条件码标志(N,Z,C,V)的影响。
"! " 表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。
如:LDR R0, [R1, #4] 他相当于R0 <- mem32[R1+4]
R1 = R1+4;
"^" LDMFD R13!, (R0-R3, PC)^ //"^"表示一条特殊形式的指令。
(在从存储器中装入PC的同时,CPSR也得到恢复)。
四、#号后面加0x或&表示十六进制:#0xFF, #&FF
#号后面加0b表示二进制。
#号后面加0d表示十进制。
(2) 立即数寻址
每个立即数都是采用一个8位的常数循环右移偶数位间接得到。
初学者不易理解:一个32位的指令不可能全部用来保存32位的立即数,所以从指令的编码格式上分析,在指令编码中只分配了12位来存储立即数,其中4位用来保存右循环值,8位用来保存一个常数,所以并不是每一个32位的立即数都是合法的。
六、寄存器寻址
ADD R3,R2,R1,LSR #2 //寄存器R1的内容右移了两位,但是注意本指令执行完毕以后R1的内容并不改变。
七、前变址、自动变址和后变址
1)、前变址:LDR R0,[R1,#4] //R1寄存器的内容先加4,然后执行操作,但操作完毕以后,R1的内容不变。
2)、自动变址:上面总结指令后缀时提到"!",表示自动变址(参考上面三)。
3)、后变址:LDR R0,[R1],#4 //先进行操作然后R1+4->R1,操作完毕后,R1 = R1+4。
不需要"!"号。
(3) 堆栈寻址
一定要注意:堆栈操作总是要指定自动变址的,否则会覆盖以前保存的内容。
(4) 乘法指令
1)、乘法指令不支持第二操作数为立即数。
2)、结果寄存器不能同时作为第一源寄存器。
32位:MUL Rd,Rm,Rs
MUL Rd,Rm,Rs //Rd和Rm不能为同一寄存器
64位:MUL RdHi,RdLo,Rm,Rs //RdHi、RdLo和Rm不能为同一寄存器,RdHi和RdLo不能为同一寄存器。
(4) 跳转指令
1)、BL和BLX跳转是硬件自动将下一条指令地址保存到LR(R14)中,不需要自己写指令。
2)、当指令跳转到32MB地址空间以外时,将产生不可预料的结果。
ARM的指令集比较简单,肯定还有其他需要注意的地方,欢迎网友们积极参与补充。
1.4 参考资料
1)马忠梅,马广云等ARM嵌人式处理器结构与应用基础.北京s北京航空航天大学出版杜,2002
2)杜春雷.ARM体系结构与编程.北京清华大学出版社,2003
3)马文华嵌入式系统设计与开发科学出版社。