標籤:windows arm eclipse 編譯器 調試
Windows環境下可以使用Eclipse IDE for C/C++ Developers來搭建ARM開發環境
安裝步驟如下:
1. 安裝Java SE
網址:http://www.oracle.com/technetwork/java/javase/downloads/jre-7u3-download-1501631.html
下載這個檔案:jre-7u3-windows-i586.exe
2. 安裝Eclipse IDE for C/C++ Developers
網址:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliossr2
下載這個檔案:eclipse-cpp-helios-SR2-win32.zip 下載後解壓到相應目錄,不需安裝,發送個捷徑到案頭即可。
3. 安裝Eclipse下開發ARM的外掛程式
網址:http://sourceforge.net/projects/gnuarmeclipse/files/Current Releases/0.5.3/
下載這個檔案:org.eclipse.cdt.cross.arm.gnu_0.5.3.201007311800.zip
下載後解壓,把plugins/org.eclipse.cdt.cross.arm.gnu_0.5.3.201007311800.jar檔案放入Eclipse安裝目錄下的plugins目錄裡。
4. 安裝arm-none-eabi-gcc編譯器
網址:http://www.yagarto.de/download/yagarto/yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.html
請不要安裝在路徑有空格的目錄!
下載並安裝這個檔案:yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe
網址:http://www.yagarto.de/download/yagarto/yagarto-tools-20100703-setup.exe
下載並安裝這個檔案:yagarto-tools-20100703-setup.exe
原文地址:http://blog.sina.com.cn/s/blog_6c234ba901012zqm.html
使用方法如下:
1.指定一個工程存放目錄
Eclipse for ARM 是一個標準的視窗應用程式,可以單擊程式按鈕開始運行。開啟後必須先指定一個工程存放路徑,5-11所示。
2.建立一個工程
進入主介面後,選擇"File→New→C Project"命令,Eclipse將開啟一個標準對話方塊,輸入希望建立工程的名字並單擊"Finish"按鈕即可建立一個新的工程,建議對每個建立工程使用獨立的檔案夾。
3.建立一個MakeFile檔案
在建立一個新的工程後,選擇"File→New→Other"命令,在彈出的對話方塊中的General下單擊file,然後單擊next;然後選擇所要指定的工程後,在檔案名稱文字框中輸入檔案名稱MakeFile,單擊"Finish"按鈕。
4.建立一個指令檔
選擇"File →New→Other"命令,在彈出的對話方塊中的General下單擊file,然後單擊next;然後選擇所要指定的工程後,在檔案名稱文字框中輸入檔案名稱s5pc100.init,單擊"Finish"按鈕。
5.建立一個串連指令檔
選擇"File→New→Other"命令,在彈出的對話方塊中的General下單擊file ,然後單擊next;然後選擇所要指定的工程後,在檔案名稱文字框中輸入檔案名稱map.lds,單擊"Finish"按鈕。
6.建立一個彙編源檔案
選擇"File →New→Other"命令,在彈出的對話方塊中的General下單擊file ,然後單擊next;然後選擇所要指定的工程後,在檔案名稱文字框中輸入檔案名稱start.s,單擊"Finish"按鈕。
5.4 編譯工程
(1)在彙編源檔案(start.s)中輸入彙編代碼:
.equ GPG3CON, 0xE03001C0
.equ GPG3DAT, 0xE03001C4
.globl _start
_start:
LDR R0,=GPG3CON
LDR R1,=0X10
STR R1,[R0] @//寫控制寄存器,IO引腳使能為輸出
LOOP:
LDR R0,=GPG3DAT
MOV R1,#0X02 @//點亮led1
STR R1,[R0]
LDR R2,=0XFFFFF @//延時
LOOP1:
SUB R2,R2,#1
CMP R2,#0
BNE LOOP1
MOV R1,#0X0 @//熄滅led1
STR R1,[R0]
LDR R2,=0XFFFFF @//延時
LOOP2:
SUB R2,R2,#1
CMP R2,#0
BNE LOOP2
B LOOP
.end
(2)在map.lds中輸入如下資訊:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x34000;
. = ALIGN(4);
.text :
{
start.o(.text)
*(.text)
}
. = ALIGN(4);
.rodata :
{ *(.rodata) }
. = ALIGN(4);
.data :
{ *(.data) }
. = ALIGN(4);
.bss :
{ *(.bss) }
}
(3)編寫MakeFile檔案編譯規則,在MakeFile中輸入如下資訊:
all:start.s
arm-none-eabi-gcc-4.6.2 -O0 -g -c -o start.o start.s
arm-none-eabi-ld start.o -Tmap.lds -o start.elf
arm-none-eabi-objcopy -O binary -S start.elf start.bin
arm-none-eabi-objdump -D start.elf >start.dis
(4)在s5pc100.init檔案中輸入如下資訊:
target remote 127.0.0.1:3333
monitor halt
monitor arm mcr 15 0 1 0 0 0
monitor step 0
(5)儲存,編譯Project→Bulit All。
5.5 調試工程
5.5.1 配置FS-JTAG 調試工具
5-12所示,在Target選項中選擇s5pc100,然後在WorkDir 選項中選擇自己的工程目錄(D:\program\led),這裡是筆者的當前環境,請讀者按照自己的實際環境進行填寫。
上述工作做完之後,單擊Connect按鈕後,該按鈕會變為Disconnect,5-12所示,即表示已經串連目標板。最後單擊Telnet按鈕(這一步可以跳過),將會彈出5-13所示,介面即表示已經連上目標板。
5.5.2 配置調試工具(1)
在Eclips的菜單中選擇"Run→Debug Configurations"彈出5-14對話方塊。
選擇Zyin Embedded debug(Native)選項,然後單擊滑鼠右鍵,在彈出的捷徑功能表中選擇"New"命令;在Main選項卡中的Project框中,單擊"Browse"按鈕選擇led工程;在C/C++ Application 中單擊"Browse"按鈕找到工程目錄下的led.elf檔案,5-15所示。
在Debugger選項卡中的Main子選項卡中的GDB debugger的框中單擊"Browse"按鈕選擇前面安裝的arm-none-eabi-gdb.exe(這裡選擇自己的安裝目錄),在GDB Command file中選擇自己工程目錄下的s5pc100.init檔案,5-16所示。
在Command選項卡中輸入如下內容,5-17所示。
load
break _start
c
5.5.2 配置調試工具(2)
單擊"Apply"按鈕後,再單擊"Debug"按鈕開始調試運行,會出現調試主介面,5-18所示。
程式會在斷點處停下,然後使用單步和全速等工具進行調試運行程式,單擊全速運行,會出現LED1閃亮。
可以看出一個大概的調試介面,5-19所示的按鈕是和調試有關的,有單步,step over和step in方式。還有Eclipse內建的掛起、中斷串連功能。下面簡單介紹一下各個視窗的用途。
5-20所示視窗是用來查看函數變數的,可以看到當前i,j的值。
5-21所示視窗是用來查看ARM寄存器的,從r0~r12通用寄存器的值可以被很清楚的觀察到,並且還可觀察到 CPSR目前狀態寄存器的值。
5.6 本章小結
本章主要介紹了如何編寫GNU-ARM彙編風格的程式,以及如何基於S5PC100在Eclipse下進行調試,並且介紹了FS-JTAG的詳細用法。本書後面章節的大部分實驗都是基於這個環境的。工欲善其事,必先利其器,所以必須熟練掌握環境的使用。
原文地址:http://book.51cto.com/art/201210/359534.htm