前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用树莓派构建嵌入式C++调试环境

使用树莓派构建嵌入式C++调试环境

作者头像
面向对象思考
发布2020-03-25 16:51:27
1.7K0
发布2020-03-25 16:51:27
举报

本文以使用树莓派4b为例说明构建嵌入式C++执行环境。树莓派本身可以到各大购物网站直接购买,价格大概300-500元不等。之所有选择树莓派是因为它的系统比较完善,容易上手。但是需要实现说明的是本文说明的大部分内容并不仅限于树莓派。

准备树莓派

下载镜像文件

打开树莓派官方网站的系统镜像下载网页:

代码语言:javascript
复制
https://www.raspberrypi.org/downloads/raspbian/

我们直接选择红框中的最大版本。下载完成之后我们得到以下文件(时间戳可能会不同):

代码语言:javascript
复制
2020-02-05-raspbian-buster-full.zip

将文件解压缩可以得到下面的镜像文件:

代码语言:javascript
复制
2020-02-05-raspbian-buster-full.img

烧写镜像文件

首先选择8G以上的TF卡,最好是Class4以上。然后使用SDCardFormator进行格式化。

启动DiskImager,选择之前下载/解压得到的image文件。

接下来选择设备。由于DiskImager不会自动选择正确的SD卡,因此盘符一定不要弄错。按下[写入]按钮开始写入过程。

写入成功。

软件下载地址

购买树莓派时卖家都已提供的开发资料就应该包含这两款软件,读者也可以使用下面的链接自己下载。

SDCardFormator:

代码语言:javascript
复制
https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip

DiskImageer:

代码语言:javascript
复制
https://mirrors.tuna.tsinghua.edu.cn/osdn/sfnet/w/wi/win32diskimager/Archive/win32diskimager-1.0.0-install.exe

设定基本信息

将烧写完成的TF卡插入树莓派的TF卡槽,接好键盘、鼠标和显示器,启动树莓派。树莓派启动之后,选择国家,地区并修改密码。接下来设定网络链接。如果是有无线路由器也可以使用Wifi连接。更新软件操作可以自由选择,不是必须实施。

点击画面左上角的[树莓]图标,进入[Preferences]-[Raspberry PI Configurations]菜单。进入[Interface]画面选择SSH有效后关闭画面。

进入树莓终端画面,输入ifconfig命令,记录ip地址(例如:192.168.3.233)。如果IP地址获取失败,可以输入以下命令重新设定。

代码语言:javascript
复制
sudo raspi-config

远程链接树莓派

进入Ubuntu主机的终端画面,输入以下命令(地址初始化树莓派时记录的Ip地址):

代码语言:javascript
复制
ssh pi@192.168.3.233

第一次登陆会出现密钥,安全相关的提示,直接接受就好。接下来输入密码之后,看到以下画面就表示登录成功。从此以后的开发,树莓派一侧的所有操作都通过这个终端窗口进行,就不再需要单独的外设了。

除了Ubuntu中使用SSH命令之外,Window下也可以使用Putty等连接树莓派,方法大同小异。

准备C++执行和调试环境

安装NFS服务(Ubuntu开发主机)

在Ubuntu主机上打开终端窗口,输入以下命令以安装NFS服务。这个服务安装完成之后,可以从树莓派上访问通过NFS共享的目录。

代码语言:javascript
复制
sudo apt get install nfs-kernel-server

输入以下命令,编辑NFS配置文件。

代码语言:javascript
复制
sudo vi /etc/exports

在文件最后增加以下内容。其目的是公开/home/xwg/Raspberry中的内容并赋予最大权限。具体可以根据开发环境的位置自行决定。

代码语言:javascript
复制
/home/xwg/RaspberryPi    *(rw,sync,no_root_squash)

配置文件修改、保存完成之后,在终端窗口中输入以下命令启动NFS服务。

代码语言:javascript
复制
sudo /etc/init.d/nfs-kernel-server start

挂接开发目录(树莓派)

启动树莓派SSH客户端,输入以下命令挂接Ubuntu主机分享的NFS目录。

代码语言:javascript
复制
mount -t nfs 192.168.3.202:/home/xwg/EasyARM /mnt -o nolock

命令中IP地址需要替换为Utuntu主机的地址,目录需要和前面分享的目录相同。安装成功之后,可以进入/mnt目录,如果看到的Ubuntu主机分享的内容,就意味在NFS目录挂接成功了。使用这个目录,可以直接访问Ubuntu主机交叉编译的结果,而不必每次都拷贝文件。

找到前一篇文章的创建的arm_cpp项目,进入Debug目录,输入以下命令:

代码语言:javascript
复制
./arm_cpp

终端中应该出现如下的内容:

代码语言:javascript
复制
Hello GCC/G++ Compiler!

远程调试

安装GdbServer

在树莓派终端窗口中输入以下命令安装gdbserver.

代码语言:javascript
复制
sudo apt-get install gdbserver

输入以下命令确认安装结果,如果能过或者正常的版本信息,则表示安装成功。

代码语言:javascript
复制
gdbserver --version

安装gdb-multiarch

在Ubuntu主机的终端窗口中输入以下命令安装多平台版本的gdb.

代码语言:javascript
复制
sudo apt-get install gdb-multiarch

安装完成后通过以下命令确认安装结果:

代码语言:javascript
复制
gdb-multiarch -v

参考信息:

代码语言:javascript
复制
https://packages.ubuntu.com/bionic-updates/amd64/gdb-multiarch/download

Gdb调试和远程调试

通过树莓派终端输入arm_cpp/Debug目录,并输入如下命令:

代码语言:javascript
复制
gdbserver :10000 arm_cpp

莓派终端表示如下:

在Ubuntu主机的终端窗口中输入如下命令,启动gdb-multiarch。

代码语言:javascript
复制
gdb-multiarch

画面表示如下:

输入以下命令链接树莓派侧的GdbServer:

代码语言:javascript
复制
target remote 192.168.3.233:10000

链接成功时,Ubuntu主机的终端画面表示如下:

树莓派侧的终端表示如下:

在gdb画面中输入c命令执行程序。可以在树莓派终端中看到如下输出:

至此树莓派远程调试环境安装完成!


觉得本文有帮助?请分享给更多人。

关注【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备树莓派
    • 下载镜像文件
      • 烧写镜像文件
        • 软件下载地址
      • 设定基本信息
      • 远程链接树莓派
      • 挂接开发目录(树莓派)
      • 远程调试
        • 安装GdbServer
        相关产品与服务
        远程调试
        远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档