0
点赞
收藏
分享

微信扫一扫

Ubuntu工具---minicom安装和使用

40dba2f2a596 2022-04-15 阅读 161

参考自:https://blog.csdn.net/qq_41076734/article/details/116885672
    https://www.imooc.com/article/254136
    https://blog.csdn.net/u011559046/article/details/118867666

1. 前言

在嵌入式开发中,串口打印是工程师最常用也是最好用的调试方式,所以串口终端软件是一个嵌入式开发者必备的工具,一般我们都习惯使用Windows下的串口终端软件(譬如SecureCRT、Xshell、putty等等),今天我介绍一款Ubuntu下的串口终端软件 minicom。

2. 安装

在Ubuntu终端中输入命令 sudo apt-get install minicom 进行安装。

3. 配置

第一次启动时,在Ubuntu终端中输入 sudo minicom -s ,对minicom进行第一次的配置。

注意:前边一定要加sudo,否则在配置完后会出现 cannot write to /etc/minicom/minirc.dfl 的权限问题!
请添加图片描述
在弹出的对话框内,选择 Serial port setup 一项,然后按下 a 键,修改为 /dev/ttyUSB0,然后按下回车; //之所以选择 ttyUSB0,是因为我将串口插到主机上后在 dev 目录下多出来的就是 ttyUSB0

再按 e,修改为 115200 8N1 (波特率:115200,数据位:8,奇偶校验位:N 无,停止位:1),设置传输的比特率等设置,然后按下回车;

再按 f,把 Hardware Flow Control 修改为No,然后按下回车;

再在刚才的主菜单中选择 Save setup as dfl,保存为默认配置,最后选择Exit from minicom,退出配置菜单。
请添加图片描述
这个配置过程和内容,与Windows下的串口终端软件的配置没什么区别,就是设置串行端口号、波特率、流控。

注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复。

4. 启动

在第三步配置完成并保存的情况下,在终端中执行命令 sudo minicom 来启动minicom,将开发板与电脑用串口线连接起来并上电启动,这时 minicom 界面就会有打印出来。

还可以通过命令 sudo minicom -D /dev/ttyUSB0 -s xr872 在启动minicom时指定端口号和配置文件(需存在 /etc/minicom/minirc.xr872 文件)。

此时会有打印输出,但是没有换行或者没有回显,还需要对minicom进行配置,如下所示:
请添加图片描述在这里插入图片描述在这里插入图片描述

5. 退出

首先按下CTRL+A,然后输入Z,进入菜单项,按下X键退出minicom。

6. 配置权限

注意:minicom 本身不需要sudo权限,但因为要打开串口设备/dev/xxx ,所以一般会需要使用sudo来启动minicom。

这里我们可以修改下串口设备的权限,这样以后就不用使用sudo了。

方式一:使用命令更改

简单粗暴地使用chmod命令修改

sudo chmod 666 /dev/ttyUSB0

方式二:配置udev规则(推荐)

修改配置文件

sudo vim /etc/udev/rules.d/70-ttyusb.rules

增加一行

KERNEL=="ttyUSB[0-9]*", MODE="0666"

修改后,需要重新插拔设备,以重新生成设备节点。

7. 自动设置设备名

如果日常只用一个设备,设备名固定是 /dev/ttyUSB0,那每次直接打开minicom即可。

但当你可能需要使用多个串口时,问题就来了,每次需要先查看下设备名

ls /dev/ttyUSB* 

再配置下minicom,手工改成这个设备,才能使用。一点都不方便。

这里给出了解决方式:

使用参数指定设备(推荐)

研究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 命令调用。

使用效果

houxiaoni@houxiaoni-Haier-PC:~$ com
1) /dev/ttyUSB0
2) /dev/ttyUSB1
#?

此时输入数字,选择要的打开的串口设备,回车即可。

8. 自动保存log

让 minicom 自动保存log,可以方便调试。

查看参数,minicom可以使用 -C 参数指定保存log文件。于是完善脚本,自动把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 ~/Log/"${port##*/}-$datename".log "$@"
            break
        else
            echo "Invaild selection"
        fi
    done 
}        

下面还介绍了两种保存log的方式,这两种方式都需要每次进行设置,不如上面使用脚本的方式便捷。

方法一:

通过如下命令可以使minicom 从系统获取准确的时间保存log

sudo minicom -c on -C Log/com-log-$(date +%Y-%m-%d_%H:%M:%S).log

sudo minicom -D /dev/ttyUSB0 -C Log/com-log-$(date +%Y-%m-%d_%H:%M:%S).log (指定端口号)

方法二:

首先打开minicom,然后按一下ctrl + a,再按z键,会出现下面这个界面:
在这里插入图片描述看到Capture on/off这个选项,按下L键,会出现下面的窗口:
在这里插入图片描述
提示输入一个Capture的文件名,默认就是minicom.cap,上图我做了修改,然后按一下回车,就可以将log信息保存到一个文件中了,这样遇到log相对较多也能抓取完整,也方便我们查看。

9. 更多

(1)暂停输出

Ctrl+A 是mimicom的特殊功能前缀按键,但还有另一个很实用的作用,就是暂停屏幕输出。
在设备开始大量输出log时,基本看不清屏幕内容。此时可以按 Ctrl+A,暂停输出,方便查看所需log。

Ctrl+A 进入特殊功能:

  • 按 Z 键:进入设置菜单
  • 按 O 键:打开配置选项
  • 按 W 键:自动卷屏。当显示的内容超过一行之後,自动将後面的内容换行。这个功能在查看内核的啓动信息时很有用
  • 按 C 键:清除屏幕的显示内容
  • 按 B 键:浏览minicom的历史显示
  • 按 X 键:退出minicom,会提示确认退出
  • 按 N 键:可激活时间戳,在每行log前添加当前系统的时间戳
  • 按 S 键:可向设备端发送文件
  • 按 R 键:可接收文件

(2)打开minicom时间戳

在minicom中,按下 Ctrl+A,再按 N,即可激活时间戳,在每行log前添加当前系统的时间戳。

用于观察启动时间之类的,还是比较方便。

(3)发送接收文件

设备端支持的话,按下 Ctrl+A,再按 S,即可向设备端发送文件。

按 Ctrl+A,再按 R,可接收文件。

(4)自动换行

当你的log中可能存在,单行长度超过屏幕宽度的log时(比如启动时打印的kernel cmdline),可以使用mimicom的自动换行功能。

在启动minicom时加上 -w 选项,或者在minicom中,按 Ctrl+A 再按 W。

(5)更多功能

可以使用 minicom -h 查看,也可在mincon中,按 Ctrl+A 再按 Z 查看。

(6)源码

文中的代码非最新版本,请访问 https://github.com/zqb-all/EasierMinicom 获取带有更多功能的最新版本。

10. 附录

网上提供的其他自动脚本,供以后参考使用。参考:EasierMinicom

com() {
	local ports_USB ports_ACM ports datename dev devs dev_count
	ports_USB=$(ls /dev/ttyUSB* 2>null | xargs -I {} basename {})
	ports_ACM=$(ls /dev/ttyACM* 2>null | xargs -I {} basename {})
	ports="$ports_USB $ports_ACM"

	#check lock
	devs=""
	dev_count=0
	for dev in ${ports}; do
		! ls /run/lock/*"${dev}"* &>/dev/null && {
			devs+="${dev} "
			((dev_count++))
		}
	done
	[ -z "$devs" ] && echo "No Unlock Devices" && return 0

	datename=$(date +%Y%m%d-%H%M%S)
	if [ $dev_count -eq 1 ]; then
		dev=$devs
	else
		#select dev to open
		echo "Please select one device: (Ctrl+C to abort)"
		select dev in $devs; do
			if [ "$dev" ]; then
				echo "You select the '$dev'"
				break
			else
				echo "Invaild selection"
			fi
		done
	fi

	out="/tmp/$(basename ${dev}).$datename.log"
	keep_dir="${HOME}/minicom_keep"

	minicom $dev -C "${out}" "$@"

	[ -f "${out}" ] && {
		echo log : "${out}"
		read -p "Keep it? [y|N]: " keep

		[ "${keep}" = 'Y' -o "${keep}" = 'y' ] && {
			read -p "Enter file name > " keep_file_name

			[ x"$keep_file_name" = x"" ] && keep_file_name=$(basename "${out}")

			mkdir -p "$keep_dir"
			cp "${out}" "${keep_dir}/$keep_file_name"
			echo "saved in $keep_dir/$keep_file_name"
		}
	}
	read -p "Vim it? [y|N]: " edit_vim

	[ "${edit_vim}" = 'Y' -o "${edit_vim}" = 'y' ] && vim "${out}"
}
  • 自动检测未锁定的设备,如果有多个则列出给用户选择,如果只有一个则直接使用。
  • 默人加载 /etc/minicom/minirc.${dev} 的配置文件。
  • 自动保存log到/tmp目录,退出时,询问是否要保存到另外的目录。

使用


echo "source $(pwd)/EasierMinicom.sh" >> ~/.bashrc

source ~/.bashrc

com
举报

相关推荐

0 条评论