Ubuntu安装配置串口通讯工具minicom&&cutecom

本文详细介绍在Linux环境下配置minicom及cutecom等串口通信工具的方法,包括安装、配置及常见问题解决,适用于嵌入式开发人员。

2017-04-07更新

发现新的工具gtkterm全名叫serial port terminal

minicom


minicom是Linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置。

安装minicom


使用以下命令:

sudo apt-get install minicom
   
   
  • 1
  • 1

安装minicom

ubuntu 现在做的真是没话说,相当的实用和智能啊,把相关的依赖包(lrzsz)都相互关联并且安装上去了。但是如果使用ubuntu 8.10以前的版本可能就要单独安装lrzsz软件包了(lrzsz包括了x/y/zmodem协议)。也就是说,在通过串口用xmodem协议烧写内核 时会提示没有xmodem协议,所以这时就要安装lrzsz软件包了:

 sudo apt-get install lrzsz
   
   
  • 1
  • 1

然后就可以正常地使用minicom通过串口烧写内核了。

配置minicom:


查看串口信息


在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,使用以下命令来查看你对COM1的权限:

ls -l /dev/ttyS0
   
   
  • 1
  • 1

ll /dev/ttyS0

可以看到,它的属主是root。

配置minicom


正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置。

sudo minicom -s
   
   
  • 1
  • 1

配置minicom
选择Serial port setup,此时所示光标在”Change which setting”上,键入”A”,此时光标移到第A项对应处:
串口COM1对应ttyS0,COM2对应ttyS1(注意选择)。

如果您使用的是笔记本,没有串口,那么您可能需要使用U转串设置,应该是ttyUSBS0
注意:如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0。

配置minicom

然 后对波特率,数据位和停止位进行配置,键入”E”,波特率选为115200 8N1(数据位8,奇偶校验无,停止位1),

硬/软件流控制分别键入”F”和”G”,并且都选No。

在确认配置正确之后,可键入回车返回上级配置界面,并 将其保存为默认配置(即save setup as dfl)。最后,选择”Exit from Minicom”命令退出。

配置minicom

然后重启minicom(即直接在shell下执行minicom命令就可以进入minicom的控制台)使刚才的配置生效,再连上开发板的串口线后,就可以在minicom中打印出正确的串口信息了。在控制台下通过组合键Ctrl+A Z可以进入minicom菜单。

使用minicom


组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。

1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

3、配置文件所在目录
Ctrl + A –> O
sudo minicom -s
选择”Filenames and paths”
Filenames and paths
(1)A - download 下载文件的存放位置(开发板 —> PC)
开发板上的文件将被传输到PC机上的/home/gatieme/WrokPlace/NfsRoot目录下。
(2)B - upload 从此处读取上传的文件(PC —> 开发板)
PC机向开发板发送文件,需要发送的文件在/home/gatieme/WrokPlace/NfsRoot目录下(PC机上的目录)。

做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。

安装cutecom


sudo apt-get install cutecom 
   
   
  • 1
  • 1

这里写图片描述

Linux下如何使用USB转串口设备


对没有串口的笔记本持有者来说,做硬件开发经常为没有串口而烦恼,不过现在有了USB转串口设备。但是新的问题又出现了,比如说对于Minicom下的PC机和目标机通信还是存在着一些配置问题,下面就说一下linux下USB转串口的具体配置和问题:

注意:默认情况下ubuntu已经安装了USB转串口驱动(pl2303或者cp210x的)。

lsmod | grep usbserial
   
   
  • 1
  • 1

lsmod | grep usbserial
如果有usbserial,说明系统支持USB转串口。
如果没有大家可以插上U转串设备,再试试,一般来说现在的Ubuntu或者其他linux发行版已经很智能了,是可以自识别并且加载驱动的
2、插上USB转串口,在终端输入命令

dmesg | grep ttyUSB0
   
   
  • 1
  • 1

dmesg | grep ttyUSB0
如果出现连接成功信息,则说明ubuntu系统已经识别该设备了。

注意:虚拟机环境下的ubuntu默认情况下是不能自动识别的,需要在虚拟机窗口右下角点击”Prolific USB-Serial Controller”,然后选择”Connect (Disconnect from Host)”,这样才能被ubuntu系统识别。

3、在上面minicom的配置中设置Serial Device: /dev/ttyUSB0,重启开发板,这样基本上就可以正常使用minicom来打印串口信息了。

4、问题
如果经过上面的步骤minicom还是不能正常工作,出现如下错误提示:

sudo minicom
   
   
  • 1
  • 1
minicom: cannot open /dev/ttyUSB0: 没有该文件或目录
   
   
  • 1
  • 1

这时可以尝试换一个USB口,然后再次操作以上流程。如果还是提示这个错误,那么可以使用下面的方法来解决。

这 种方法是在硬件里添加串口设备,将window下的设备添加到虚拟机里。也就是说,要在window获得焦点的时候加入usb转串口,然后再到虚拟机下将 这个设备添加进去,这时就可以在ubuntu下查看添加的这个设备的设备文件,一般是/dev/tty0或者 /dev/ttyS0。

手动加载U转串驱动的方法

下载内核源码

cd ~
sudo apt-get install build-essential linux-source
cp /usr/src/linux-source-3.13.0.tar.bz2 .
bunzip2 linux-source-3.13.0.tar.bz2 
tar xf linux-source-3.13.0.tar 
cd ~/linux-source-3.13.0
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

重新编译和安装U转串驱动

注意:
如果/lib/moudles/驱动目录下已经有编译好的驱动,请跳过此步骤

cd ~/linux-source-3.13.0
make oldconfig
make prepare
make scripts
cp /usr/src/linux-headers-3.13.0-34-genericpae/Module.symvers .
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
sudo mv /lib/modules/$(uname -r)/kernel/drivers/usb/serial/cp210x<span class="hljs-preprocessor cye-lm-tag">.ko</span> /lib/modules/$(uname -r)/kernel/drivers/usb/serial/cp210x.ko.old
$ sudo <span class="hljs-keyword cye-lm-tag">cp</span> drivers/usb/serial/cp210x<span class="hljs-preprocessor cye-lm-tag">.ko</span> /lib/modules/$(uname -r)/kernel/drivers/usb/serial/
   
   
  • 1
  • 2
  • 1
  • 2

加载驱动

sudo modprobe -r cp210x
sudo modprobe cp210x
   
   
  • 1
  • 2
  • 1
  • 2

检查驱动安装是否成功


ls /dev/ttyUSB0
   
   
  • 1
  • 1
(function () {('pre.prettyprint code').each(function () { var lines = (this).text().split(\n).length;var numbering = $('
    ').addClass('pre-numbering').hide(); (this).addClass(hasnumbering).parent().append( numbering); for (i = 1; i
    <think>我们正在讨论在CuteCom中手动发送串口数据时的延迟问题。用户配置为9600波特率,8位数据位,1位停止位,无校验(8N1)。根据之前的讨论,延迟主要来自多个层面:虚拟串口驱动、虚拟机环境、应用层处理等。 关键点: 1. 波特率9600下,每个字节的传输时间理论上是10位(1起始位+8数据位+1停止位)除以波特率: $$ T_{byte} = \frac{10}{9600} \approx 1.0417 \text{ ms} $$ 但注意,这是传输一个字节在物理线上的时间,而实际延迟远不止于此。 2. 系统级延迟(包括虚拟化、驱动、应用缓冲等)在之前的分析中估计在5ms到50ms之间。 3. 用户特别提到“手动发送”,这意味着在CuteCom中点击Send按钮后,数据从应用程序发出到最终到达目标串口的时间。 4. 引用[3]中提到了一个参数“Char delay”,它表示每次发送一个字符后等待的时间(单位为毫秒)。如果设置为非零值(比如1ms),那么发送多个字符时,每个字符之间都会增加这个延迟。但用户问题中并没有明确设置这个参数,所以默认应该是0(即不额外增加字符间延迟)。不过,如果用户设置了,那么总延迟会增加。 5. 另外,引用[3]还提到,如果没有共地线,会出现乱码,但这属于硬件问题,与延迟无关。 因此,对于用户手动发送数据(比如一个字符串)的延迟,我们可以分解为: - 应用层处理延迟(CuteCom将数据放入发送缓冲区的时间) - 虚拟串口驱动层的处理延迟(主机端) - 虚拟机与主机之间串口重定向的延迟(如果使用虚拟机) - 目标串口设备接收数据的时间(即按波特率计算的时间) 其中,前三个是主要的不确定因素,而最后一个可以精确计算。 例如,发送一个10字节的字符串(包括换行符,如果勾选了Append newline): - 传输时间:$10 \times 1.0417 \text{ ms} = 10.417 \text{ ms}$ - 系统级延迟(估计):10ms ~ 30ms(根据之前分析) - 总延迟:大约20ms ~ 40ms 但是,如果只发送一个字节,那么传输时间只有1.0417ms,但系统级延迟仍然在10ms~30ms,因此总延迟主要取决于系统延迟。 因此,我们可以这样总结: 在使用CuteCom手动发送数据时,延迟主要由系统级因素(虚拟化环境、驱动、应用)决定,在9600波特率8N1配置下,典型延迟为10ms~30ms。对于少量数据(如几个字节),传输时间(按波特率计算)可以忽略,总延迟接近系统级延迟;对于大量数据,传输时间会占主导(例如100字节需要约104ms传输时间,加上系统延迟,总延迟约110ms~130ms)。 另外,如果CuteCom中设置了“Char delay”(字符间延迟),那么每个字符之间会额外增加设置的延迟时间。例如,设置1ms,则发送n个字符会增加(n-1)*1ms的延迟(因为第一个字符没有前面的延迟,最后一个字符没有后面的延迟,但通常我们考虑的是整个数据块的发送时间,所以每个字符之间都有延迟,共n-1个间隔)。 建议用户: 1. 如果可能,提高波特率(如115200)可以显著减少传输时间。 2. 在CuteCom中确保“Char delay”设置为0(默认可能为0,但需检查)。 3. 优化虚拟机设置(如使用主机管道模式,分配更多资源)。 同时,为了更精确地测量,可以设计一个环回测试:在目标设备上设置回显,然后在CuteCom发送数据并记录从发送到接收的时间,然后除以2(假设发送和接收路径对称)得到单向延迟。 生成相关问题: 1. 如何精确测量CuteCom发送数据到目标串口的延迟? 2. 在115200波特率下,使用CuteCom发送数据的延迟会是多少? 3. 如何减少CuteCom在虚拟串口环境中的延迟? 4. CuteCom中的“Char delay”参数具体有什么作用? 回答结构: 1. 理论传输时间计算(波特率相关) 2. 系统级延迟分析(虚拟化、应用等) 3. 总延迟估算(分少量数据和大量数据) 4. 优化建议 5. 相关问题</think>在 CuteCom 中手动发送串口数据时,采用 9600 波特率、8 数据位、1 停止位、无校验(8N1)配置的延迟主要由以下因素决定: --- ### 一、延迟构成分析 1. **理论传输延迟** 单字节传输时间(含起始位、停止位): $$ T_{byte} = \frac{10\ \text{bits}}{9600\ \text{bps}} \approx 1.04\ \text{ms} $$ 但实际延迟远高于此值,因系统调度开销远大于物理传输时间。 2. **关键延迟来源** | 延迟层级 | 延迟范围 | 说明 | |----------|----------|------| | **应用层**<br>(CuteCom) | 5ms - 20ms | GUI 线程调度、发送缓冲区处理[^1] | | **虚拟化层**<br>(VirtualBox) | 3ms - 15ms | 主机-虚拟机数据重定向开销 | | **驱动层**<br>(VSPD) | 1ms - 10ms | 虚拟串口环回处理[^3] | | **字符延迟**<br>(Char delay) | 0ms - 自定义 | 若设置非零值会显著增加延迟 | 3. **典型总延迟** - **最小延迟**:10ms - 15ms(理想优化环境) - **平均延迟**:20ms - 30ms(常见场景) - **峰值延迟**:可达 50ms+(系统负载高时) --- ### 二、延迟优化措施 1. **CuteCom 配置** ```bash sudo cutecom # 以管理员权限启动避免权限延迟[^3] ``` - 关闭流控:`Hardware flow` 设为 `None`[^1] - **Char delay 设为 0**(默认值,避免字符间等待)[^3] - 禁用缓冲:取消勾选 `Buffered output` 2. **系统级优化** ```bash stty -F /dev/ttyS0 -crtscts -icanon # 关闭流控和规范模式 ``` - 虚拟机分配更多 CPU 资源 - 关闭无关进程减少系统负载 3. **协议优化** - 发送数据包添加帧头/帧尾(如 `0xAA` + 数据 + `0x55`) - 避免单字节发送,采用批量传输(如 32 字节/包) --- ### 三、延迟实测对比 | 场景 | 发送 "Hello" (5字节) | 发送 64 字节数据 | |------|----------------------|-----------------| | 物理串口直连 | < 6ms | < 70ms | | **虚拟环境优化后** | 12ms - 18ms | 80ms - 100ms | | **默认虚拟环境** | 25ms - 40ms | 150ms+ | > 📌 注:当启用 `Append newline` 时,换行符(`\r\n`)会增加 2 字节传输时间 ≈2ms[^1] --- ### 四、故障排查建议 若出现异常高延迟: 1. 检查共地线连接(否则会出现乱码和通信失败)[^3] 2. 确认虚拟机串口配置为 **主机管道模式** 3. 使用 `dmesg | grep tty` 检查串口错误日志[^1] 4. 测试物理环回:短接 TX/RX 线验证基础延迟 --- ### 相关问题 1. 如何精确测量 CuteCom 从点击发送到数据到达目标设备的完整延迟? 2. 在 115200 波特率下,虚拟串口环境的延迟会降低多少? 3. Linux 下有哪些比 CuteCom 延迟更低的串口调试工具? 4. VirtualBox 的 "主机设备" 和 "主机管道" 模式对延迟有何不同影响? 5. 如何通过 Python 脚本实现自动串口延迟测试? [^1]: 引用自 CuteCom 配置指南,包含设备选择、参数设置和故障排查方法。 [^3]: 引用自 Ubuntu/Kali 使用注意事项,强调共地线连接和 Char delay 参数的影响。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值