前言:
通过 nfs 实现上下位机远程调试
配置上位机 NFS
我设备的 IP :192.168.1.136
我PC 的 IP :192.168.1.120
-
安装
sudo apt install nfs-kernel-server如果没有找请
sudo apt update -
创建文件
sudo mkdir -p /mnt/nfsroot//按照指定路径创建相对的父类文件夹(存在则也不会报错)
sudo chown nobody:nogroup /mnt/nfsroot设置文件所属于
sudo chmod 777 /mnt/nfsroot设置文件权限 -
允许指定设备连接
sudo vi /etc/exports
在文件中输入 (设备 IP)
/mnt/nfsroot 192.168.1.136(rw,sync,no_subtree_check)
rw: read and write operations
sync: write any change to the disc before applying it
no_subtree_check: prevent subtree checking
-
输出共享目录 并启动设备
sudo exportfs -a
sudo systemctl restart nfs-kernel-server.service -
检查防火墙状态
sudo ufw status--> Status:inactive 不需要配置防火墙
Status:active 需要配置防火墙
1) 添加允许规则sudo ufw allow from 192.168.1.136 to any port nfs
sudo ufw status
查看输出

注意:其它同平台部分查看资源链接
ARM 设备配置
已移植 gdbserver 和 nfs
- 建立连接
mount -t nfs 192.168.1.120:/mnt/nfsroot /mnt -o nolock
没有任何输出就是OK
- 测试
PC 端
sudo touch test.txt /mnt/nfsroot
echo "hello world" > /mnt/nfsroot/test.txt
设备端
cd /mnt
ls
cat test.txt
注意: ls 指令没有输出 test.txt 可能是挂载失败,请重启 PC nfs server 服务
以上 NFS 连接完毕
远程 DEBUG 链接
创建一个临时测试
需要设备对应的安装交叉编译库
本设备需要:
sudo apt install g++-arm-linux-gnueabihf
sudo apt install gcc-arm-linux-gnueabihf
1 创建文件
touch t1.cpp /mnt/nfsroot
2 文件内容
#include <iostream>
int main() {
std::cout << "hello world" << std::endl;
std::cout << "--!---" << std::endl;
return 0;
}
3 编译
arm-linux-gnueabihf-g++ t1.cpp -o t1 -g
编译生成 t1 文件
设备端
gdbserver :2000 t1
gdbserver 和 :2000 之前有一个空格
PC 端
1 安装 多架构 dbg
新立得 或 手动
sudo apt install gdb-multiarch
2 启动 debug
cd /mnt/nfsroot
gdb-multiarch t1
3 链接
target remote 192.168.1.136:2000
continue
就可以看到下位机 输出
hello world
–!--
至此配置完成
参考文献:
ubuntu 18.04 nfs 配置文档
本文详细介绍了如何使用NFS在上位机与下位机之间进行远程调试,包括配置NFS服务、设置防火墙规则、建立调试连接及使用gdb进行远程调试的过程。
2337

被折叠的 条评论
为什么被折叠?



