纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

来源:互联网 发布:家装vr软件 编辑:程序博客网 时间:2024/06/05 09:54

原文地址:http://blog.csdn.net/jlbo2004/article/details/5859133

说明:我也是调试u-boot,在win下OK了,基于这里,然后为了完全在linux下便有了下边转载的内容。下文会对照我自己的操作进行结果补充!感觉补充的多于转载的就改为原创了,让更多人看到!


    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去。以前都是windows+AXD调试。包括本人用的FL2440开发板和JLink调试器也没有提供在linux调试的文档。前些天由于想研究下U-BOOT的源代码,不得不在linux下编译,就google到了众多大牛的帖子,且找到了JLink的官方linux版。综合各位大牛的经验,最终成功的在纯linux环境下调试了U-BOOT和裸机程序。感谢各位前辈的帖子,很遗憾很多我已经找不到原帖地址了。

    笔者的安装环境:

        飞凌的FL2440开发板

        JLink V8调试器

        Ubuntu 10.04

 

    搭建ARM调试环境的大概步骤:

        0)串口通讯的配置

 

        1)JLink V8 Linux驱动的安装

        2)交叉工具链的安装

        3) gdb初始化脚本的编写

        4) 启动JLink和gdbServer调试

 

0)串口通讯的配置

    这个网上都有,我不多说了。用于开发板和宿主机通讯。

1)JLink V8 Linux驱动的安装

    去官网    http://www.segger.com/cms/jlink-software.html

    下面有个Beta software version for Linux 版本下载

    点击下载,弹出页面要序列号,可以乱输。下到JLink_Linux_V422.tgz压缩包。解压之。

    可以参考压缩包内的README文件进行配置。

    安装依赖usb库

    apt-get -update

    apt-get -install libusb

 

 

    cp libjlinkarm.so.* /usr/lib

 

    - Place the rule file "45-jlink.rules" provided with this J-Link software package

  at /etc/udev/rules.d/

     ./start 就可以运行JLink了。

    连接JLink和开发板后,可以使用help或?查看帮助。loadbin命令加载二进制代码到内存了。

//kangear补充: 


root@kangear:~/JLink_Linux_V462a# apt-get update   //没有“-”

root@kangear:~/JLink_Linux_V462a#apt-get install libusb //没有“-”  且没有这个库!
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
E: 无法定位软件包 libusb
root@kangear:~/JLink_Linux_V462a# ls

root@kangear:~/JLink_Linux_V462a#./StartJLinkExe.sh  //没有start 
SEGGER J-Link Commander V4.62a ('?' for help)
Compiled Feb  6 2013 11:42:45
Updating firmware:  J-Link ARM V8 compiled Nov 14 2012 22:34:52  //且运行之后会自动升级固件(之后就不能用了jlink 解决方法见这里)
Replacing firmware: J-Link ARM V8 compiled Aug 24 2011 17:23:32
^C
root@kangear:~/JLink_Linux_V462a# ^C

此时重烧了固件,根据这里的解决方法,就下载jlink_linux_v422a.tgz(下载地址这里)这个版本的重新做一遍OK了。打印信息如下:

root@kangear:~/JLink_Linux_V462a/JLink_Linux_V422a# ./start 
SEGGER J-Link Commander V4.22 ('?' for help)
Compiled Apr  5 2011 13:54:55
DLL version V4.22, compiled Apr  5 2011 13:54:52
Firmware: J-Link ARM V8 compiled Jan 31 2011 18:34:52
Hardware: V8.00
S/N: 20100213 
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFULL 
VTarget = 0.000V
J-Link>

//kangear补充:End

    基本上这样就可以完成一些调试工作了,但是要做到源码级别的调试,还要用的GDB了。

    具体有点忘了。

    可能要重建软连接可以参考:http://eminem112.blog.163.com/blog/static/62815953201092513943796/

    (以下摘自上面链接)4:修改一些配置

        cd Jlink
        ln -s libjlinkarm.so.0.0 libjlinkarm.so.0
        ln -s libjlinkarm.so.0.0  libjlinkarm.so
        5:复制相关库到用户库中
        复制45-jlink.rules到/etc/udev/rules.d/
        mv libjlinkarm.so.0.0  /usr/lib/
        mv libjlinkarm.so.0    /usr/lib/
        mv libjlinkarm.so      /usr/lib/
        6:执行./start
        如果出现
libreadline.so.5 not found,可以查看/lib/下的有可能有libreadline.so.6 ,可以做一个软链接

 

        ln -s /lib/libreadline.so.6 libreadline.so.5

 

2)交叉工具链的安装

    我安装的是U-BOOT官网提供的ELDK4.2

    http://www.denx.de/wiki/view/DULG/ELDKAvailability

    下到一个IOS文件。挂载,参照官网上ELDK的文档安装之。设置好环境变量。

3)gdb初始化脚本的编写

    参考gdb的文档,JLinkGdbServer的文档。

    可知,在调试之前,必须先进行板子的初始化。才能进行之后的调试。

    参考这位牛人的GDB脚本,顺利完成了S3C2440初始化。http://blogold.chinaunix.net/u3/97851/showart_2291292.html

 

最后感谢这些牛人的无私奉献。自己写文档才发现,真累!



原创粉丝点击