5.Eclipse集成开发环境

5.Eclipse集成开发环境

Eclipse集成开发环境不仅可以编译裸机工程,还可以调试整个裸机工程,这样当程序异常的时候,可以更加有效的进行修改。接下来就是搭建整个eclipse集成环境:这个调试环境的框架如下图1-1:

图1-1

从上面的框架图看到,要实现eclipse在线调试裸机程序,需要安装的软件是eclipse+CDTJLink驱动GDB调试软件,需要连接的硬件是JLink连接pc机和开发板

注意:为了避免干扰,最好对NandFlash进行格式化:图1-2:

然后选择y:

图1-2

格式化NandFlash不是必须的,只是为了更好确定因素。上面是格式化的过程。格式好了之后重新设置开发板从NandFlash启动。

安装GDB Server:

在配套资料的ARM-Tools文件夹里有GDB软件:图1-3:

图1-3

arm-linux-gdb:

1.解压命令:

tar -zxvf arm-linux-gdb-7.5.tar.gz,然后进入该文件夹,执行build-all:./build-all进行安装:图1-4:

图1-4

可以打开刚才运行的sh脚本看看做了哪些工作:图1-5:

#/bin/sh

 

rm -fr gdb-7.5

rm -r /opt/arm-linux-gdb/

 

tar xvzf gdb-7.5.tar.gz

cd gdb-7.5

 

./configure --target=arm-linux --prefix=/opt/arm-linux-gdb/ -v

 

make && make install

 

cd /opt/arm-linux-gdb/

图1-5

该脚本的功能是首先强制删掉当前目录gdb-7.5,删掉/opt/arm-linux-gdb/文件夹。确保环境里没有干扰因素。然后解压当前目录里的gdb-7.5.tar.gz。然后进入解压生成的文件夹gdb-7.5。接着进行gdb配置,执行./configure --target=arm-linux --prefix=/opt/arm-linux-gdb/ -v产生Makefile。接着就是执行make进行编译,最后执行make install进行安装。安装好了之后切换到arm-linux-gdb的目录。

 

解压安装完成之后,会在/opt/的目录下生成GDB的安装文件,在该文件夹的bin文件夹里的arm-linux-gdb就是调试工具:图1-6:

图1-6

上面完成了arm-linux-gdb的安装,还需要对该工具进行环境变量的配置,才方便使用。打开/etc/profile配置文件:vim /etc/profile。在最后arm-linux-gcc环境的配置的前面加上:

export PATH=$PATH:/opt/arm-linux-gdb/bin。注意必须是在arm-linux-gcc的前面配置。这是因为工具链里面也有arm-linux-gdb工具。为了确保使用的是现在安装的arm-linux-gdb。图1-7:

该版本是6.8的:

图1-7

测试一下安装是否成功:在命令行执行:arm-linux-gdb,看到刚才安装的gdb是7.5版本的。图1-8:

图1-8

 

安装JLink软件:

先解压:tar -zxvf JLink_Linux_V434a.tgz。图1-9:

图1-9

 

 

解压完成时候进入该文件夹:图1-10:

图1-10

接下来就是把对应的文件拷贝到对应的文件夹。相当于安装:图1-11:

图1-11

由于我前面已经装了一次,所以直接覆盖即可。这样就安装好了JLink了。从前面知道,当安装好了JLink之后,就可以来连接开发板了。下面进行测试。

 

首先是给开发板上电,图2-1:

图2-1

 

 

 

 

给开发板上电后,把JLink接到开发板的JLink接口:图2-2:

图2-2

这样硬件就连接好了。接下来就是把JLink从windows 7拉到虚拟机:

在vbox虚拟机的右下角的usb口里找到JLink,把它从windows拉到虚拟机:图2-3:

图2-3

然后运行一下JLinkGDBServer,看看能够检测到内核:图2-4:

图2-4

上面看到JLink成功连接了开发板,检测到了内核ARM11.

 

 

 

 

安装eclipse:

所谓的安装就是解压:tar -zxvf eclipse-cpp-helios-SR2-linux-gtk.tar.gz -C /usr/local/。完成如下图2-5:

图2-5

解压完成后就是等于安装完成。接下来运行eclipse,第一次运行的时候会出现指定默认工程路径的选项,我选的是是:图2-6:

cd /usr/local/eclipse

[root@FORFISH eclipse]# ./eclipse

图2-6

当然在上面中你也可以选择你要保存工程的目录。然后点击OK即可。这样就启动了eclipse:图2-7:

图2-7

这要eclipse就安装好了。这只是简单的安装好了。为了eclipse能够协调JLink,arm-linux-gdb等工具来方便裸机开发工作。必须安装一个插件。所以需要虚拟机电脑可以连接网络。

 

安装插件CDT:

打开eclipse后,选择工具栏的Help,在下拉菜单选择Install New Software:会出现Install窗口。图2-8:

图2-8

 

然后在Work with框里输入插件的位置:http://opensource.zylin.com/zylincdt。输入完成之后回车,会看到要下载的插件:图2-9:

图2-9

然后选中插件点击Next:图2-10:

图2-10

 

再点击Next:图2-11:

图2-11

接着选中我接受协议,然后点击Finish,就进行安装了:图2-12:

图2-12

 

 

 

安装图2-13:

图2-13

安装好了执行需要重启:图2-14,选择Restart Now。

图2-14

这样就安装好了插件。

 

 

 

 

 

 

 

 

 

 

 

 

 

Eclipse裸机调试:

测试eclipse裸机调试的代码在:/home/samba/OK6410_bare,所以直接导入eclipse即可。选择eclipse的工具栏File->New->Makefile Project with Existing Code.图3-1:

图3-1

在新打开的窗口里选择Browse,找到已经存在工程的目录:然后点右下角的OK:图3-2:

图3-2

回到原来的界面,点击Finish即可:图3-3:

图3-3

这样就把一个工程导入到了eclipse里面。图3-4:

图3-4

 

 

上面成功导入一个工程。

接下来就是编译了:

编译也很简单,用鼠标,选择该工程名字,右键,然后选择Build project,进行编译:图3-5:

图3-5

其实eclipse的编译是调用了工程里面的Makefile文件。

上面就编译好了,接下来就是利用刚刚安装的CDT插件来调试该工程。调试之前需要配置一下调试参数。

参数设置:

首先是点击eclipse的工具栏下面有一个像虫子的图标:点击它的下拉箭头之后会看见选项,选择Debug Configurations。图3-6:

图3-6

点击之后会出现下面的界面:图3-7:

图3-7

然后双击Zylin Embedded debug (Native),会生成一个默认的调试配置,名字是OK6410_bare Default,会出现下面的窗口。图3-8:

图3-8

然后在C/C++ Application里选择Browse,找到要调试的过程,然后选择过程里的elf文件。点击OK图3-9:

图3-9

然后切换到Debugger选项窗口。把默认停在main函数的选项去掉。把GDB debugger改为:arm-linux-gdb:图3-10:

改后:

图3-10

 

无论调试那一款开发板,在裸机调试之前都必须会开发板进行初始化,这里,初始化的命令,我使用的是飞凌标配的OK6410的,它的名字叫init-6410:图3-11:

图3-11

Init-6410的内容:

# tiny6410_config

# connect to the J-Link gdb server

target remote localhost:2331

# Set JTAG speed to 30 kHz

monitor endian little

monitor speed 30

# Reset the target

monitor reset

monitor sleep 10

#

# CPU core initialization (to be done by user)

#

# Set the processor mode

monitor reg cpsr = 0xd3

#config MMU

#flush v3/v4 cache

monitor cp15 7, 7, 0, 0 = 0x0

#/* flush v4 TLB */

monitor cp15 8, 7, 0, 0 = 0x0

#disable MMU stuff and caches

monitor cp15 1, 0, 0, 0 =0x1002

#Peri port setup

monitor cp15 15, 2, 0, 4 = 0x70000013

#disable watchdog

monitor MemU32 0x7e004000 = 0x00000000

monitor sleep 10

#disable interrupt

monitor MemU32 0x71200014 = 0x00000000

monitor MemU32 0x71300014 = 0x00000000

monitor MemU32 0x7120000C = 0x00000000

monitor MemU32 0x7130000C = 0x00000000

monitor MemU32 0x71200F00 = 0x00000000

monitor MemU32 0x71300F00 = 0x00000000

#set clock

monitor MemU32 0x7e00f900 = 0x0000801e

monitor MemU32 0x7e00f000 = 0x0000ffff

monitor MemU32 0x7e00f004 = 0x0000ffff

monitor MemU32 0x7e00f020 = 0x01043310

monitor MemU32 0x7e00f00C = 0xc2150601

monitor MemU32 0x7e00f010 = 0xc2150601

monitor MemU32 0x7e00f024 = 0x00000003

monitor MemU32 0x7e00f014 = 0x00200102

monitor MemU32 0x7e00f018 = 0x00000000

monitor MemU32 0x7e00f01C = 0x14000007

#config sdram

monitor MemU32 0x7e00f120 = 0x00000008

monitor MemU32 0x7e001004 = 0x00000004

monitor MemU32 0x7e001010 = 0x0000040f

monitor MemU32 0x7e001014 = 0x00000006

monitor MemU32 0x7e001018 = 0x00000001

monitor MemU32 0x7e00101c = 0x00000002

monitor MemU32 0x7e001020 = 0x00000006

monitor MemU32 0x7e001024 = 0x0000000a

monitor MemU32 0x7e001028 = 0x0000000c

monitor MemU32 0x7e00102c = 0x0000018f

monitor MemU32 0x7e001030 = 0x0000000c

monitor MemU32 0x7e001034 = 0x00000002

monitor MemU32 0x7e001038 = 0x00000002

monitor MemU32 0x7e00103c = 0x00000002

monitor MemU32 0x7e001040 = 0x00000002

monitor MemU32 0x7e001044 = 0x00000013

monitor MemU32 0x7e001048 = 0x00000013

monitor MemU32 0x7e00100C = 0x00010012

monitor MemU32 0x7e00104C = 0x00000b45

monitor MemU32 0x7e001200 = 0x000150f8

monitor MemU32 0x7e001304 = 0x00000000

monitor MemU32 0x7e001008 = 0x000c0000

monitor MemU32 0x7e001008 = 0x00000000

monitor MemU32 0x7e001008 = 0x00040000

monitor MemU32 0x7e001008 = 0x00040000

monitor MemU32 0x7e001008 = 0x000a0000

monitor MemU32 0x7e001008 = 0x00080032

monitor MemU32 0x7e001004 = 0x00000000

# Setup GDB for faster downloads

#set remote memory-write-packet-size 1024

set remote memory-write-packet-size 4096

set remote memory-write-packet-size fixed

monitor speed 12000

break _start

load

把这些内容拷贝到Commands窗口里,然后点击Apply,再点击Close关闭窗口:图3-12:

图3-12

到这里才配置好了整个工程的工作。呼呼……接下来运行一下。

 

在启动调试之前,确保JLInk成功连接开发板:图4-1:

图4-1

然后再次点击:Debug Configuretions:图4-2。

图4-2

双击配置工程的名字:OK6410_bare Defunct:如果裸机调试启动成功的话,eclipse会自动跳转到Debug模式:图4-3:

图4-3

第一次界面有点乱,可以自己调整:调整后的界面:图4-4:

图4-4

可以看见界面下面红黑交替的就是在Conmands配置的,初始化板子的硬件平台的。接下来就可以真正地进行裸机单步调试了。

 

 

调试:

在菜单栏的Run里有各种调试命令:图5-1:

图5-1

可以看到单步调试可以按F5(进入函数调试),F6(不进入函数)等。

按下F5:进入reset函数,图5-2:

在按F5,进入set_svc函数:图5-3:

图5-3

在运行的过程中,可以查看寄存器,参数等信息的变化:图5-4:

图5-4

转化为16进制的:选中要转换的参数,右键,选择Format->Hexadecimal.图5-5:

图5-5

上面就实现了eclipse裸机调试工程了。当完成调试之后,不要直接关掉eclipse,先关掉调试,红色方块。因为这样,当你需要在再次调试的时候,直接选择调试图标,再选择调试工程即可:图5-6:

图5-6

点击上面的调试工程名就可以实现调试了。不用才去配置。到这里,一个简单的工程的调试操作完成了。看是一个简单的过程,做个笔记也做了半天。菜鸟加油。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来就是试一试直接点击调试里的工程名:正确启动图6-1:

图6-1

接下来试着跳转到light_led函数去点灯:图6-2:

这一次为了看到效果,把mov r0,#0xe改为mov r0,#0x3.

还没运行这一句之前:

图6-2

运行之后:

图6-3

 

记得退出按:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后就是,eclipse快捷方式的创建,因为前面老是要经过命令行去启动eclipse,有点烦:创建的过程如下:图6-4:

图6-4

如上,鼠标右键,选择Create Launcher..,会出现:图6-5:

图6-5

填写好信息,在Command的Browse里选择你自己的eclipse可执行文件:图6-6:

图6-6

然后点击Open,得到下图6-5:

图6-5

最后点击OK,这样在桌面就多了一个图标,这就是eclipse的快捷方式。直接双击就可以打开eclipse软件:图6-6:

图6-6

今天的笔记到此了。明天继续。

posted @ 2016-02-14 09:47  cestlavie  阅读(617)  评论(0编辑  收藏  举报