minicom实现串口通信
openSUSE    2016-11-27 23:09:11    159    0    0
tianwaifeixian   openSUSE

因为操作系的原因

把u-boot.bin烧写进开发板后 无法在shell里面看到u-boot启动的过程和u-boot的命令行

 

各种的搜索各种的问 最后还是解决了 虽然耗时好几个小时 虽然把一锅的中药熬糊了我都不知道~~~~

解决方法:

sudo zypper in minicom minicom-lang​

设置内容:

具体解决过程:

用oflash烧写u-boot.bin到开发板(nor启动模式)

xuan@SUSE:~/src> sudo oflash JZ2440资料光盘_20161027/bin/uboot/u-boot.bin
+---------------------------------------------------------+
| Flash Programmer v1.3 for OpenJTAG of www.100ask.net |
| OpenJTAG is a USB to JTAG & RS232 tool based FT2232 |
| This programmer supports both of S3C24X0 & S3C6410 |
| Author: Email/MSN(thisway.diy@163.com), QQ(17653039) |
+---------------------------------------------------------+
Usage: 
1. oflash, run with cfg.txt or prompt
2. oflash [file], write [file] to flash with prompt
3. oflash [-f config_file]
4. oflash [jtag_type] [cpu_type] [flash_type] [read_or_write] [offset] [file]
Select the JTAG type: 
0. OpenJTAG
1. Dongle JTAG(parallel port)
2. Wiggler JTAG(parallel port)
Enter the number: 0
Select the CPU:
0. S3C2410
1. S3C2440
2. S3C6410
Enter the number: 1
'ft2232' interface using libftdi with 'jtagkey' layout (1457:5118)
current latency timer: 2
FTDI chip type: 2 "2232C"S3C2440 detected, cpuID = 0x0032409d
[Main Menu]
 0:Nand Flash prog 1:Nor Flash prog 2:Memory Rd/Wr 3:Exit 
Select the function to test:1
Detect Nor Flash ...
MXIC MX29LV160B 
Size: 2 MB
Image Size: 0x306ac
Available Target Offset:
Bank # 1: MXIC MX29LV160B FLASH (16 x 16) Size: 2 MB in 35 Sectors
 AMD Standard command set, Manufacturer ID: 0xC2, Device ID: 0x2249
 Erase timeout: 30000 ms, write timeout: 100 ms
Sector Start Addresses:
00000000 00004000 00006000 00008000 00010000 
00020000 00030000 00040000 00050000 00060000 
00070000 00080000 00090000 000A0000 000B0000 
000C0000 000D0000 000E0000 000F0000 00100000 
00110000 00120000 00130000 00140000 00150000 
00160000 00170000 00180000 00190000 001A0000 
001B0000 001C0000 001D0000 001E0000 001F0000 
Input target offset:0
Erasing ....... done
write ...
100%done​

到这里发现启动后我的笔记本系统shell无法显出 视频教程里面的u-boot命令行界面


----------------------

xuan@SUSE:~> lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 1bcf:2883 Sunplus Innovation Technology Inc. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 04ca:0082 Lite-On Technology Corp. 
Bus 003 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 003 Device 002: ID 03eb:3301 Atmel Corp. at43301 4-Port Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub​


xuan@SUSE:~> lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 1bcf:2883 Sunplus Innovation Technology Inc. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 04ca:0082 Lite-On Technology Corp. 
Bus 003 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 003 Device 002: ID 03eb:3301 Atmel Corp. at43301 4-Port Hub
Bus 003 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub​


到这里可以证明ubs转串口是可以被系统识别的(11行)

查找被识别的串口信息

xuan@SUSE:~> dmesg | grep usb > dmesg-grep-usb.txt
xuan@SUSE:~> cat -n dmesg-grep-usb.txt | grep 067b
 60 [ 256.200267] usb 3-1: New USB device found, idVendor=067b, idProduct=2303
 72 [ 1309.814485] usb 3-1: New USB device found, idVendor=067b, idProduct=2303​



这里看到串口在ttyUSB0位置 只要让系统shell识别到这个位置就应该可以了

xuan@SUSE:~> cat -n dmesg-grep-usb.txt | grep tty*
 69 [ 257.285878] usb 3-1: pl2303 converter now attached to ttyUSB0
 76 [ 1309.815436] usb 3-1: pl2303 converter now attached to ttyUSB0​



然后是各种的找啊 论坛 google 最后在IBM文档库偶然发现了个叫minicom的东东 看起来有点意思
ibm
安装软件试试

sudo zypper in minicom minicom-lang​


----------------------------------------------------------------------------
minicom设置
第一次设置把/dev/ttyUSB0设置成/dev/tty1了 怎么也找不到开发板 我去~
正确的设置:
/dev/ttyUSB0
波特率115200
=================================================

具体实现方法:

ubuntu下USB串口的使用---minicom
http://huangchuanlong.blog.163.com/blog/static/1470902020111013659576/

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

一、安装minicom:

使用以下命令:
# sudo apt-get install minicom

它会把相关的依 赖包(lrzsz)也安装上。但是如果使用ubuntu 8.10以前的版本可能就要单独安装lrzsz软件包了(lrzsz包括了x/y/zmodem协议)。否则在通过串口用xmodem协议烧写内核时会提 示没有xmodem协议,所以这时就要安装lrzsz软件包了:
# sudo apt-get install lrzsz
然后就可以正常地使用minicom通过串口烧写内核了。

二、配置minicom:

1、在使用minicom之前,首先要保证你对串口有读/写的权限。我们知道,Linux的设备对应于/dev/目录中的某个文件,串口COM1对应ttyS0,COM2对应ttyS1,查看你对COM1的权限:
$ ls -l /dev/ttyS0

说明:对于USB串口:$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 4, 64 2009-08-01 11:05 /dev/ttyS0

crw-rw---- 1 root dialout 188, 0 2011-04-06 19:32 /dev/ttyUSB0
2、正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置。
# sudo minicom -s

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

然后对波特率,数据位和停止位进行配置,键入"E",波特率选为115200 8N1(数据位8,奇偶校验无,停止位1),硬/软件流控制分别键入"F"和"G",并且都选No。在确认配置正确之后,可键入回车返回上级配置界面,并 将其保存为默认配置(即save setup as dfl)。最后,选择"Exit from Minicom"命令退出。

具体的配置信息如下所示:
Serial port setup [Enter]
+-------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Program -: |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+

###########
#注意:如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0。
############

串口打印接收:然后重启minicom(即直接在shell下执行 # minicom 命令)就可以进入minicom控制台,使刚才的配置生效,再连上开发板的串口线后,就可以在minicom中打印出正确的串口信息了,即接收串口信息。

minicom菜单:在控制台下通过组合键Ctrl+A Z可以进入minicom菜单。组合键的用法是:先按Ctrl+A组合键,然后松开,再按Z键。另外还有一些常用的组合键。
(1)S键:发送文件到目标系统中;
(2)W键:自动卷屏。当显示的内容超过一行之后,自动将后面的内容换行。查看内核启动信息时很有用。
(3)C键:清除屏幕的显示内容;
(4)B键:浏览minicom的历史显示;
(5)X键:退出mInicom,会提示确认退出。Q键:quit with no reset

(6)O键:配置minicom。比如刚才Serial port setup及下文的下载上传文件路径等。

3、配置文件所在目录
Ctrl + A --> O
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols -|
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
+--------------------------+

选择"Filenames and paths"
+-----------------------------------------------------------------------+
| A - Download directory : /home/crliu |
| B - Upload directory : /tmp |
| C - Script directory : |
| D - Script program : runscript |
| E - Kermit program : |
| F - Logging options |
| |
| Change which setting? |
+-----------------------------------------------------------------------+

(1)A - download 下载文件的存放位置(开发板 ---> PC)
开发板上的文件将被传输到PC机上的/home/crliu目录下。
(2)B - upload 从此处读取上传的文件(PC ---> 开发板)
PC机向开发板发送文件,需要发送的文件在/tmp目录下(PC机上的目录)。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。

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

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

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

1、# lsmod | grep usbserial
如果有usbserial,说明系统支持USB转串口。

2、插上USB转串口,在终端输入命令#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
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"方式为"Auto detect",勾选"Connect at power on",点"Finish"完成。

(5)然后在上面minicom的配置中设置Serial Device: /dev/tty0或者Serial Device: /dev/ttyS0,重启开发板,这样就可以正常运行minicom了。

 

 本文参考链接:

https://www.ibm.com/developerworks/cn/linux/l-beagle-board/#resources

http://huangchuanlong.blog.163.com/blog/static/1470902020111013659576/

本文图片储存于:http://www.tietuku.com/

youtube视频地址:https://www.youtube.com/watch?v=ovQSqaAiXPY&feature=youtu.be

---------------------------------------------------------

听说putty在linux版本下也可可以实现串口通讯

项目地址:https://github.com/larryli/putty

官方下载页面:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

有空试试~ 

从源里面安装的putty无法通讯 设置/dev/ttyUSB0 115200也不行

上一篇: 小柴胡汤

下一篇: oflash/Failed to open ftdi device

159 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航