ARM编辑编译工具

Posted 野渡书生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM编辑编译工具相关的知识,希望对你有一定的参考价值。

手动编译

编译器问题,肯定是GNU的大名鼎鼎的GCC了,与此相关的什么连接器,汇编器也都包含在内了。

针对arm的GCC,当然就是arm-linux-gcc了,我所用的版本就是友善之臂光盘自带arm-linux-gcc 4.4.3。也有资料说也可以用arm-elf-gcc,这个与arm-linux-gcc带的c库不同,是uclibc,更精简更适合嵌入式。

手动编译需要我们自己写Makefile文件,涉及到编译过程的依赖等细节问题。在我们实际开发中,可以不通过这种方式,但是需要了解这个过程。

自动编译

1ADS1.2

    ADS是ARM公司的集成开发环境软件,ADS包括了四个模块分别是:SIMULATORC 编译器;实时调试器;应用函数库

特点:

     √C编译器效率极高;支持C以及C++,使工程师可以很方便的使用C语言进行开发;

     √提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统;

(直接就可以在IDE环境下,通过运行自己编写的汇编或C语言,查看ARM系统中寄存器的情况)

     √配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行情况尽在掌握;

     √ADS1.2需要硬件支持才能发挥强大功能,目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE等;

     √简易下载电缆不能支持ADS1.2。

 2ARM REALVIEW DEVELOPER SUITE

    RealView Developer Suite工具是ARM公司是推出的新一代ARM集成开发工具,支持所有ARM系列核,并与众多第三方实时操作系统及工具商合作简化开发流程。

开发工具包含以下组件:

     · 完全优化的ISO C/C++编译器;

     · C++ 标准模板库;

     · 强大的宏编译器;

     · 支持代码和数据复杂存储器布局的连接器;

     · 可选 GUI调试器

     · 基于命令行的符号调试器(armsd)

     · 指令集仿真器;

     · 生成无格式二进制工具、Intel 32位和Motorola 32位ROM映像代码的指令集模拟工具;

     · 库创建工具.

3IAR EWARM

    Embedded Workbench for ARM 是IAR Systems公司为ARM微处理器开发的一个集成开发环境(下面简称IAR EWARM)。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。

    IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.30。EWARM 中包含一个全软件的模拟程序(simulator),用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM的功能和使用方法。

IAR EWARM的主要特点如下:

     * 高度优化的IAR ARM C/C++ Compiler

     * IAR ARM Assembler

    *   一个通用的IAR XLINK Linker

4KEIL ARM-MDKARM

    Keil uVision调试器可以帮助用户准确地调试ARM器件的片内外围功能(I2C、CAN、UART、SPI、中断、I/O口、A/D转换器、D/A转换器和PWM模块等功能)。ULINK USB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD),使用户可在目标硬件上调试代码。通过使用Keil uVision IDE/调试器和ULINK USB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。

主要特点:

     * Project/Target/Group/File的重叠管理模式,并可逐级设置;

     * 支持编辑状态的断点设置,并在仿真状态下有效;

     * 高速ARM指令/外设模拟器;

     * 软件模拟进程中允许建立外部输入信号

     * 支持C调试描述语言,可建立与实际硬件高度吻合的仿真平台;

     * 支持简单/条件/逻辑表达式/存储区读写/地址范围等断点。

     * 多种流行编译工具选择

     * Keil高效率C编译器;

     * ARM公司的ADS/RealView 编译器

     * GNU GCC 编译器

ARM调试工具

目前,主流的调试工具可以分为软件调试工具和硬件调试工具,二者一般是结合使用。

软件调试

所谓软件调试,是指运行在PC端的程序,需要对ARM开发板进行调试时,需要打开这个上位机程序,然后通过J-Link等硬件进行程序的调试。

1H-JTAG

H-JTAG是一个免费的ARM调试代理,程序没有任何限制

   0) 支持ARM7/ARM9,支持自动检测和手动指定内核

     1) 使用RDI接口,支持SDT,ADS,REALVIEWIAR

     2) 支持ADS1.2和SDT2.51和RREAL VIEW

     3) 支持个硬件断点或者数量不限的软件断点

     4) 支持ARM/THUMB模式

     5) 支持LITTLEENDIAN & BIGENDIAN

     6) 支持SEMIHOSTING

     7) 支持WIGGLER SDTJTAG和自定义接口

2FlashMagic

与其说是调试软件,不如说是下载工具,可以直接下载hex、bin文件到开发板上。

3LPC2000系列ISP工具

    可经由Philips官方网站下载。

4Macraigor Systems Wiggler 调试工具

 

硬件调试

1J-Link

J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产。提供对市面上几乎所有ARM内核芯片的支持。目前最新版本的J-Link产品为V8,支持JTAGSWD模式。并且对主要的IDE环境如KEILIAR都有良好的支持。优点很多,因此也是首选的调试工具。

SEGGER的J-link版本众多,超过1百种。正版的通用型J-link价格贵,国内大部分在使用的是克隆版的J-link。克隆版目前价格低於¥70。因为克隆太多,SEGGER公司最新版本的驱动对克隆版本已经不再提供支持,这是一个问题。

主要特征:

   1)支持所有ARM7和ARM9

     2)下载速度高达600KB/sec

     3)无需电源供电,可直接通过USB取电

     4)JTAG速度是8MHz

     5)自动辨速

     6)监控所有的JTAG管脚信号,测量电压

     7)20pin标准JTAG连接器

     8)配带USB口和20pin插槽

     9)支持Windows 2000 和Windows XP

  10)带J-Link TCP/IP server,允许通过TCP/ IP 网络使用J-Link

 

2ULINK

通用的ARM JTAG工具ULINK。

ULINK是ARM官方的调试工具,KEIL出品。ULINK也可以支持大多数的ARM芯片,对KEIL的支持非常好,是KEIL的默认调试工具。缺点是因为不支持IAR,影响了ULINK的推广。

ULINK官方提供电路图等资料,属於半开放的,可以自做。目前山寨版的价格比J-Link略高。也低於¥100。

3OpenJTAG

OpenJTAG为开源的JTAG调试工具,功能强大,并且配合其他的开源软件工具可用於在Linux对ARM芯片进行调试,因此在一些社群中使用较多。因为采用FTDI+FPGA双芯片的架构,成本相对较高。要低於¥100,需要自己制作。

4、低成本的并口JTAG

并口JTAG的电路网上很多,目前因为电脑没有了并口的关系,处于淘汰阶段。但从成本上来说是最便宜的。较流行的一种名为wigger,要注意20PIN的接线,其中RTCK的接法。

 

ARM调试器汇总

通用的ARM调试主要为上述几种,其他的ARM调试工具还有RDI、早期采用并口的ARM调试工具目前因为PC不带并口已经淘汰。从实现的方式来说,使用FTDI的USB驱动芯片以及采用MCU来进行协议转换的是主要的两类。一般来说采用FTDI芯片的ARM调试工具在一般被用来支持某家公司芯片,而不能支持其他公司的ARM芯片,因此往往是不通用的。

 

H-JTAGJ-Link的区别

你调试arm,总要遵循arm的调试接口协议,jtag就是其中的一种吧。当仿真时,iar,keil,ads等等都有一个公共的调试接口,RDI就是其中的一咱,那么我们如何完成RDI-->arm调试协议(JTAG)的转换呢?如是乎就有两种做法:

 

  1. 在电脑上写一个服务程序,把keil,ads,iar中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像RS232那样的作用)发送你的的目标板。 h-jtag就是这样的。 h-jtag的硬件就仅是一个物理电平的转换接口,所以很简单。而电脑中装的h-jtag软件就是前面说到的服务程序,负责协议转换的。

 

2.另一种做法,就是做一个板,用此板直接接收来自keil,ads,iar等软件的调试命令,由此板做rdi->jtag协议的转换。然后与目标板通信,这就是jlink的工作原理。

 

由上可以看出 h-jtag由于是软件作协议转换的,所以速度较慢,但是硬件简单。而第二种方法的jlink一般带一个强劲的CPU,作硬件协议转换,把以硬件复杂,但速度快。

JTAG,J-LinkOpenJTAG的比较

1. JTAG

    JTAG(Joint Test Action Group) 是IEEE1149.1 (Standard Access Port and Boundary-Scan Architecture)标准.它最初用来以边界扫描的方式测试印刷电路板,当然它现在仍然这一方面广泛使用。

    JTag的用途:

    1. 边界扫描测试

    2. Flash烧写程序和数据: 可以烧写Nor Falsh Nand Falsh

    3. 调试ARM裸机程序,不能调试嵌入式Linux程序

    JTag的接口:

    JTag接口并没有统一的标准。ARM处理器通常使用2*10针(部分使用2*7针)的JTag接口。

    JTag连接Host的一端通常为并口。一般笔记本及台式机都很少有并口接口,而且市面上买到的USB转并口并不能用于JTag,USB转并口主要是给老式打印机使用的。这就使得我们很难使用JTag以及笔记本进行烧写。另外的一个缺点是并口JTag的速率非常低。

    JTag的替代品:

    Serial Wire Debug(SWD)。

2.JLink

    JLink是Segger的产品,http://www.segger.com/jlink.html。它是USB接口转到JTag接口的适配器(adaptor),并不是真正意义上的仿真器。它采用标准的14针或者20针的Jtag接口与开发板相连。它支持多种CPU内核(ARM7, ARM9,Cortex etc.)。对ARM而言,它可能是最受欢迎的适配器。

    JLink的功能:

    1. Flash烧写程序:不支持烧写NAND Flash

    2. 支持Windows, Linux以及Mac: 但是Linux及Mac仅支持JLink Commander, Command Line GdbServer, 以及shared library。

    3. 支持多种调试协议: 如GDB, RDI 等

    4. USB转串口功能

    JLink的接口:

    USB接口,JLink的价格也比较低(当然是山寨的)。

3.OpenJTAG

    OpenJTag是一个开源项目(包含软件和硬件),采用GNU GPL license: http://www.openjtag.org/。同样它也是一个USB接口转JTag接口的适配器,同样不是真正意义上的仿真器

    OpenJTag的功能:

    1. Flash烧写程序: 支持NOR Flash NAND Flash

    2. 支持Windows以及Linux

    3. 能够用在支持GDB调试协议的工具上: IAR Eclipse, 但不能用在支持RDI调试协议的工具上: 如ADS

    4. USB转串口功能

    OpenJtag的接口:

USB接口,但是他的价格要比JLink高一些。

代码存放位置

启动代码一般下载到NorFlash之中,其余的应用程序一般下载到NandFlash、SDRAM(内存)上,当然在实际运行的时候,NandFlash中的代码需要搬移到SDRAM上运行。

支持烧写到NorFlash之中的软件有:OpenJTAG、J-Link、JTAG

支持烧写到NandFalsh之中的软件有:OpenJTAG、JTAG

支持烧写到SDRAM之中的软件有:

以上是关于ARM编辑编译工具的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式:ARM符号定义伪操作详解

ARM汇编基础

交叉编译概述

在ubuntu上交叉编译Boost 1.57.0 for arm

mini2440 编译工具链(gcc)安装

能否在windows上搭建arm-linux交叉编译环境?