Windows环境下ARM集成开发环境的搭建与使用
时间:2014-06-15 18:03:31
收藏:0
阅读:642
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)
选择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-20所示窗口是用来查看函数变量的,可以看到当前i,j的值。
如图5-21所示窗口是用来查看ARM寄存器的,从r0~r12通用寄存器的值可以被很清楚的观察到,并且还可观察到 CPSR当前状态寄存器的值。
5.6 本章小结
安装步骤如下:
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
评论(0)