手动编译html
编译器问题,确定是GNU的大名鼎鼎的GCC了,与此相关的什么链接器,汇编器也都包含在内了。linux
针对arm的GCC,固然就是arm-linux-gcc了,我所用的版本就是友善之臂光盘自带arm-linux-gcc 4.4.3。也有资料说也能够用arm-elf-gcc,这个与arm-linux-gcc带的c库不一样,是uclibc,更精简更适合嵌入式。网络
手动编译须要咱们本身写Makefile文件,涉及到编译过程的依赖等细节问题。在咱们实际开发中,能够不经过这种方式,可是须要了解这个过程。架构
自动编译函数
1、ADS1.2工具
ADS是ARM公司的集成开发环境软件,ADS包括了四个模块分别是:SIMULATOR;C 编译器;实时调试器;应用函数库。布局
特色:学习
√C编译器效率极高;支持C以及C++,使工程师能够很方便的使用C语言进行开发;开发工具
√提供软件模拟仿真功能,使没有Emulators的学习者也可以熟悉ARM的指令系统;测试
(直接就能够在IDE环境下,经过运行本身编写的汇编或C语言,查看ARM系统中寄存器的状况)
√配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能,片内运行状况尽在掌握;
√ADS1.2须要硬件支持才能发挥强大功能,目前支持的硬件调试器有Multi-ICE以及兼容Multi-ICE的调试工具如FFT-ICE等;
√简易下载电缆不能支持ADS1.2。
2、ARM REALVIEW DEVELOPER SUITE
RealView Developer Suite工具是ARM公司是推出的新一代ARM集成开发工具,支持全部ARM系列核,并与众多第三方实时操做系统及工具商合做简化开发流程。
开发工具包含如下组件:
· 彻底优化的ISO C/C++编译器;
· C++ 标准模板库;
· 强大的宏编译器;
· 支持代码和数据复杂存储器布局的链接器;
· 可选 GUI调试器;
· 基于命令行的符号调试器(armsd);
· 指令集仿真器;
· 生成无格式二进制工具、Intel 32位和Motorola 32位ROM映像代码的指令集模拟工具;
· 库建立工具.
3、IAR 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
4、KEIL 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等硬件进行程序的调试。
1、H-JTAG
H-JTAG是一个免费的ARM调试代理,程序没有任何限制
0) 支持ARM7/ARM9,支持自动检测和手动指定内核
1) 使用RDI接口,支持SDT,ADS,REALVIEW和IAR
2) 支持ADS1.2和SDT2.51和RREAL VIEW
3) 支持个硬件断点或者数量不限的软件断点
4) 支持ARM/THUMB模式
5) 支持LITTLEENDIAN & BIGENDIAN
6) 支持SEMIHOSTING
7) 支持WIGGLER SDTJTAG和自定义接口
2、FlashMagic
与其说是调试软件,不如说是下载工具,能够直接下载hex、bin文件到开发板上。
3、LPC2000系列ISP工具
可经由Philips官方网站下载。
4、Macraigor Systems Wiggler 调试工具
硬件调试
1、J-Link
J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产。提供对市面上几乎全部ARM内核芯片的支持。目前最新版本的J-Link产品为V8,支持JTAG和SWD模式。而且对主要的IDE环境如KEIL、IAR都有良好的支持。优势不少,所以也是首选的调试工具。
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
2、ULINK
通用的ARM JTAG工具ULINK。
ULINK是ARM官方的调试工具,KEIL出品。ULINK也能够支持大多数的ARM芯片,对KEIL的支持很是好,是KEIL的默认调试工具。缺点是由于不支持IAR,影响了ULINK的推广。
ULINK官方提供电路图等资料,属於半开放的,能够自作。目前山寨版的价格比J-Link略高。也低於¥100。
3、OpenJTAG
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-JTAG和J-Link的区别
你调试arm,总要遵循arm的调试接口协议,jtag就是其中的一种吧。当仿真时,iar,keil,ads等等都有一个公共的调试接口,RDI就是其中的一咱,那么咱们如何完成RDI-->arm调试协议(JTAG)的转换呢?如是乎就有两种作法:
在电脑上写一个服务程序,把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-Link及OpenJTAG的比较
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之中的软件有: