---恢復內容開始---
手動編譯
編譯器問題,肯定是GNU的大名鼎鼎的GCC了,與此相關的什么連接器,匯編器也都包含在內了。
針對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/。
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之中的軟件有:
---恢復內容結束---
