5.Eclipse集成开发环境
Eclipse集成开发环境不仅可以编译裸机工程,还可以调试整个裸机工程,这样当程序异常的时候,可以更加有效的进行修改。接下来就是搭建整个eclipse集成环境:这个调试环境的框架如下图1-1:
图1-1
从上面的框架图看到,要实现eclipse在线调试裸机程序,需要安装的软件是eclipse+CDT、JLink驱动、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
今天的笔记到此了。明天继续。