在Linux环境下打开开发板终端是嵌入式开发中的基础操作,通常通过串口、网络(如SSH)或专用调试工具(如J-Link、ST-Link)实现,以下是具体操作步骤和注意事项,涵盖常见开发板类型(如树莓派、STM32、BeagleBone等)和连接方式。
准备工作:硬件连接与工具安装
在打开终端前,需确保硬件连接正确,并安装必要的软件工具,不同开发板的连接方式略有差异,但核心逻辑一致:建立开发板与Linux主机的通信通道。
硬件连接
-
串口连接:
多数开发板(如STM32、树莓派、ESP32)提供UART串口,需通过USB转串口模块(如CH340、FT232、PL2303)连接至Linux主机。- 步骤:将开发板的TX引脚连接到模块的RX,RX引脚连接到模块的TX,GND共地,模块USB端插入Linux主机。
- 注意:部分开发板(如树莓派)默认串口功能被蓝牙占用,需通过
sudo raspi-config
禁用蓝牙并启用串口。
-
网络连接(SSH):
若开发板支持网络(如树莓派、BeagleBone),可通过以太网或WiFi与Linux主机在同一局域网下连接。步骤:用网线连接开发板和路由器,或开发板连接WiFi(需开发板系统支持),获取开发板IP地址(通常通过开发板串口初始信息或路由器管理界面查看)。
-
专用调试工具:
部分开发板(如STM32、NXP)需通过J-Link、ST-Link等调试器连接,支持SWD/JTAG接口,用于底层调试和终端访问(需配合OpenOCD等工具)。
工具安装
根据连接方式安装对应工具,以Ubuntu/Debian为例:
- 串口工具:
sudo apt install minicom screen cu
(minicom和screen为常用串口终端,cu为轻量级工具)。 - SSH客户端:Linux系统默认安装OpenSSH客户端,无需额外安装(
ssh
命令可用)。 - 调试工具:如J-Link需从Segger官网下载Linux版本并安装;ST-Link需安装
openocd
和arm-none-eabi-gdb
(sudo apt install openocd gdb-arm-none-eabi
)。
通过串口打开终端
串口是最直接的终端连接方式,适用于底层调试、日志查看等场景,以下是详细步骤:
确认串口设备节点
Linux系统识别USB转串口模块后,会在/dev
目录下生成设备文件(如/dev/ttyUSB0
、/dev/ttyACM0
)。
- 命令:
ls /dev/ttyUSB*
或ls /dev/ttyACM*
(为通配符,匹配所有串口设备)。 - 若无输出,检查模块是否插入牢固,或尝试更换USB接口。
配置串口参数
开发板串口默认参数通常为:波特率9600、8位数据位、无校验位、1位停止位(8N1),部分开发板可能为115200(如树莓派默认串口),需确保Linux主机参数与开发板一致。
- 以
minicom
为例配置:sudo minicom -s # 进入配置界面
选择“Serial port setup”,按回车进入配置:
- Serial Device:输入设备节点(如
/dev/ttyUSB0
); - “Bps/Parity/Bits”:设置波特率(9600)、校验位(None)、数据位(8)、停止位(1);
- 保存配置:选择“Save setup as dfl”(保存为默认)或“Save setup as…”(自定义名称),退出minicom。
- Serial Device:输入设备节点(如
连接串口终端
- 使用minicom:
sudo minicom
(若已配置默认参数)或sudo minicom -b 9600 -D /dev/ttyUSB0
(直接指定波特率和设备)。 - 使用screen:
sudo screen /dev/ttyUSB0 9600
(按Ctrl+A+D
退出会话,screen -r
重新连接)。 - 使用cu:
sudo cu -l /dev/ttyUSB0 -s 9600
(输入退出)。
连接成功后,开发板终端界面将显示登录提示(如login:
),输入用户名和密码(开发板默认用户名通常为root
或pi
,密码为空或raspberry
)。
常见问题解决
- 无设备节点:检查驱动是否安装,
lsusb
查看模块是否被识别(如CH340模块会显示“1a86:7523”),未识别则尝试sudo modprobe ch341
。 - 权限不足:普通用户无法访问串口设备,需将用户加入
dialout
组:sudo usermod -aG dialout $USER
,然后注销重新登录。 - 显示乱码:检查波特率是否与开发板一致,或尝试其他波特率(如115200、57600)。
通过网络(SSH)打开终端
若开发板已运行Linux系统(如树莓派、Ubuntu Core),可通过SSH实现远程终端访问,无需物理连接串口。
确认开发板IP地址
- 开发板启动后,串口终端通常会显示IP地址(如树莓派默认为
168.1.x
)。 - 若未显示,可在路由器管理界面查看已连接设备列表,或使用
nmap
扫描局域网:nmap -sn 192.168.1.0/24
(根据实际网段调整)。
连接SSH终端
Linux主机默认安装SSH客户端,直接使用ssh
命令连接:
ssh username@ipaddress # ssh pi@192.168.1.100
- 首次连接会提示“Are you sure you want to continue connecting (yes/no)?”,输入
yes
回车。 - 输入开发板用户密码(默认密码可通过开发板文档查询,首次使用建议修改)。
免密登录配置(可选)
为避免每次输入密码,可配置SSH密钥认证:
- 在Linux主机生成密钥:
ssh-keygen -t rsa
(一路回车使用默认路径)。 - 将公钥复制到开发板:
ssh-copy-id pi@192.168.1.100
(输入密码后自动配置)。 - 后续连接可直接
ssh pi@192.168.1.100
,无需密码。
常见问题解决
- 连接超时:检查开发板和主机是否在同一局域网,防火墙是否阻止SSH端口(默认22):
sudo ufw status
(Ubuntu),或sudo systemctl status ssh
(确认SSH服务运行)。 - 拒绝连接:确认开发板IP地址正确,或尝试重启开发板SSH服务:
sudo systemctl restart ssh
。
通过专用调试工具打开终端
部分开发板(如STM32裸机系统)需通过调试器(如J-Link)连接,配合OpenOCD和GDB实现终端功能(主要用于调试程序输出)。
硬件连接
- 将J-Link调试器的SWD接口(CLK、GND、SWDIO)连接至开发板对应的SWD调试引脚,USB端插入Linux主机。
安装驱动与工具
- J-Link驱动:从官网下载Linux版本(如
JLink_Linux_V698d_x86_64.deb
),安装:sudo dpkg -i JLink_Linux_V698d_x86_64.deb
。 - OpenOCD:
sudo apt install openocd
。 - GDB:
sudo apt install gdb-arm-none-eabi
(针对ARM架构开发板)。
启动调试服务器
- 创建OpenOCD配置文件(如
stm32f4x.cfg
如下(以STM32F4为例):interface jlink transport swd source [find target/stm32f4x.cfg]
- 启动OpenOCD:
openocd -f stm32f4x.cfg
,成功后会显示“Listening on port 3333”。
连接GDB终端
- 编译程序时需开启调试信息(如
gcc -g -o app app.c
)。 - 启动GDB并连接OpenOCD:
arm-none-eabi-gdb app (gdb) target remote localhost:3333 (gdb) monitor reset init # 复位开发板 (gdb) load # 下载程序到开发板 (gdb) continue # 运行程序
- 若程序中包含
printf
等输出函数,需重定向到SWO(如STM32的ITM调试接口),或通过OpenOCD的semihosting
功能查看输出。
不同连接方式对比
连接方式 | 适用场景 | 所需工具 | 优点 | 缺点 |
---|---|---|---|---|
串口 | 底层调试、日志查看 | minicom、screen | 无需网络,直接访问 | 需物理连接,速率较低 |
SSH | 远程操作、文件传输 | ssh、scp | 无物理连接,支持网络传输 | 需开发板运行Linux系统 |
专用调试工具 | 程序下载、底层调试 | J-Link、OpenOCD、GDB | 支持断点调试、变量查看 | 需额外硬件,配置较复杂 |
相关问答FAQs
Q1:终端连接后显示乱码,如何解决?
A:串口乱码通常由波特率不匹配、数据位/校验位/停止位设置错误或信号干扰导致,可按以下步骤排查:
- 确认开发板默认串口参数(如波特率),常见值有9600、115200,查阅开发板文档获取;
- 在串口工具(如minicom)中重新配置参数,确保与开发板一致;
- 检查串口线连接是否正确(TX-RX交叉连接),或更换USB转串口模块;
- 若使用延长线,尽量缩短长度或使用屏蔽线减少干扰。
Q2:开发板无法被Linux主机识别(串口无设备节点),怎么办?
A:可按以下步骤排查:
- 检查硬件连接:确保USB转串口模块插入牢固,开发板引脚焊接正确,无短路或断路;
- 查看模块是否被识别:执行
lsusb
,若未看到模块设备,尝试更换USB接口或模块; - 安装驱动:若模块为CH340/FT232,执行
sudo apt install ch341ftdi
(CH340驱动)或从官网下载驱动; - 检查内核模块:执行
sudo modprobe ch341
(CH340)或sudo modprobe ftdi_sio
(FT232),再用ls /dev/ttyUSB*
查看设备节点; - 权限问题:将用户加入
dialout
组(sudo usermod -aG dialout $USER
),注销后重新登录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31649.html