栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

为基于Eclipse下的嵌入式Linux开发添加调试功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为基于Eclipse下的嵌入式Linux开发添加调试功能

为基于Eclipse下的嵌入式Linux开发添加调试功能 1.需求概述

以前嵌入式Linux应用开发的主要流程是使用Makefile管理、交叉编译器编译编写好的C代码,目前是直接使用Eclipse创建并管理工程,在编译的一瞬间会生成对应的Makefile,调用交叉编译器生成可执行文件。Eclipse只是个空壳,并不具备编译能力,更不知道目标设备是什么架构,他只知道编译时该给编译器传什么正确的参数,所以对应每个工程都有编译器的前缀和位置需要配置好,又因为这些gcc编译器都遵守GNU,所以Eclipse在编译时传的参数对于不同目标架构的编译器仍然有效。但这只实现了编译,调试的话只能通过printf来判断程序执行到了哪里。参考STM32单片机的CubeIDE,在调试时就可以实现断点功能,其实现思路并不是CubeIDE直接通过USB与ST-Link交互,而是CubeIDE启动GDB客户端程序去连接GDB服务端,而这个GDB服务端也就是ST-Link,J-Link同理。所以若要实现对嵌入式Linux的单步调试,就需要在Eclipse运行GDB客户端,板子上运行GDB服务端,实现远程调试。

2.整理步骤

基于刚才提到的几点,对一会需要做的事情作简要总结:

  • 准备好在ARM Linux上运行的GDB服务端程序
  • 修改当前的交叉编译器
  • 在Eclipse中配置好目标调试设备的地址
2.1 准备好在ARM Linux上运行的GDB服务端程序

GDB服务端程序作为调试其它app的工具,在使用时需要知道自身需要监听的端口号、待调试的app,因此,GDB服务端程序需要和app编译时使用到的GCC编译器版本保持一致,避免出现问题。而目前使用的arm-linux-gnueabihf-gcc的版本为2014.11,里面并没有包含目标板上使用的gdbserver程序,这个程序2014.07版本的交叉编译工具链中有提供,所以最好的解决办法就是将当前的编译器版本统一为2014.07。先来把目标板使用的gdbserver程序拷贝到/usr/bin/路径下,这个是在板子上运行的GDB服务端程序。

2.2 修改当前的交叉编译器

直接解压交叉编译器至原路径,也就是/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux

在已打开的Eclipse工程上右键->属性->C/C++ Build->Builder Type修改为internal

Settings修改当前新的编译器路径

执行Clean后,重新编译即可

2.3 在Eclipse中配置好目标调试设备的地址

为了方便在Eclipse中与开发板连接,可以安装Remote System Explorer插件,其支持SFTP、ssh等通讯协议。依次点击Help->Eclipse Marketplace,搜索remote安装

安装后重启Eclipse,依次点击File->New->Other,选择远程连接,配置好IP用户名密码等信息即可

点击调试虫子按钮旁的倒三角,选择Debug Configuration,在左侧的C/C++ Remote Application下创建新的配置文件,右侧窗格的Main选项卡中配置好远程目标、远程调试路径,Debugger选项卡中配置好gdb客户端程序


开始调试即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号