2. 开发环境搭建:交叉编译工具链安装、TFTP/NFS网络文件系统配置、SSH远程调试、串口终端工具(Minicom/Putty)使用
好,咱们直接进入正题。开发环境搭建,说白了就是给你的电脑和TTU板子之间搭一座桥。没有这座桥,你写的代码就是一堆废纸。我个人习惯先把工具链装好,再配网络,最后搞串口。这个顺序比较顺,你试试看。
2.1 交叉编译工具链安装
为什么需要交叉编译?因为TTU的CPU是ARM架构,而你的电脑是x86架构。你在电脑上编译的程序,ARM芯片看不懂。所以我们需要一个“翻译官”——交叉编译工具链。
我在项目中遇到过最坑的事,就是工具链版本不对。编译出来的程序一跑就崩,查了三天才发现是GCC版本太新,跟内核不匹配。嗯,这里要注意:工具链版本必须与目标板内核版本对应。
核心原则:厂商提供的工具链是最佳选择。别自己去网上下载最新的,除非你想给自己找麻烦。
安装步骤其实很简单,我一般这样做:
- 从厂商获取交叉编译工具链压缩包,通常是
gcc-linaro-xxx.tar.xz这种格式。 - 解压到
/opt目录下:
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/
- 配置环境变量,编辑
~/.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
- 使配置生效:
source ~/.bashrc
- 验证安装:
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下的串口工具,轻量好用。配置步骤:
- 打开Putty,选择 Serial 连接方式
- 填写串口号(如COM3)
- 设置波特率115200
- 点击 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开发了。记住,环境搭好了,后面的事就顺了。我曾经因为环境问题浪费了整整一周,所以这一步千万别偷懒。