Linux下串口工具

1、先到http://www.columbia.edu/kermit/ck80.html#download来下载C-Kermit。如果你下载的是cku211.tar.gz的话,执行:

gunzip cku211.tar.gz

tar xvf cku211.tar

rm -rf cku211.tar

make linux

mv wermit /usr/local/bin/kermit

执行以上命令,就可以在终端上输入kermit就可运行了。

2. kermit脚本设置:

# vi ~/.kermrc

set line /dev/ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
c

保存后退出即可。然后启动kermit,你会看到:

# kermit
Connecting to /dev/ttyS0, speed 115200
Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.

出现以上提示,则说明串口已经打开。

切换:按下Ctrl + \ ,再按c 就跳回kermit。跳回串口控制,可以输入c,即connect命令

发送文件:

kermit中输入connect后,跳到u-boot串口界面。

输入loadb 0x0c008000 回车

按下 ctrl + \ ,再按c,切换到kermit。

输入命令:send /home/zImage

kermit开始传送数据了,并可以看到传送进度,发送完后,输入c,再回到u-boot界面,然后,再输入:go 0x0c008000

内核开始运行了

kermit在启动时会查找~/.kermrc文件,调用里面的命令来初始化kermit。只要将你所需的命令写到~/.kermrc文件里,启动后就不这么麻烦了。

转自:http://blog.chinaunix.net/space.php?uid=21658993&do=blog&id=1819934


<think>好的,我现在需要帮用户找到Linux下调试232串口的工具,可能和他们之前遇到的SSCOM接收数据乱码问题相关。用户之前的问题是关于SSCOM在Windows下接收串口数据乱码的解决方案,现在他们转向Linux环境,可能需要类似的工具。 首先,我要回忆一下用户提供的引用内容。引用1提到了他们自己开发的Linux串口工具,支持RS232/422/485,可以设置波特率等参数,适用于Ubuntu16.04,也有Windows版本。引用2提到minicom,这是Linux下常用的串口调试工具,设置参数如波特率、数据位等。引用3则讨论了使用QT编译串口工具,需要安装serialport模块,适用于银河麒麟等系统。 用户现在需要Linux下的工具,可能用于调试232串口,解决类似的数据乱码问题。我需要结合之前的回答,其中提到了检查波特率、数据帧、电平转换等步骤。现在需要推荐合适的工具,并说明如何在这些工具中进行设置,以避免乱码。 首先,常用的Linux工具有minicom、gtkterm、picocom、以及用户自己开发的工具(引用1)。此外,还有基于QT的,如引用3提到的需要编译的工具。需要分别介绍这些工具,并说明如何配置关键参数,如波特率、数据位、停止位、校验位,这些参数在之前的解决方案中是关键点。 另外,用户可能需要工具支持十六进制显示,以便像SSCOM那样检查原始数据,避免编码问题导致的乱码。例如,在minicom中如何启用十六进制模式?或者是否有其他工具支持这个功能? 还要考虑用户可能的开发需求,比如是否需要自己用QT开发工具,如引用3的情况,但用户可能更倾向于现成的工具,除非有特殊需求。同时,需要提醒用户注意串口权限问题,在Linux下可能需要sudo或设置用户组。 另外,之前的回答中提到了硬件检查,如电平转换,所以在推荐工具时,是否需要结合这些硬件检测步骤?比如,建议用户在使用工具前确认硬件连接正确,电平符合RS232标准,避免因为硬件问题导致数据错误,即使软件配置正确。 可能还需要比较各个工具的优缺点,比如minicom功能强大但配置稍复杂,picocom更轻量,gtkterm有图形界面等。用户之前用SSCOM可能有图形界面习惯,所以gtkterm可能更合适,而minicom是终端工具,适合远程或命令行环境。 最后,需要确保推荐的工具支持用户提到的系统,比如Ubuntu、银河麒麟等,根据引用内容,用户自己的工具支持Ubuntu和银河麒麟,而minicom可能更通用。同时,引用3提到在银河麒麟上编译需要手动安装serialport模块,这可能是一个注意事项,特别是如果用户使用的是麒麟系统的话。 总结步骤: 1. 推荐常用工具(minicom、gtkterm、picocom、用户的自研工具)。 2. 说明每个工具的安装和基本配置步骤,特别是参数设置(波特率、数据位等)。 3. 强调参数匹配的重要性,与之前解决乱码的步骤一致。 4. 提及十六进制显示功能,帮助诊断数据问题。 5. 提醒权限问题和硬件检查,如电平转换。 6. 根据用户可能的系统环境(Ubuntu、银河麒麟)推荐合适的工具。</think>### Linux下RS232串口调试工具详解 #### 一、主流调试工具对比 1. **minicom (终端模式)** - 安装命令:`sudo apt-get install minicom` - 核心配置: ```bash sudo minicom -s # 进入设置界面后: A - Serial Device: /dev/ttyS0 (COM1对应ttyS0) E - 波特率/数据位:设置为与硬件一致的$9600\ 8N1$格式 F/G - 硬件/软件流控:关闭(No) ``` - 十六进制模式:按`Ctrl+A`后输入`Z`,选择`L`进入HEX显示[^2] 2. **gtkterm (图形界面)** - 安装:`sudo apt install gtkterm` - 优势:支持实时波特率切换,直观显示数据帧错误计数 - 关键设置: ```mermaid graph LR Port-->选择/dev/ttyUSB0 Baud_Rate-->设置与设备匹配的数值 Data_Bits-->8位 Parity-->None Stop_Bits-->1 ``` 3. **picocom (轻量级工具)** - 安装:`sudo apt install picocom` - 快速启动命令: ```bash picocom -b 115200 -d 8 -p none -f h /dev/ttyS0 # -f h 表示十六进制显示 ``` 4. **自研QT工具 (引用[1][3])** - 支持特性: - 自动周期发送(可模拟传感器数据流) - 多编码格式支持(解决乱码核心问题) - 银河麒麟系统适配方案: ```bash git clone https://github.com/QtSerialPort/qtserialport cd qtserialport && mkdir build && cd build qmake .. && make -j4 sudo make install ``` #### 二、调试参数设置规范 1. **波特率容差控制** 使用公式校验实际误差: $$ \delta = \left| \frac{f_{实际} - f_{理论}}{f_{理论}} \right| \times 100\% \leq 2\% $$ 例如115200波特率对应允许误差范围±2304bps 2. **数据帧格式对照表** | 参数 | 设备A设置 | 调试工具设置 | |-------------|-----------|--------------| | 波特率 | 115200 | 115200 | | 数据位 | 8 | 8 | | 停止位 | 1 | 1 | | 校验位 | None | None | #### 三、典型乱码排查流程 1. **HEX模式验证** 若显示`3F`对应ASCII乱码,表明存在以下问题之一: - 波特率不匹配(高频误差导致字节错位) - 电平不兼容(TTL与RS232混接) - 编码格式错误(如UTF-8与GBK冲突) 2. **系统级诊断命令** ```bash stty -F /dev/ttyS0 # 查看当前串口参数 cat /proc/tty/driver/serial # 查看串口中断统计 ``` #### 四、进阶调试技巧 1. **实时流量监控** 使用`socat`进行数据中转记录: ```bash socat -v /dev/ttyS0,raw,echo=0 TCP-LISTEN:8888,reuseaddr ``` 通过Wireshark分析TCP端口8888流量 2. **自动化测试脚本** ```python import serial ser = serial.Serial('/dev/ttyS0', 115200, timeout=1) ser.write(b'\xAA\x55\x01') # 发送测试帧 response = ser.read(3) print(f"Received: {response.hex()}") ``` #### 五、硬件兼容性要点 1. **USB转串口芯片选择** | 芯片型号 | Linux驱动支持 | 稳定性 | |----------|---------------|--------| | CP2102 | 内置 | ★★★★☆ | | CH340 | 需手动编译 | ★★★☆☆ | | FT232RL | 即插即用 | ★★★★★ | 2. **信号质量检测** 使用`scope`命令(需安装sigrok): ```bash sigrok-cli -d fx2lafw --continuous -O ascii ``` --相关问题--: 1. 如何通过Wireshark解码自定义串口协议? 2. Linux下如何永久修改串口设备权限? 3. RS232通信中如何实现硬件流控(RTS/CTS)?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值