原文地址 https://www.cnblogs.com/zqb-all/p/9786836.html
minicom 简介
配置权限
自动设置设备名
自动保存 log
暂停输出
打开 minicom 时间戳
发送接收文件
自动换行
更多功能
源码
minicom 是 linux 下一款常用的串口调试工具。ubuntu 环境下,使用如下命令安装
sudo apt-get install minicom
使用前需要进行配置,执行
sudo minicom -s
可打开 minicom 并进入配置模式,使用方向键,选择需要配置的项目,如 Serial port setup ,回车进入配置,可以看到多个配置项,此时光标在最下方。
需要修改某个配置,则输入对应的字母,光标即会跳转到对应的项,编辑后,回车确认,光标再次回到最下方。
一般而言,需要修改
A - Serial Device
E - Bps/Par/Bits
F - Hardware Flow Control
A 配置项,指定 USB 设备。一般 USB 转串口会生成设备 / dev/ttyUSBx,x 是数字序号。可以执行以下命令确认下
ls -l /dev/ttyUSB*
E 配置项,根据实际情况,指定波特率等参数
F 配置项,硬件流控,要看你的设备是否有。如果没有,或者你不确定的话,可以先关掉,将默认的 Yes 切换为 No.
修改好之后,回车退到上一个界面,此时记得往下,选择 Save setup as dfl 将刚刚的修改保存为默认配置,避免下次使用还需要再次配置。
最后,选择 Exit 会退出配置界面,并打开 minicom。选择 Exit from Minicom 则会直接退出 minicom。
minicom 使用前缀按键 Ctrl-A,即执行特殊操作时,都需要先按 Ctrl+A,再按某个按键使用对应的功能。
Ctrl+A,再按 Z, 可查看帮助,从帮助可以看到,退出时,要先按 Ctrl+A,再按 X
minicom 本身不需要 sudo 权限,但因为要打开串口设备 / dev/xxx ,所以一般会需要使用 sudo 来启动 minicom。
这里我们可以修改下串口设备的权限,这样以后就不用使用 sudo 了。
简单粗暴地使用 chmod 命令修改
sudo chmod 666 /dev/ttyUSB0
修改配置文件
sudo vim /etc/udev/rules.d/70-ttyusb.rules
增加一行
KERNEL=="ttyUSB[0-9]*", MODE="0666"
修改后,需要重新插拔设备,以重新生成设备节点。
如果日常只用一个设备,设备名固定是 / dev/ttyUSB0,那每次直接打开 minicom 即可。
但当你可能需要使用多个串口时,问题就来了,每次需要先查看下设备名
ls /dev/ttyUSB*
再配置下 minicom,手工改成这个设备,才能使用。一点都不方便。
这里给出两种解决方式
首先建立配置文件
sudo vim /etc/minicom/minirc.ttyUSBx
内容如下
# Machine-generated file - use "minicom -s" to change parameters.
pu port /dev/ttyUSB0
pu rtscts No
编写脚本~/.myminicom.sh,自动检测设备,并根据选择的设备,修改配置文件,再打开 minicom
com() {
ports=`ls /dev/ttyUSB*`
select port in $ports;do
if [ $port ]; then
echo "You select the choice '$port'"
port=${port##*/}
sed -i "s/\(pu port .*\/dev\/\).*/\1$port/" /etc/minicom/minirc.ttyUSBx
exec minicom ttyUSBx $@
break
else
echo "Invaild selection"
fi
done
}
在~/.bashrc 中引入此函数
echo 'source ~/.myminicom.sh' >> ~/.bashrc
source ~/.bashrc
即可直接使用命令 com 调用此函数,自动列出设备,按数字键选择即可。
研究下 mincom 的参数后,发现有更简单的实现方式,使用 minicom 的 - D 参数。
同样编写脚本~/.myminicom.sh
com() {
ports_USB=$(ls /dev/ttyUSB*)
ports_ACM=$(ls /dev/ttyACM*) #arduino
ports="$ports_USB $ports_ACM"
select port in $ports;do
if [ "$port" ]; then
echo "You select the choice '$port'"
minicom -D "$port" $@"
break
else
echo "Invaild selection"
fi
done
}
在~/.bashrc 中引入此函数
echo 'source ~/.myminicom.sh' >> ~/.bashrc
source ~/.bashrc
添加完毕后,可使用 com 命令调用。
zhuangqiubin@zhuangqiubin-PC:~$ com
1) /dev/ttyUSB0
2) /dev/ttyUSB1
#?
此时输入数字,选择要的打开的串口设备,回车即可。
让 minicom 自动保存 log,可以方便调试。
查看参数,minicom 可以使用 -C 参数指定保存 log 文件。于是完善脚本,自动把 log 以日期命名,保存到 / tmp 目录下。
注意,tmp 目录关机即清空,如果想持久保存 log,需要修改到其他目录。
修改后脚本如下
com() {
ports_USB=$(ls /dev/ttyUSB*)
ports_ACM=$(ls /dev/ttyACM*) #arduino
ports="$ports_USB $ports_ACM"
datename=$(date +%Y%m%d-%H%M%S)
select port in $ports;do
if [ "$port" ]; then
echo "You select the choice '$port'"
minicom -D "$port" -C /tmp/"$datename".log "$@"
break
else
echo "Invaild selection"
fi
done
}
Ctrl+A 是 mimicom 的特殊功能前缀按键,但还有另一个很实用的作用,就是暂停屏幕输出。
在设备开始大量输出 log 时,基本看不清屏幕内容。此时可以按 Ctrl+A,暂停输出,方便查看所需 log。
在 minicom 中,按下 Ctrl+A,再按 N,即可激活时间戳,在每行 log 前添加当前系统的时间戳。
用于观察启动时间之类的,还是比较方便。
设备端支持的话,按下 Ctrl+A,再按 S,即可向设备端发送文件。
按 Ctrl+A,再按 R,可接收文件。
当你的 log 中可能存在,单行长度超过屏幕宽度的 log 时(比如启动时打印的 kernel cmdline),可以使用 mimicom 的自动换行功能。
在启动 minicom 时加上 -w 选项,或者在 minicom 中,按 Ctrl+A 再按 W。
可以使用 minicom -h 查看,也可在 mincon 中,按 Ctrl+A 再按 Z 查看。
有什么其他使用功能或技巧,也欢迎留言告诉我。
文中的代码非最新版本,请访问 https://github.com/zqb-all/EasierMinicom 获取带有更多功能的最新版本。
如果觉得本文对你有帮助的的话,顺手点下推荐哦~~
本文地址:https://www.cnblogs.com/zqb-all/p/9786836.html
公众号:https://sourl.cn/Xcq4eW