建立嵌入式gdb调试环境

一、关于嵌入式gdb调试的介绍
     组成ARM 交叉开发环境的宿主机到目标机的调试通道一般有以下三种:
      1)基于JTAG 的ICD(In-Circuit Debugger)
JTAG 的ICD 也称为JTAG 仿真器,是通过ARM 芯片的JTAG 边界扫描口进行调试的设备。JTAG
仿真器通过ARM 处理器的JTAG 调试接口与目标机通信,通过并口或串口、网口、USB 口与宿主机通
讯。JTAG 仿真器比较便宜,连接比较方便。通过现有的JTAG 边界扫描口与 ARM CPU 核通信,属
于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何应用端口。
      2)Angel 调试监控软件。
Angel 调试监控软件也称为驻留监控软件,是一组运行在目标板上的程序,可以接收宿主机上调试
器发送的命令,执行诸如设置断点、单步执行目标程序、读写存储器、查看或修改寄存器等操作。宿
主机上的调试软件一般通过串行端口、以太网口、并行端口等通讯端口与Angel 调试监控软件进行通
信。与基于JTAG 的调试不同,Angel 调试监控程序需要占用一定的系统资源,如内存、通信端口等。
驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。Angel 调试监
控程序的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,
同时它占用目标板上的一部分资源,如内存、通信端口等。
     下面主要讲解的调试通道gdbserver就是一个驻留监控软件。
      3)在线仿真器ICE(In-Circuit Emulator)。
在线仿真器 ICE 是一种模拟CPU 的设备,在线仿真器使用仿真头完全取代目标板上的CPU,可以
完全仿真ARM 芯片的行为,提供更加深入的调试功能。在和宿主机连接的接口上,在线仿真器也是通
过串行端口或并行端口、网口、USB 口通信。在线仿真器为了能够全速仿真时钟速度很高的ARM 处
理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。在线仿真器通常用在ARM 的硬件
开发中,在软件的开发中较少使用,其价格昂贵,也是在线仿真器难以普及的因素。
二、gdbserver的简介
嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。
调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
1、下载gdb-*.tar.gz源代码
  http://ftp.gnu.org/gnu/gdb/
    在这里我下载的是gdb-7.1.tar.gz。(见附件)
2、解压安装
  (1).编译arm-linux-gdb
   #tar -jxvf gdb-7.1.tar.gz
   #cd gdb-7.1
   #./configure --target=arm-linux --prefix=/usr/local/arm-gdb
   #make
   添加环境变量
   #export PATH=$PATH:/usr/local/arm-gdb/bin
  (2).编译gdbserver
   #cd ./gdb/gdbserver
   #./configure --target=arm-linux --host=arm-linux
   #make
   这样在该目录下生成了gdbserver程序。
3、实战编程调试
  (1).编写一个test.c文件
  (2).#arm-linux-gcc -g -o arm-test test.c
  (3).配置好目标开发板的ip,将arm-test和gdbserver挂载到目标板上
        假设 host  ip:192.168.81.157
               board ip:192.168.81.120
        将arm-test和gdbserver拷贝到主机的/home/tftpmount
        然后在目标板上运行:
        #mount 192.168.81.157:/home/tftpmount /mnt/nfs
        #cd /mnt/nfs
        #ll 查看是否挂载成功
   (4).运行调试
         在目标板端

         #./gdbserver 192.168.81.157:1234 arm-test //目标板上运行arm-test,1234指的是 端口号
         在pc机端

         #arm-linux-gdb arm-test
         (gdb)target remote 192.168.81.120:1234 //连接到开发板
         下面就可以进行调试,记住不能用run来开始运行arm-test,应该用continue。
连接后进行的gdb远程调试和gdb本地调试方法相同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值