嵌入式调试方法——用GDB Server进行远程

嵌入式调试方法

——

GDB Server

进行远程

 

关键字:

  

GDB Server

进行远程调试

 

某些时候由于模拟环境的限制,调试必须要在目标板上进行。由于

嵌入式系统

资源比较有限,一般

不能在目标板上直接构建

GDB

的调试环境,

这时我们通常采用

gdb+gdbserver

的远程调试方法:

gdbserver

在目标板中运行,而

gdb

则在主机上运行。

 

构建

gdb+gdbserver

调试环境的在于,

要将

gdb

gdbserver

都编译成适用于目标板的版本。

比如我

们用

x86

的主机和

ARM

目标板,平时在主机上直接调试的时候都使用用于

x86

调试的

gdb

,但这个

gdb

不能用于远程调试中,

需要针对

ARM

平台进行配置之后重新编译才行;

gdbserver

要运行在目标板上,

则需要用

arm-linux-gcc

编译才行。

 

 

远程调试

 

tcp 

调试方法

 

 

1.

 

代码服务器上的编译安装操作

 

 

我们可以从

http://ftp.gnu.org/gnu/gdb/

 

或其他站点下载

GDB

的源代码来进行编译。得到源代

码包

gdb-6.6.tar

.gz

之后,将

target

配置成

arm-

linux

,然后进行编译:

 

$ tar xzvf gdb-6.6.tar.gz 

$ cd gdb-6.6 

$ ./configure --target=arm-linux 

$ make 

$ make install

 

注意这时我们编译的是用于主机上的

gdb

程序,

因此仍然用

x86

版本的

gcc

编译,

而不是用

arm-gcc

下来

们要

编译

gdbserver

行在

标板

的,

arm-gcc

译了

CC=<your_arm-linux-gcc_path>

来指定

arm-linux-gcc

编译器:

 

$ cd gdb/gdbserver/ 

$ ./configure --target=arm-linux --host=arm-linux 

$ make CC=/opt/toolchain/bin/arm-linux-gcc 

$ make install 

 

下载到目标板

 

 

得到

gdb

gdbserver

之后,将

gdbserver

下载到目标板上就可以进行远程调试了。我们还是以前面

用过的

overflow

程序为例来说明,注意

overflow

程序也需要重新用

arm-linux-gcc

编译得到

ARM

版本的

overflow

程序,并下载到目标板上。

 

完成这些之后可以用

file

命令来检查所准备

gdb

gdbserver

overflow

程序的格式是否正确:

 

$ file arm-linux-gdb 

arm-linux-gdb: 

ELF 

32-bit 

LSB 

executable, 

Intel 

80386

version 

(SYSV), 

for 

GNU/Linux 

2.4.17, dynamically linked (uses shared libs), not stripped 

$ file overflow 

overflow: 

ELF 

32-bit 

LSB 

executable, 

ARM

version 

(SYSV), 

for 

GNU/Linux 

2.4.17, 

dynamically linked (uses shared libs), not stripped 

$ file gdbserver 

gdbserver: 

ELF 

32-bit 

LSB 

executable, 

ARM

version 

(SYSV), 

for 

GNU/Linux 

2.4.17, 

dynamically linked (uses shared libs), not stripped

 

2.

 

联机调试

 

 

注意确保在目标板上运行的

gdbserver

overflow

程序被编译成

ARM

 ELF

格式,而

gdb

由于是运

行在主机上,还是

x86

格式的。

 

gdb

gdbserver

之间可以通过

TCP(

格式为

host:port)

UDP(

格式为

udp: host:port)

或者串口(比如

/dev/ttyb

)来通信,我们以

TCP

方式为例来说明。

 

 

目标板:就是我们用的开发板

 

主机:为我们的开发代码用的服务器

 

 

假设目标板的

IP

192.168.2.1

主机为

192.168.2.100

使用端口

5678

来调试,

首先在目标板上运

gdbserver

 

/*

操作为,开发板子上面的操作

*/ 

# gdbserver 

192.168.2.100

:5678 ./overflow

(注明格式:为

 

gdbserver ip

地址:端口

 

调试

的程序)

 

Process ./overflow created; pid = 618 

Listening on port 5678

 

然后在主机上运行

gdb

,并运行

gdb

命令

“target remote 192.168.2.1:5678”

 

 

 

/*

我们代码服务器上的操作

*/ 

$ arm-linux-gdb ./overflow 

(开发代码用的服务器)

 

GNU gdb 6.6 

Copyright (C) 2006 Free Software Foundation, Inc. 

GDB is free software, covered by the GNU General Public License, and you are 

welcome to change it and/or distribute copies of it under certain conditions. 

Type "show copying" to see the conditions. 

There is absolutely no warranty for GDB. Type "show warranty" for details. 

This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"... 

(gdb) 

target remote 192.168.2.1:5678

 

Remote debugging using 192.168.2.1:5678 

0x28556080 in ??() 

(gdb)

 

接下来你就可以象前面所介绍的那样使用

gdb

命令了,比如设置断点及查看变量单步执行等。

 

 

3.

 

服务器上的调试动作(和

gdb 

调试相同了)

 

以下是一个项目情况: ### **项目概况** - **项目名称**:基于嵌入式系统的通用设备监控终端开发 ### **项目背景** - **问题**:高校实验设备管理效率低,设备使用信息无法及时采集,影响实验教学质量。 - **解决方案**:基于 **STM32MP157 微处理器** 和 **Linux 系统**,开发通用设备监控终端及配套服务器软件,实现设备控制、使用统计与安全管理。 - **应用场景**:实验教学设备管理。 --- ### **市场价值** 1. **教育市场**:为工程类课程提供嵌入式实验平台,提升学生实践能力。 2. **研发市场**:支持工业领域和研究机构验证监控算法、测试设备性能。 3. **实验设备供应市场**:作为教学与研发设备,满足灵活性和可扩展性需求。 --- ### **项目简介** - **核心功能**: - 设备开机控制、使用时段管理、用户信息获取、使用统计(时长/类别)、安全测试与提示。 - **技术基础**: - 团队掌握电路知识、C++编程、MSP430开发经验;指导老师曾完成相关仿真系统项目。 --- ### **研究内容** - **硬件端**: - 基于 STM32MP157 设计供电电路、接口电路(USB/UART)、无线通信电路、触摸屏驱动电路。 - **软件端**: - **终端程序**:用户登录、数据采集、安全测试。 - **服务器软件**:数据存储、统计分析(使用率、时长等)。 --- ### **研究方案** - **硬件设计**:PCB 制作、电路功能测试、STM32 编程实现数据处理。 - **软件开发**:通信协议设计、用户界面优化、终端与服务器联调测试。 - **总体流程**:硬件开发 → 软件实现 → 系统集成 → 性能测试。 --- ### **预期成果** 1. 申请专利与软件著作权。 2. 撰写并发表论文。 3. 开发成品:通用监控终端硬件及配套服务器软件。 --- ### **创新特色** 1. **通用性**:适配多类型实验设备,扩展性强。 2. **综合功能**:集成设备控制、统计分析与安全管理。 3. **技术融合**:硬件与软件结合,支持远程控制与用户友好界面。 4. **安全性**:实时环境检测与异常提示。 ——我刚刚完成Linux系统的安装,该怎么进行相应代码的编写?
最新发布
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值