本文用到的jlink插件在这里
http://download.csdn.net/detail/king_bingge/5879179
两个先决条件:
1、已经成功安装eclipse,考虑到版本兼容问题,不适用redhat6自带的eclipse。如何安装,之前的博文已有提及,不再赘述;
2、已经成功,安装arm-linux-gdb调试工具,之前的博文也已经安装完成。
接下来开始搭建调试环境
考虑到有时候程序出现bug在所难免,所以我们不得不对程序进行调试,为了更加方便的开发,我们统一使用在linux环境下面对程序进行调试。
一、硬件连接
1、OK6410目标板电源线、JTAG线、串口线分别接好;
2、开启虚拟机后,将右下角的usb口、串口 connect上;
3、将开发板设置为SD启动,然后利用我们SD卡中的mmc引导程序对nand flash进行擦除;
4、将开发板设置为nand flash启动。
第一部分到此完毕。
二、jlink软件安装
1、执行命令 tar zxvf JLink_Linux_V434a.tgz 并且进入该目录;
2、然后执行命令 cp -d libjlinkarm.so.4* /usr/lib -f 将库复制到lib里面,如下图示:
3、最后执行 ./JLinkGDBServer 此时会出现正常连接上jlink的提示,并且会显示ID和ARM11的字样。
到这里JLINK这部分完毕,注意要始终保持jlink连接,方便后续调试。
4、安装插件(这一步很关键啊)
启动eclipse,进入下面的界面
进入之后一次按下面的顺序,进行设置
最后finish,注意这一步必须要求虚拟机能够上网啊,这个必须保证了。安装插件是在线安装的。
三、eclipse工具配置
1、启动eclipse,进入下面的界面
2、建好工程后,会出现下面的界面:
3、工程建立完毕,接下来就是配置了,上图
4、然后进入配置界面依次按照图示顺序
A 双击红色字体‘1’然后会出来LED Default选项
B 点击红色字体‘2’然后在右边进行设置
C 在下面一个browse那里选择你要调试的文件,记住一定是elf格式的
D 将Debugger下面的 GDB debugger 改为 arm-linux-gdb
E command里面的‘initial’command 就要输入我们的初始化目标板的代码了,我是OK6410的代码如下
# 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
配置完成后选择debug。
最后,在桌面上创建一个软链接吧! ln -s /opt/eclipse/eclipse /home/xiaobing/Desktop
四、进行调试
接下来就可以进行调试了,接下来大家就尽情发挥吧~~~ 有不懂的可以详谈。。。。