二、交叉编译工具链(arm-linux-gnueabihf-gcc)安装与验证,搭建 TFTP+NFS 服务,调试开发板网络连通性;

一、交叉编译工具链(arm-linux-gnueabihf-gcc)安装与验证,搭建 TFTP+NFS 服务,调试开发板网络连通性

一、arm-linux-gnueabihf-gcc 交叉编译工具链安装与验证

交叉编译工具链的作用是在 x86 主机上编译能在 ARM 开发板上运行的程序,arm-linux-gnueabihf 是针对 ARM 硬浮点(hf)的工具链。

1. 环境准备

确保 Ubuntu 系统已更新:

复制代码
sudo apt update && sudo apt upgrade -y
2. 安装方式:APT 一键安装

Ubuntu 官方源已内置该工具链,直接安装:

复制代码
sudo apt install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
3. 验证工具链是否安装成功
步骤 1:查看工具链版本
复制代码
arm-linux-gnueabihf-gcc -v

如果输出工具链版本信息(如 gcc version 7.5.0),说明环境变量和安装都正常。

步骤 2:编译测试程序验证
复制代码
file teat_arm 

创建一个简单的 C 程序 test.c

复制代码
#include <stdio.h>
int main(){
    printf("Hello ARM Board!\n");
    return 0;
}

用交叉编译器编译:

复制代码
arm-linux-gnueabihf-gcc test.c -o teat_arm # 编译为 ARM 架构可执行文件

检查生成文件的架构:

复制代码
file test_arm

输出应包含 ARM, EABI5, hard-float ABI,说明编译出的是 ARM 硬浮点程序,工具链验证成功。

二、搭建 TFTP+NFS 服务

核心说明:

TFTP:简单文件传输协议,用于开发板启动时快速下载内核、设备树等小文件(无权限验证,适合调试)。

NFS:网络文件系统,用于开发板挂载主机的目录,方便直接运行 / 调试主机上的程序(无需反复拷贝文件)。

  1. 关闭防火墙 / SELinux(避免服务被拦截)

Ubuntu 下关闭防火墙:

复制代码
sudo ufw disable   # 关闭防火墙(调试阶段建议关闭,生产环境按需配置)
  1. 搭建 TFTP 服务

步骤 1:安装 TFTP 相关软件

复制代码
sudo apt install -y tftp-hpa- tftpd-hpa xinetd
  • tftp-hpa:TFTP 客户端(用于主机测试)。
  • tftpd-hpa:TFTP 服务端。
  • xinetd:网络服务管理工具(辅助 TFTP 运行)。

步骤 2:配置 TFTP 服务

编辑 TFTP 配置文件:

复制代码
sudo vim /etc/default/tftpd-hpa

修改为以下内容(指定 TFTP 根目录,开启读写):

复制代码
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/你的用户名/tftpboot"  # TFTP 根目录(自行替换用户名)
TFTP_ADDRESS=":69"  # TFTP 端口(固定 69)
TFTP_OPTIONS="--secure --create"  # --create 允许创建文件(开启写权限)

步骤 3:创建 TFTP 根目录并设置权限

复制代码
mkdir -p /home/你的用户名/tftpboot  # 对应配置文件中的目录
sudo chmod 777 /home/你的用户名/tftpboot  # 开放所有权限(调试阶段)
sudo chown -R nobody:nogroup /home/你的用户名/tftpboot

步骤 4:重启 TFTP 服务并验证

复制代码
sudo systemctl restart tftpd-hap
sudo systemctl enable tftpd-hap  #设置开机启动
sudo systemctl status tftpd-hap  #查看服务器状态

步骤 5:主机测试 TFTP 服务

在 TFTP 目录创建测试文件:

复制代码
echo "test tftp" > /home/你的用户名/tftpboot/test.txt

本地测试下载:

复制代码
tftp 127.0.0.1    #进入TFTP交互模式
tftp> get test.tex    #下载文件
tftp> quit         #退出
cat test.txt         #查看文件,输出 "test tftp" 则 TFTP 服务正常
3. 搭建 NFS 服务

步骤 1:安装 NFS 相关软件:

复制代码
sudo apt install -y nfs-kernel-server rpcbind
  • nfs-kernel-server:NFS 服务端。
  • rpcbind:NFS 依赖的端口映射服务。

步骤 2:配置 NFS 共享目录

编辑 NFS 配置文件:

复制代码
sudo vim /etc/exports

在文件末尾添加以下内容(指定共享目录和权限):

复制代码
/home/你的用户名/nfsroot  *(rw,sync,no_root_squash,no_subtree_check,insecure)
  • /home/你的用户名/nfsroot:NFS 共享目录(自行替换用户名)。
  • *:允许所有网段访问(调试阶段,生产环境可指定开发板网段,如 192.168.1.*)。
  • rw:读写权限。
  • sync:同步写入(数据实时同步到磁盘)。
  • no_root_squash:开发板以 root 身份访问时,保留 root 权限(关键,否则开发板挂载后无写权限)。
  • insecure:允许非标准端口访问(避免开发板挂载失败)。

步骤 3:创建 NFS 共享目录并设置权限

复制代码
mkdir -p /home/你的用户名/nfsroot
sudo chmod 777 /home/你的用户名/nfsroot  # 开放权限

步骤 4:重启 NFS 服务并验证

复制代码
sudo systemctl restart rpcbind
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server  # 开机自启

# 验证 NFS 共享目录
showmount -e localhost

输出应包含 /home/你的用户名/nfsroot *,说明 NFS 共享配置成功。

步骤 5:主机本地测试 NFS 挂载

复制代码
sudo mount -t nfs localhost:/home/你的用户名/nfsroot /mnt  # 挂载到 /mnt
touch /mnt/test_nfs.txt  # 创建文件
ls /mnt  # 能看到 test_nfs.txt 则正常
sudo umount /mnt  # 卸载(测试完成后)

三、调试开发板网络连通性

前提:

开发板与主机通过 网线直连同一路由器 连接(确保在同一网段)。

配置主机静态 IP(避免 IP 变动):

编辑网络配置文件(以 Ubuntu 20.04 为例):

复制代码
sudo vim /etc/netplan/00-installer-config.yaml

network:
  ethernets:
    enp0s3:  # 你的网卡名(用 ip addr 查看)
      addresses: [192.168.1.100/24]  # 主机 IP(固定)
      gateway4: 192.168.1.1  # 网关(路由器 IP,直连可省略)
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]
  version: 2

sudo netplan apply
  1. 配置开发板 IP(两种方式)

方式 1:临时配置(重启开发板失效)

在开发板串口终端执行(与主机同一网段,如主机 192.168.1.100,开发板设为 192.168.1.101):

复制代码
ifconfig eth0 192.168.1.101 netmask 255.255.255.0  # 配置静态 IP
route add default gw 192.168.1.1  # 添加网关(直连可省略)
echo "nameserver 8.8.8.8" > /etc/resolv.conf  # 配置 DNS

方式 2:永久配置(修改开发板网络配置文件)

不同开发板配置文件路径不同,常见路径:

复制代码
/etc/network/interfaces(Debian/Ubuntu 系统开发板)。
/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS 系统开发板)。
按对应格式配置静态 IP 即可。
  1. 测试网络连通性

步骤 1:开发板 ping 主机(核心验证)

在开发板终端执行:

复制代码
ping 192.168.1.101  # 开发板 IP

能 ping 通则双向网络正常。

  1. 测试 TFTP 服务(开发板侧)

在开发板终端执行(下载主机 TFTP 目录的 test.txt):

复制代码
tftp -g -r test.txt 192.168.1.100  # -g 下载,-r 指定文件名,后接主机 IP
cat test.txt  # 输出 "test tftp" 则 TFTP 服务正常
  1. 测试 NFS 服务(开发板侧)

在开发板终端挂载主机 NFS 目录:

复制代码
mount -t nfs -o nolock 192.168.1.100:/home/你的用户名/nfsroot /mnt  # 挂载 NFS
touch /mnt/board_test.txt  # 创建文件(验证写权限)
ls /mnt  # 能看到 board_test.txt 则 NFS 挂载成功
umount /mnt  # 卸载(测试完成后)
相关推荐
z20348315201 小时前
Keil界面优化配置,快捷键格式化配置,警告屏蔽
单片机
郝学胜-神的一滴1 小时前
Effective Modern C++ 条款40:深入理解 Atomic 与 Volatile 的多线程语义
开发语言·c++·学习·算法·设计模式·架构
骇城迷影2 小时前
代码随想录:二叉树篇(中)
数据结构·c++·算法·leetcode
czxyvX2 小时前
011-C++之异常
c++
learndiary2 小时前
Linux、Windows双系统根分区扩容要点
linux·运维·扩容·双系统
tod1132 小时前
C++核心知识点全解析(四)
开发语言·c++·面试经验
Doro再努力2 小时前
【Linux操作系统15】深入理解Linux进程概念:从理论到实践
android·linux·运维
搁浅小泽2 小时前
空调风机、四通阀、电辅热的电源如何取电?
单片机·嵌入式硬件·可靠性工程师
闻缺陷则喜何志丹2 小时前
【计算几何 CAD】三点画弧、三点画圆是否是三角形的外接圆
c++·计算几何·cad··外接圆·