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

准备树莓派

下载镜像文件

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

https://www.raspberrypi.org/downloads/raspbian/

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

2020-02-05-raspbian-buster-full.zip

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

2020-02-05-raspbian-buster-full.img

烧写镜像文件

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

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

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

写入成功。

软件下载地址

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

SDCardFormator:

https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip

DiskImageer:

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地址获取失败,可以输入以下命令重新设定。

sudo raspi-config
远程链接树莓派

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

ssh pi@192.168.3.233

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

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

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

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

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

sudo apt get install nfs-kernel-server
输入以下命令,编辑NFS配置文件。
sudo vi /etc/exports

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

/home/xwg/RaspberryPi    *(rw,sync,no_root_squash)

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

sudo /etc/init.d/nfs-kernel-server start

挂接开发目录(树莓派)

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

mount -t nfs 192.168.3.202:/home/xwg/EasyARM /mnt -o nolock

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

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

./arm_cpp

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

Hello GCC/G++ Compiler!

远程调试

安装GdbServer

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

sudo apt-get install gdbserver

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

gdbserver --version

安装gdb-multiarch

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

sudo apt-get install gdb-multiarch

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

gdb-multiarch -v

参考信息:

https://packages.ubuntu.com/bionic-updates/amd64/gdb-multiarch/download

Gdb调试和远程调试

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

gdbserver :10000 arm_cpp

莓派终端表示如下:

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

gdb-multiarch

画面表示如下:

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

target remote 192.168.3.233:10000

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

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

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

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


觉得本文有帮助?欢迎点赞并分享给更多的人。

更新文章,请关注微信公众号【面向对象思考】

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

  1. 构建嵌入式系统软件开发环境-VMware的安装及搭建嵌入式Linux开发环境

    嵌入式系统操作系统 目前流行的嵌入式操作系统主要有VxWorks.WindowsCE.Linux等,由于Linux的源码开放性.内核可裁剪性.在图像处理.文件管理及多任务支持等诸多方面的特点,使得它成 ...

  2. Linux(Ubuntu)下嵌入式gdb调试环境

    系统原理课实验要做CMU的Bomblab实验,然而bombg文件在arm架构,因此要配置一个交叉编译/调试环境,曾测试在Ubuntu 15.04下直接安装arm-none-eabi-gdb,然而调试时 ...

  3. 嵌入式系统开发与应用——嵌入式 Linux 调试环境搭建

    附录:UBoot常用命令手册 一. 实验目的 1.掌握VMware中设置共享文件夹的方法,为后续实验做准备: 2.熟悉 Linux TFTP 配置,为后续 Linux 底层开发做准备(后面会用 tft ...

  4. vscode php调试插件,构建VSCode开发调试环境(强大且实用的插件推荐)

    随着VSCode的不断完善和强大,是时候将部分开发迁移到VS Code中了. 目前使用VS2019开发.NET Core应用,一直有一个想法,在VS Code中复刻VS的开发环境,同时迁移到VS Co ...

  5. linux嵌入式gdb调试指南,建立嵌入式gdb调试环境

    一.下载gdb-6.4.tar.gz源代码 http://ftp.gnu.org/gnu/gdb/ 二.编译 GDB #tar zxvf gdb-6.4.tar.gz 2.1.编译GDB Server ...

  6. 数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux)

    数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux) 构建cube的三个维度,查询三家店七天四物的销 ...

  7. OpenRisc-58-ORPSoC调试环境的构建

    引言 之前我们在PC上构建了ORPSoC的仿真环境,通过仿真环境,我们可以观察任何模块的工作波形,极大的方便了问题定位和错误分析.但是,"是骡子是马,拉出来溜溜",只能看看仿真波形 ...

  8. 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建

    保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...

  9. vs如何运行php文件,vscode+phpstudy2018构建php调试环境

    由于vs code开源和跨平台,而且插件很多,所以打算以后编写和调试php都用vs code. 配置vs code+phpstudy的php调试环境步骤如下: 1.配置phpstudy,其他选项菜单- ...

最新文章

  1. C#实现HttpPost提交文件
  2. UML科普文,一篇文章掌握14种UML图
  3. 业务逻辑写在存储过程好还是后端好_后端两小时,前端一星期!你只是一个写接口的工程师吗?...
  4. Ehab and Path-etic MEXs CodeForces - 1325C(思维+贪心)
  5. ZF2系列 – Zend Framework 2 MVC實作 (Part 3)
  6. 阿里云云原生一体化数仓正式发布 助力企业数据驱动业务创新
  7. Linux系统编程8-18总结项目:完成一个简单的自己的shell
  8. java所定义的版本中不包括_JAVA语言基础题、 求做完
  9. 【kafka】kafka 时间轮 TimingWheel
  10. java stream byte_乐字节-Java8新特性之Stream流(上)
  11. 问题007:JDK版本与JRE版本不同导致java.exe执行类文件错误 java.lang.UnsupportedClassVersionError错误...
  12. javabean 是什么?
  13. Oracle 临时表、数据闪回、系统常用表、及常用操作
  14. python离线_python 离线一个网站
  15. java socket网络编程
  16. python tkinter应用:文本编辑器
  17. 老毛子固件二级路由实现ipv6上网
  18. 试题 基础练习 字母图形 java代码
  19. 2021厦门LED照明产业展览会
  20. python编写简易木马程序_python简易木马编写

热门文章

  1. word2vec的spark实现_word2vec的几种实现
  2. 【MQTT从入门到提高系列 | 01】从0到1快速搭建MQTT测试环境
  3. printk内核实现原理
  4. 12个助记词(24个助记词)怎么保存最安全
  5. matlab 里定义全局变量,常量
  6. 收藏 | 83篇文献,万字总结强化学习之路
  7. Outlook中将发送邮件自动CC给自己
  8. WIN10系统中RSLink Classic用RS232连接PLC无法连接
  9. dnf剑魂buff等级上限_DNF男鬼剑三觉,剑魂重回“鬼剑一哥”地位,再现“一肩成神”风采...
  10. 扩散!Redmond两天连发恶性案件,请注意安全!