手動編譯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之中的軟件有: