2. 开发环境搭建:交叉编译工具链安装、TFTP/NFS网络文件系统配置、SSH远程调试、串口终端工具(Minicom/Putty)使用

好,咱们直接进入正题。开发环境搭建,说白了就是给你的电脑和TTU板子之间搭一座桥。没有这座桥,你写的代码就是一堆废纸。我个人习惯先把工具链装好,再配网络,最后搞串口。这个顺序比较顺,你试试看。

2.1 交叉编译工具链安装

为什么需要交叉编译?因为TTU的CPU是ARM架构,而你的电脑是x86架构。你在电脑上编译的程序,ARM芯片看不懂。所以我们需要一个“翻译官”——交叉编译工具链。

我在项目中遇到过最坑的事,就是工具链版本不对。编译出来的程序一跑就崩,查了三天才发现是GCC版本太新,跟内核不匹配。嗯,这里要注意:工具链版本必须与目标板内核版本对应

核心原则:厂商提供的工具链是最佳选择。别自己去网上下载最新的,除非你想给自己找麻烦。

安装步骤其实很简单,我一般这样做:

  1. 从厂商获取交叉编译工具链压缩包,通常是 gcc-linaro-xxx.tar.xz 这种格式。
  2. 解压到 /opt 目录下:
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/
  1. 配置环境变量,编辑 ~/.bashrc
export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
  1. 使配置生效:
source ~/.bashrc
  1. 验证安装:
arm-linux-gnueabihf-gcc --version

小技巧:我习惯把工具链路径写在 /etc/profile 里,这样所有用户都能用。但如果你只是自己调试,放 ~/.bashrc 就够了。

2.2 TFTP/NFS网络文件系统配置

开发TTU时,你不可能每次改代码都重新烧写固件。那太慢了。所以我们需要TFTP和NFS这两个神器。

2.2.1 TFTP服务器配置

TFTP用来传输内核镜像和设备树文件。说白了,就是让板子能从你的电脑上下载文件。

安装TFTP服务器:

sudo apt-get install tftpd-hpa

配置文件在 /etc/default/tftpd-hpa,我一般这样改:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"

创建共享目录并设置权限:

sudo mkdir /tftpboot
sudo chmod 777 /tftpboot

重启服务:

sudo systemctl restart tftpd-hpa

注意:我曾经因为防火墙没关,TFTP死活连不上。检查一下 sudo ufw status,如果开着就关掉或者放行69端口。

2.2.2 NFS网络文件系统配置

NFS比TFTP更强大。它能让板子直接挂载你电脑上的目录,就像访问本地硬盘一样。调试应用程序时特别方便。

安装NFS服务器:

sudo apt-get install nfs-kernel-server

编辑 /etc/exports,添加共享目录:

/nfsroot 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

创建目录并重启服务:

sudo mkdir /nfsroot
sudo chmod 777 /nfsroot
sudo systemctl restart nfs-kernel-server

在TTU板子上挂载NFS:

mount -t nfs -o nolock 192.168.1.100:/nfsroot /mnt

避坑指南:我曾经在NFS上栽过跟头——板子挂载后读写特别慢。后来发现是 no_root_squash 没加,权限问题导致每次读写都要转换。加上这个参数后,速度就正常了。

2.3 SSH远程调试

SSH是远程登录的标配。TTU板子一般跑的是Linux系统,SSH服务默认开启。你只需要知道IP地址和密码就行。

连接命令:

ssh root@192.168.1.101

第一次连接会提示确认密钥,输入 yes 就行。

我个人习惯用SSH做三件事:

  • 远程执行命令: ssh root@192.168.1.101 "ls /app"
  • 文件传输: scp test_app root@192.168.1.101:/app/
  • 端口转发: 调试Web服务时特别有用

经验之谈:如果SSH连不上,先ping一下板子。能ping通说明网络没问题,再检查SSH服务是否启动。我遇到过好几次,板子重启后SSH服务没自动启动,手动 /etc/init.d/sshd start 就好了。

2.4 串口终端工具(Minicom/Putty)使用

串口是最后一道防线。网络不通时,串口就是你跟板子沟通的唯一渠道。说白了,串口就是一根救命稻草。

2.4.1 Minicom(Linux环境)

安装:

sudo apt-get install minicom

配置:

sudo minicom -s

进入配置菜单后,设置串口参数:

  • 串口设备:/dev/ttyUSB0(根据实际设备调整)
  • 波特率:115200
  • 数据位:8
  • 停止位:1
  • 校验:None
  • 流控:None

保存为默认配置,退出后输入 minicom 即可连接。

小技巧:我习惯用 Ctrl+A 然后按 Z 查看帮助菜单。退出时按 Ctrl+A 再按 X。这个快捷键我记了好久才记住。

2.4.2 Putty(Windows环境)

Putty是Windows下的串口工具,轻量好用。配置步骤:

  1. 打开Putty,选择 Serial 连接方式
  2. 填写串口号(如COM3)
  3. 设置波特率115200
  4. 点击 Open 连接

如果乱码,检查一下编码设置。在 Window > Translation 里选择 UTF-8

注意:Windows下串口驱动是个坑。我遇到过CH340驱动装不上、PL2303驱动蓝屏等各种问题。建议买串口线时选FT232芯片的,稳定很多。

2.5 环境验证

所有工具装好后,我们来验证一下整个环境是否正常:

验证项 命令 预期结果
交叉编译 arm-linux-gnueabihf-gcc -o hello hello.c 生成ARM可执行文件
TFTP传输 板子上执行 tftp -g -r zImage 192.168.1.100 文件下载成功
NFS挂载 板子上执行 mount -t nfs ... 挂载成功,可读写文件
SSH连接 ssh root@192.168.1.101 登录成功
串口通信 Minicom/Putty连接 显示板子启动信息

全部通过?恭喜你,开发环境搭建完成。接下来就可以开始真正的TTU开发了。记住,环境搭好了,后面的事就顺了。我曾经因为环境问题浪费了整整一周,所以这一步千万别偷懒。