Ch2 ARM体系结构
- 格式:ppt
- 大小:331.50 KB
- 文档页数:55


GCC编译器中和ARM体系结构相关的选项解释
GCC编译器是一款功能强大的开源编译器,可用于编译多种编程语言,包括C、C++、Objective-C和Fortran等。GCC支持多种体系结构,其中包括ARM体系结构。本文将解释GCC编译器中与ARM体系结构相关的选项。
1. -march=arch
这个选项用于指定目标ARM处理器的体系结构版本。arch参数可以是ARMv4、ARMv4T、ARMv5、ARMv5T、ARMv5TE、ARMv5TEJ、ARMv6、ARMv6K、ARMv6Z、ARMv6KZ、ARMv6T2、ARMv7、ARMv7A、ARMv7R或ARMv7M。不同的版本对ARM处理器的特性和指令集有不同的要求和支持,因此正确指定arch参数对于生成高效的机器码非常重要。
2. -mfloat-abi=abi
这个选项用于指定用于处理浮点数的ABI(Application Binary
Interface)。abi参数可以是soft、softfp或hard。soft ABI不使用浮点寄存器,而是通过软件库来进行浮点运算。softfp ABI在软浮点运算时使用浮点寄存器,但函数参数和返回值通过通用寄存器来传递。hard
ABI使用浮点寄存器来传递函数参数和返回值,并利用硬件浮点加速浮点运算。选择合适的ABI对于提高程序的浮点运算性能非常重要。
3. -mfpu=fpu
这个选项用于指定要使用的浮点单元。fpu参数可以是none、auto、vfp或neon。none表示不使用浮点单元,将所有浮点运算转为软件模拟。auto表示自动选择浮点单元,默认情况下会选择具有最高级别的浮点单元。vfp表示使用VFP浮点单元,这是一种常见的浮点单元,支持单精度和双精度浮点数运算。neon表示使用NEON浮点单元,这是一种更高级别的浮点单元,支持单精度和双精度浮点数运算以及SIMD指令。
4. -mthumb
基于ARM的励磁调节器故障切换设计DesignforFaultTransferingofExcitationRegulatorBasedonARM蒋云平陈树棠(福州大学电气工程与自动化学院,福建福州350002)摘要:提出了采用32位ARM微处理器LPC2214设计一套独立的双微机励磁调节器的构思;介绍了两机之间的单机切换和自动切换的电路设计;验证了该设计可实现两机之间故障的稳定切换。关键词:ARM;励磁调节器;双微机;故障切换Absract:Thereisonesetofdaul-microcomputerexcitationregulatordesignedwith32-bitARMmicroprocessorLPC2214;andexpaundthecircuitdesignofthesingleswitchingandautomaticswithingbetweenthetwomicroprocessors.Thesimulatingtestshowsthatthecircuitcantansferthemalfunctionsteadilybetweenthetwomicroprocessors.Keywords:ARM;Excitationregulator;Dualmicrocomputer;transfer中图分类号:TM33文献标识码:A文章编号:1006-0170(2007)04-0013-02FUJIANDIANLIYUDIANGONG第27卷第4期2007年12月ISSN1006-0170CN35-1174/TM
1引言励磁调节器作为同步发电机的重要组成部分,直接影响发电机的运行。提高励磁调节器运行的可靠性,是保证发电机组和电力系统运行可靠的基本要求,也是产品研制的方向。目前,国内已成功研制出各种型号的单微机、双微机励磁调节器。从连续性、可靠性等方面来讲,双微机的性能要比单微机的性能高得多[1]。为此,本文在福州大学研制的SMER型单微机励磁调节器的基础上[2],采用PHILIPS公司生产的32位ARM微处理器LPC2214研制出一种双微机励磁调节器,极大简化励磁调节器的接口电路,提高程序的运行速度,且适合产品的升级换代。本文重点介绍两套调节器间的故障切换方案设计。2双微机励磁调节器简介双微机励磁调节器分为主机和备用机。主机工作时发出的触发脉冲经过硬件切换单元输出到脉冲放大板,参与触发可控硅整流桥。备用机跟踪主机运行,通过双口SRAM与主机进行数据交换,发出与主机相同的触发脉冲。当备用机处于备用状态时,该信号被硬件切换单元禁止,未输出到脉冲放大板,不参与可控硅的触发控制;当备用机切换到主机后,触发脉冲才被输出,控制可控硅导通,而原主机的脉冲信号则被禁止输出。因此,任何时刻只有一组触发脉冲控制可控硅整流桥。图1为双微机励磁调节器的切换系统组成图。3双机切换方案设计[4]双微机励磁调节器出现运行错误的情况有:①运行程序进入死循环,导致CPU死机;②CPU失去供电电源,无法工作;③励磁调节器检测到机端电压
ARM体系结构的版本
前面一段时间我搞过一次《MCU编译与运行》的专题,详细介绍从代码编译到代码运
行以及中断机制的流程,这里想在编译部分补充一些知识点。
对于嵌入式开发人员,搭建开发环境是比较困难的一步,市面上针对ARM开发的IDE
非常多,有的编译器诸如ADS或者MDK等老编译器并不支持ARM11或者Contex系列的
内核,RVDS号称支持所有ARM,但RVDS4.0仅仅支持RealViewICE,这个调试器将近2
万元,个人一般无力购买,因此推荐ARM爱好者使用RVDS2.2,虽然界面和ADS一样粗
糙,对Win7的支持也不好,但支持JLink等常用编译器。
之所以有的编译器不支持ARM11是因为此编译器内置的指令集达不到ARM11所需指
令集的版本。ARM7与ARM9的指令集相同,是V4版本,因此编译好的ARM7代码是可
以在ARM9上运行的(注意,此处仅仅说的是ARM7和ARM9内核的指令集通用,也即代码可以执行,
不是指任何代码都可有效运行,毕竟不同芯片中的片内外设以及外设有所不同),ARM11使用V6版本
指令集,但ARM指令集向下兼容,因此一般代码也是可以执行,但V6中增加的指令就没
法执行了,会出现指令错误异常,程序会死机。下面就来看一下ARM指令集版本的升迁:
ARM指令集体系结构,从最初开发至今已有了重大改进,而且将会不断完善和发展。
为了精确表达每个ARM实现中所使用的指令集,到目前ARM体系结构共定义了6个版本,
以版本号v1~v6表示,各版本特点如下。
1. 版本1(v1)
该版本包括:
1. 基本数据处理指令(不包括乘法)
2. 字节、字以及半字加载/存储指令
3. 分支(branch)指令,包括用于子程序调用的分支与链接(branch-and-link)
指令
4. 软件中断指令,用于进行操作系统调用
5. 26位地址总线
2. 版本2(v2)
与版本1相比,版本2增加了下列指令:
arm汇编语言编程实验报告 实验二 ARM汇编语言编程实验.doc 班级计算机科学与技术(嵌入式) 学号 课程名称 ARM体系结构 姓名实验成绩日期 指导教师 冯灵霞 实 验 报 告 院系 信息工程学院 一、实验目的 1、掌握ADT IDEARM开发环境中基本的工程设置以及程序编译方法。 2、掌握ADT IDEARM开发环境中基本的程序调试方法。 3、掌握基本的ARM汇编语言编程方法。 二、实验内容 用汇编语言编写一个程序实现如下目的:从源地址拷贝num个字(num*4个字节)的数据到目的地址dst中。 三、预备知识 1、ARM汇编语言的基础知识。 2、程序调试的基础知识和方法。 四、实验设备 1、硬件:JXARM9-2440教学实验箱、PC机。 2、软件:PC机操作系统Windows 98(2000、XP)+ADT IDE开发环境。 五、基础知识 ADT IDE集成了GNU汇编器arm-elf-as、编译器arm-elf-gcc和链
接器arm-elf-ld。在ADT IDE中编写的程序必须符合GNU的语法规则。下面介绍一些基本的GNU汇编知识以及本实验用到的ARM汇编指令。 1、GUN汇编语言语法及规则 1)_start _start为程序默认入口点,代码段默认起始地址为0x800,如果需要修改可以在链接脚本文件中指定。 2)标号 语法: symbol: symbol为定义的符号。 说明:上述代码定义一个标号,它表示程序中当前的指令或数据地址。如果在程序中出现两个相同的标号,汇编器将会产生一个警告,且只有第一个标号有效。 2、GNU汇编语言伪操作 1).equ伪操作 语法: .equ symbol,expr expr为基于寄存器的地址值、程序中的标号、32位的地址常量或位的常量。symbol为.equ伪操作为expr定义的字符名称。 说明:该操作符为数字常量、基于寄存器的值和程序中的标号定义一个字符名称,相当于C语言中的宏定义。