手动编译

编译器问题,肯定是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编辑、编译工具的更多相关文章

  1. STM32中ARM系列编译工具链的编译宏选择(__CC_ARM、__ICCARM__、__GNUC__、__TASKING__)

    一 前言 stm32 f103中.关系到一个选择何种编译宏的问题.这里就梳理一下吧. 二 正文 1  在 core_cm3.h 文件中,有如下代码: #if defined ( __CC_ARM ) ...

  2. Java 反编译工具几枚(class转java)

    1.Java Decompiler Yet another fast Java decompiler. 下载地址:http://jd.benow.ca/#jd-gui-download 一款非常简洁的 ...

  3. Snippet Compiler——代码段编译工具

    原文地址:http://www.cnblogs.com/conexpress/archive/2011/07/24/2115308.html 不知道大家在工作中是否遇到过下面的情况:在项目中实现了一段 ...

  4. APK Multi-Tool强大的APK反编译工具终极教程

    一.APK Multi-Tool介绍    APK Multi-Tool 是APK Manager的升级版,是一个强大的APK反编译工具,集多种功能于一身,是居家必备.做ROM必选的工具!    这是 ...

  5. JDK 的配置和反编译工具的使用---------------Java知识点

    初始Java 1995年5月,sun公司开发了一门新的编程语言------Java 詹姆斯.高斯林(Java之父),Java语言小巧安全具有可移植可跨平台性的优点. 开发java程序的步骤:编写 ,编 ...

  6. 【腾讯开源】前端预处理器语言图形编译工具 Koala使用指南

    摘要:Koala是一款预处理器语言图形编译工具,支持Less.Sass.CoffeeScript.Compass框架的即时编译.无需手动输入命令去编译,后台监听文件是否有改变,如有修改会自动进行编译, ...

  7. 怎么使用Less/Sass编译工具koala

    怎么使用Less/Sass编译工具koala 如何使用Less/Sass编译工具koala 一.SASS调试插件的方法 如需调试功能,请在编译输出的时候输出debug信息,那样解析的css文件中就会包 ...

  8. C语言编辑编译及集成开发环境

    C语言编辑编译及集成开发环境 编辑器 在不同的操作系统上使用不同的编辑器,保存源代码文件时,文件名应指出程序的功能扩展名应为.c. 编译器 编译器把源代码编译成机器语言的二进制指令即目标代码生成目标文 ...

  9. Java编辑编译及运行环境

    Java编辑编译及运行环境 Microsoft Windows 编辑工具 EditPlus JDK JDK(Java Development Kit,Java开发工具包)安装JDK之后,其中bin文件 ...

随机推荐

  1. NOIP2012 DAY1 T2 国王游戏

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

  2. # win10下设置软件启动快捷方式

    win10下设置软件启动快捷方式 win10下设置软件启动快捷键,必须把快捷方式放在C:\ProgramData\Microsoft\Windows\Start Menu\Programs目录下,在这 ...

  3. php常用扩展有哪些

    bcmath(精确数值处理) bz2 calendar Core ctype curl date dom ereg exif fileinfo filter ftp gettext hash icon ...

  4. Python中的with语句(上下文管理协议)

    在平时工作中总会有这样的任务,它们需要开始前做准备,然后做任务,然后收尾清理....比如读取文件,需要先打开,读取,关闭 这个时候就可以使用with简化代码,很方便 1.没有用with语句 f = o ...

  5. k8s-PV和PVC使用

    上节课我们学习了 PV 的使用,但是在我们真正使用的时候是使用的 PVC,就类似于我们的服务是通过 Pod 来运行的,而不是 Node,只是 Pod 跑在 Node 上而已,所以这节课我们就来给大家讲 ...

  6. LibSVM格式简介

    对于训练或预测,XGBoost采用如下格式的实例文件: train.txt 1 101:1.2 102:0.03 0 1:2.1 10001:300 10002:400 0 0:1.3 1:0.3 1 ...

  7. decimal, double, float

     更新: 2019-09-08  c# and js 要 ceil floor 2 decimal point 都没有 build in 的 solution 比如 15.667 想 ceil to ...

  8. AOP与IOC区别

    Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Devel ...

  9. String Class

    #include <iostream> #include <fstream> #include <sstream> using namespace std; tem ...

  10. php 如何将image图片转化为字符串(GD库操作及imagick两种实现方式)

    前两天研究php中的 imagick 扩展的时候,突发奇想实现的一个小功能感觉挺有意思,在这里记录一下: 将一张image图片转化为字符串的形式,先上一张效果图.(运行笔记中的代码需要先安装 php_ ...