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
今天的笔记到此了。明天继续。
原文链接: https://www.cnblogs.com/FORFISH/p/5188684.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/228644
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!