查看新增串口、USB设备
注意:虚拟机环境下的ubuntu默认情况下是不能自动识别的,需要在虚拟机窗口右下角点击"Prolific USB-Serial Controller",然后选择"Connect(Disconnect from Host)",这样才能被ubuntu系统识别。
1) 显示已经加载到内核中的模块的状态信息
# lsmod
输入#lsmod先看看能否检测到这个设备,就看有没有pl2303字眼可以了。如果有,则不需要再装驱动。
另外如果有的话最好再用dmesg| grep usb查找如果看到:
drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic”
就说明设备已被识别,然后往下看
drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303
usb 2-2: PL-2303 converter now attached tottyUSB0 (or usb/tts/0 for devfs)
如果没有则需要驱动程序,一般硬件厂商都会提供,如果真的没有的话就只有到网上下载了,一般2.6内核以上的都支持。
安装完毕后再输入这个命令瞧瞧,是否安装成功。
说明我的usb转串口芯片是PL-2303,对应系统设备是dev/usb/ttUSB0,最后 只需在minicom配置文件里将端口改
成/dev/usb/ttyUSB0就可以使用了:)
# lsmod | grep usbserial
如果有usbserial,说明系统支持USB转串口。
2) 查看当前已连接的usb设备
# lsusb
3) 查看usb转串口、串口的安装状态
# dmesg | grep ttyUSB*
# dmesg | grep ttyS*
例如,在终端输入:dmesg | grepttyS*显示从系统启动到现在串口插入拔出的信息,然后我在电脑上插入一个usb转rs232线,再在终端输入:dmesg | grepttyS* ,会显示:usb 2-2.1:pl2303 converter now attached tottyUSB0;可以通过此法确定我新插入的串口线对应的串口号。
一般USB转串口设备/dev/ttyUSB*,如果是普通的串口设备会是/dev/ttyS*
4) 查看串口名称使用
USB转串口设备/dev/ttyUSB*,如果是普通的串口设备会是/dev/ttyS*。般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS* ,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的;
# ls -l /dev/tty*
# ls -l /dev/ttyS*
# ls -l /dev/ttyUSB*
5) 查看设备
# cat /proc/devices
6) 查看串口驱动
# cat /proc/tty/driver/serial
测试串口
1) 查看串口是否可用
可以对串口发送数据比如对com1口,echo lyjie126 > /dev/ttyS0
2) 测试自己可以将TX RX短接。
开两个终端:
一个cat /dev/ttyS0接收
另一个echo “字符” > /dev/ttyS0发送数据
先发后收。
3) 或者两个USB转UART,在同一台/不同电脑上开两个终端
Minicom的安装和使用
minicom是linux下串口通信的软件,它的使用完全依靠键盘的操作,虽然没有“超级终端”那么易用,但是使用习惯之后读者将会体会到它的高效与便利,下面将讲解minicom的安装和配置。
安装
在终端中输入sudoapt-get install minicom
PS:ubuntu 现在做的真是没话说,相当的实用和智能啊,把相关的依赖包(lrzsz)都相互关联并且安装上去了。但是如果使用ubuntu 8.10以前的版本可能就要单独安装lrzsz软件包了(lrzsz包括了x/y/zmodem协议)。也就是说,在通过串口用xmodem协议烧写内核时会提示没有xmodem协议,所以这时就要安装lrzsz软件包了:
# sudo apt-get install lrzsz
然后就可以正常地使用minicom通过串口烧写内核了。
配置
1、 在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,Linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,使用以下命令来查看你对COM1的权限:
$ ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 2009-08-01 11:05 /dev/ttyS0
可以看到,它的属主是root。
但是正如上面显示,ttyS0这个设备是root所有的,所以,我们以普通用户身份打开minicom是没法访问该文件的。
2、 正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置
输入sudominicom –s。注意前边一定要加sudo阿,否则在配置完后,下图选择“Save setup as dfl”会出现cannot write to /etc/minicom/minirc.dfl的权限问题!
注意:对于串口设备不使用流控的,F选项一定要改为NO,不然终端只能打印从下位机发过来的信息,而不能接受键盘的输入
然后选择Exit是退出Minicom配置界面,进入使用界面
选择Exit fromMinicom是退出Minicom程序,回到Shell。
如果经过上面的步骤minicom还是不能正常工作,
出现如下错误提示:
# sudo minicom
minicom: cannot open /dev/ttyUSB0: 没有该文件或目录
这时可以尝试换一个USB口,然后再次操作以上流程。如果还是提示这个错误,那么可以使用下面的方法来解决。
这种方法是在硬件里添加串口设备,将window下的设备添加到虚拟机里。也就是说,要在window获得焦点的时候加入usb转串口,然后再到虚拟机下将这个设备添加进去,这时就可以在ubuntu下查看添加的这个设备的设备文件,一般是/dev/tty0或者 /dev/ttyS0。
这种方法其实是将window的usb转串口作为虚拟机的串口,所以就是tty0或者ttyS0了,而不是真正在ubuntu下加载的。
具体步骤如下:
(1)打开虚拟机环境,然后选择"VM-->Settings(Ctrl+D)"。
(2)点"Add",进入添加硬件向导,选择"Serial Port",点"Next"。
(3)选择第一项"Use physical port on the host",点"Next"。
(4)选择"Physical serial port"方式为"Autodetect",勾选"Connect at power on",点"Finish"完成。
(5)然后在上面minicom的配置中设置SerialDevice: /dev/tty0或者Serial Device: /dev/ttyS0,重启开发板,这样就可以正常运行minicom了。
使用
命令行启动minicom的参数
更多的参数,参见"man minicom"的输出。
-s
设置。 root 使用此选项在/etc/minirc.dfl中编辑系统范围的缺省值。使用此参数后,minicom 将不进行初始化,而是直接进入配置菜单。如果因为你的系统被改变,或者第一次运行minicom时,minicom不能启动,这个参数就会很有用。对于多数系统,已经内定了比较合适的缺省值。
-o
不进行初始化。minicom 将跳过初始化代码。如果你未复位(reset)就退出了minicom,又想重启一次会话(session),那么用这个选项就比较爽(不会再有错误提示:modem is locked ---- 注)。但是也有潜在的危险:由于未对lock文件等进行检查,因此一般用户可能会与uucp之类的东东发生冲突......也许以后这个参数会被去掉。现在姑且假定,使用modem的用户对自己的行为足够负责。
-m
用Meta或Alt键重载命令键。在1.80版中这是缺省值,也可以在minicom 菜单中配置这个选项。不过若你一直使用不同的终端,其中有些没有Meta或Alt键,那么方便的做法还是把缺省的命令键设置为Ctrl-A,当你有了支持 Meta或Alt键的键盘时再使用此选项。Minicom假定你的Meta键发送ESC前缀,而不是设置字符最高位的那一种(见下)。
-M
跟“-m”一样,但是假定你的Meta键设置字符高端的第八位(发送128+字符代码)。
-z
使用终端状态行。仅当终端支持,并且在其termcap或terminfo数据库入口中有相关信息时才可用。
-l
逐字翻译高位被置位的字符。使用此标志, minicom将不再尝试将IBM行字符翻译为ASCII码,而是将其直接传送。许多PC-Unix克隆不经翻译也能正确显示它们(Linux使用专门的模式:Coherent和Sco)。
-w
在启动的时候就自动换行,这样启动之后不用运行<C-a> w进行设置了,详细参考后面。
-a
特性使用。有些终端,特别是televideo终端,有个很讨厌的特性处理(串行而非并行)。minicom缺省使用‘-a on’,但若你在用这样的终端,你就可以(必须!)加上选项‘-a off’。尾字‘on’或‘off’需要加上。
-t
终端类型。使用此标志,你可以重载环境变量TERM,这在环境变量MINICOM 中使用很方便;你可以创建一个专门的 termcap 入口以备minicom 在控制台上使用,它将屏幕初始化为raw模式,这样,连同‘-l’标志一起,就可以不经翻译而显示IBM行字符。
-c
颜色使用。些终端(如Linux控制台)支持标准ANSI转义序列色彩。由于termcap显然没有对于色彩的支持,因而minicom 硬性内置了这些转义序列的代码。所以此选项缺省为off。使用‘-c on’可以打开此项。把这个标志,还有‘-m’放入MINICOM环境变量中是个不错的选择。
-S
脚本。启动时执行给定名字的脚本。到目前为止,还不支持将用户名和口令传送给启动脚本。如果你还使用了‘-d’选项,以在启动时开始拨号,此脚本将在拨号之前运行,拨号项目入口由‘-d’指明。
-p
要使用的伪终端。它超载配置文件中定义的终端端口,但仅当其为伪tty设备。提供的文件名必须采用这样的形式:(/dev/)tty[p-z][0-f]
-C
文件名。启动时打开捕获输出到文件。
-8
不经修改地传送8位字符。“连续”意指未对地点/特性进行真正改变,就不插入地点/特性控制序列。此模式用于显示8位多字节字符,比如日本字(TMD!应该是中国字!!)。不是8位字符的语言都需要(例如显示芬兰文字就不需要这个)。
- -w: 启动minicom的时候,开启自动换行:
如果不加这个项,那么在minicom和pc交互的时候中键入命令超过一行时候会被截断,(这时候可以通过<C-a> w来开和关切换截断行功能).
- -c on: 启动minicom的时候,显示颜色:
这样,启动之后我们会发现显示的内容不是黑白的了。
- -C <filename>: 启动minicom的时候,自动创建日志捕捉文件<filename>:
这样,启动之后,所在minicom的输出都会在<filename>中保留一份,如果原来文件存在,则追加,不存在则创建一个。
- -m: 启动minicom的时候,将命令键修改成Meta键(<C-a>变成[Alt]或者[ESC]等):
这样,我们可以取代用<C-a> *发送命令的方式,将<C-a>替换成[Alt]或者[ESC].
- -S <filename>: 启动minicom的时候,指定运行的脚本:
这里,<filename>是你的脚本文件的名字,应该指定绝对路径,否则就会在你启动minicom的路径下寻找。
Minicom的命令汇总:
组合键的用法是:先按Ctrl+A组合键,然后松开这两个键,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。这个功能在查看内核的启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。
Minicom是基于窗口的。要弹出所需功能的窗口,可按下Ctrl-A (以下 使用C-A来表示Ctrl-A),然后再按各功能键(a-z或A-Z)。先按C-A,再 按'z',将出现一个帮助窗口,提供了所有命令的简述。配置minicom (-s 选项,或者C-A、O)时,可以改变这个转义键,不过现在我们还 是用Ctrl-A吧。
这里,只给出很少的命令,更多的交互命令参见"<C-a> z"的帮助输出。
- 查看帮助:<C-a> z. 这样会显示所命令列表,便于查找。
- 配置选项:<C-a> o.
- 回到shell: <C-a> j. 这样minicom会在后台stop,直到fg将它调到前台。
- 开/关捕捉minicom输出到文件:<C-a> l. 这样会打开/关闭捕捉输出功能,捕捉的输出会存放在一个你选择的文件中。
- 运行脚本:<C-a> g:
- 退出minicom:<C-a> x. 这样会退出minicom
以下键在所有菜单中都可用:
UP arrow-up 或 'k'
DOWN arrow-down 或 'j'
LEFT arrow-left 或 'h'
RIGHT arrow-right 或 'l'
CHOOSE Enter
CANCEL ESCape.
屏幕分为两部分:上部24行为终端模拟器的屏幕。 ANSI或VT100转义
序列在此窗口中被解释。若底部还剩有一行,那么状态行就放在这儿;
否则,每次按C-A时状态行出现。 在那些有专门状态行的终端上将会
使用这一行,如果termcap信息完整且加了-k标志的话。
下面按字母顺序列出可用的命令:
C-A 两次按下C-A将发送一个C-A命令到远程系统。如果你把"转义字符"
换成了C-A以外的什么字符,则对该字符的工作方式也类似。
A 切换"Add Linefeed"为on/off。若为on,则每上回车键在屏幕上
显示之前,都要加上一个linefeed。
B 为你提供一个回卷(scroll back)的缓冲区。可以按u上卷,按d下卷,
按b上翻一页,按f下翻一页。也可用箭头键和翻页键。可用s或S键
(大小写敏感)在缓冲区中查找文字串,按N键查找该串的下一次出现。
按c进入引用模式,出现文字光标,你就可以按Enter键指定起始行。
然后回卷模式将会结束,带有前缀'>'的内容将被发送。
C 清屏。
D 拨一个号,或转向拨号目录。
E 切换本地回显为on/off (若你的minicom版本支持)。
F 将break信号送modem。
G 运行脚本(Go)。运行一个登录脚本。
H 挂断。
I 切换光标键在普通和应用模式间发送的转义序列的类型(另参下面
关于状态行的注释)。
J 跳至shell。返回时,整个屏幕将被刷新(redrawn)。
K 清屏,运行kermit,返回时刷新屏幕。
L 文件捕获开关。打开时,所有到屏幕的输出也将被捕获到文件中。
M 发送modem初始化串。若你online,且DCD线设为on,则modem被初始化
前将要求你进行确认。
O 配置minicom。转到配置菜单。
P 通信参数。允许你改变bps速率,奇偶校验和位数。
Q 不复位modem就退出minicom。如果改变了macros,而且未存盘,
会提供你一个save的机会。
R 接收文件。从各种协议(外部)中进行选择。若filename选择窗口和下
载目录提示可用,会出现一个要求选择下载目录的窗口。否则将使用
Filenames and Paths菜单中定义的下载目录。
S 发送文件。选择你在接收命令中使用的协议。如果你未使文件名选择
窗口可用(在File Transfer Protocols菜单中设置),你将只能在一
个对话框窗口中写文件名。若将其设为可用,将弹出一个窗口,显示
你的上传目录中的文件名。可用空格键为文件名加上或取消标记,用
光标键或j/k键上下移动光标。被选的文件名将高亮显示。 目录名在
方括号中显示,两次按下空格键可以在目录树中上下移动。最后,按
Enter发送文件,或按ESC键退出。
T 选择终端模拟:ANSI(彩色)或VT100。此处还可改变退格键,打开或
关闭状态行。
W 切换linewrap为on/off。
X 退出minicom,复位modem。如果改变了macros,而且未存盘,会提供
你一个save的机会。
Z 弹出help屏幕。
关于minicom的脚本:
可以参考man手册man runscript.交互命令中可以运行"<C-a> G"来运行脚本。
- 注释是'#'开始的。
- send命令中的字符串,有\c就不会发送默认的\r了。例:send "ls \c"就不会自动回车,这里'\c'也可以在前面。 目前发现,脚本功能比较弱。在minicom原代码中有简单的例子:scriptdemo和unixlogin,可以直接在linux运行runscript.
- 可以指定minicom的脚本运行程序: 作为脚本解释器的程序。缺省是“runscript”,也可用其它的东东(如: /bin/sh 或 "expect",这样就可以用shell或者其他的脚本了_)。Stdin和Stdout连接到modem,Stderr连接到屏幕。
问题
minicom: cannot open /dev/tty8: Permission denied
一般使用USB口,无论USB转什么口,串口之类的,启动时容易出现:/dev/ttyUSB0 permission denied.
因为一般情况下不是root用户,对端口没有权限.
遇到这种情况,我一般这样做:
sudo chmod 777 /dev/ttyUSB0
修改权限为可读可写可执行,但是这种设置电脑重启后,又会出现这种问题,还要重新设置.因此查询资料,可以用下面这条指令:
sudo usermod -aG dialout wsh
其中wsh是我的用户名,换成你想用USB的用户名即可.把此用户名加入dialout用户组,然后注销下电脑,即可.这样下次重启也不用修改权限了
Cannot write to etc/minicom/minirc.dfl
没有权限导致,使用sudo minicom –s
Device /dev/ttyS0 is locked、Device /dev/ttyS0lock failed: Operation not permitted.
[[email protected] ~]# minicom
Device /dev/ttyS0 is locked. 或者出现 Device /dev/ttyS0 lock failed: Operation not permitted.
解决方法:这个问题一般是上次直接关闭putty,而没有关闭minicom,或者是putty死机的情况重新打开putty后会出现这种情况,相当于minicom还在后台执行,只是我们没有发觉而已,这里我们执行ps -aux 查看一下是否有minicom进程,获取minicom的进程号,kill -9命令结束后台的minicom,然后启动minicom就会解决问题了
如果遮掩不能解决问题,可能是因为系统自动在目录/var/lock中生成了lockfile而导致,我们只要进入/var/lock,删除lockfile,那么minicom又可以正常启动了。
注意:非正常关闭minicom,会在/var/lock下创建几个文件LCK*,这几个文件阻止了minicom的运行,将它们删除后即可恢复
minicom只能打印下位机信息不能接受键盘的输入
解决方法:这里是由于我们minicom配置没有配置好,重新minicom -s进行Serial port setup配置,Hardware Flow Control : No ,Software FlowControl : No,将软硬控制流都设置为NO。
minicom环境下黑白屏显示问题
也是我解决完问题4进入minicom出现的问题,当时感觉很郁闷,因为文件显示没有颜色区分,文件夹、文件、可执行文件等都是一种颜色,白字黑底色。这样当然不行,所以网上搜了很长时间。
进入mincom时采用这个命令minicom-c on代替minicom就可以进入彩色界面了
具体原因我也了解了网上的说法,不过配置里面没有找到相关的设置。
有些终端(如Linux控制台)支持标准ANSI转义序列色彩,minicom硬性内置了这些转义 序列的代码,但是此选项缺省为off,需要使用‘-c on’打开此项。
不过每次都输入minicom-c on 有点烦哦。使用环境变量吧,export minicom="minicom -c on" 以后想要打开对色彩的支持就输入minicom 即可