ubuntu 下minicom和usb转串口


一、安装minicom:

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

PS:ubuntu现在做的真是没话说,相当的实用和智能啊,把相关的依赖包(lrzsz)都相互关联并且安装上去了。但是如果使用ubuntu8.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
crw-rw---- 1 root dialout 4, 64 2009-08-01 11:05 /dev/ttyS0
可以看到,它的属主是root。

2、正如在Windows中要配置超级终端一样,在使用minicom之前,先要对串口进行配置。
运行# sudo minicom -s

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

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


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

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

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

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 | grepttyUSB0,如果出现连接成功信息,则说明ubuntu系统已经识别该设备了。

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

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

例如,在终端输 入:dmesg| grep tty显示从系统启动到现在串口插入拔出的信息,让后我在电脑上插入一个usb转rs232线,再在终端输入:dmesg |grep tty ,会显示:usb 2-2.1:pl2303 converter now attached tottyUSB0;可以通过此法确定我新插入的串口线对应的串口号。

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",进入添加硬件向导,选择"SerialPort",点"Next"。

(3)选择第一项"Usephysical port on the host",点"Next"。

(4)选择"Physicalserial port"方式为"Auto detect",勾选"Connect at poweron",点"Finish"完成。

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



二、安装lrzsz

1、在PC上安装lrzsz:   sudo apt-get install lrzsz

2、交叉编译lrzsz并下载到开发板上:

     A.下载lrzsz源码包.

     B.解压缩后,到解压目录中执行./configure (tar -zxflrzsz-0.12.20.tar.gzcdlrzsz-0.12.20/;  ./configure )

     C.修改Makefile:

         有三个Makefile需要修改,分别是lrzsz-0.12.20/Makefile, lrzsz-0.12.20/lib/Makefile lrzsz-0.12.20/src/Makefile     

         将这三个Makefile中的所有gcc替代成你开发板所需要的交叉编译器,如mipsel-linux-gcc

        (即: CC = gcc     CPP = gcc-E  都改成 CC =mipsel-linux-gcc    CPP = mipsel-linux-gcc -E
     D.编译:make
     E.在lrzsz-0.12.20/src目录下会生成两个可执行文件lsz、lrz(或者sz、rz),把它们下载到开发板linux系统的/bin目录下。

三、使用lrzsz:
     1、 开发板-->PC机
           在开发板上输入 lsz filename ,然后会出现一个传输界面,传输完成后可以在你设置的默认下载目录Downloaddirectory里找到这个文件。

     2、PC机-->开发板
          在开发板上先进入/tmp 目录,然后输入lrz。
           # cd /tmp
           # lrz                                                             
           ?z waiting to receive.**B0100000023be50
           按Ctrl-A,再按s,选择zmoden,会出现一个选择文件的界面,选择你要传输的文件(按一下空格键选择目录,按两下空格键进入目录),回车后出现一个传输界面,传输完成后,便可以在开发板的/tmp目录下找到这个文件了。

|    Name            Program                Name U/D FullScr IO-Red. Multi  |
| A zmodem    /usr/bin/sz -vv-b             Y   U   N      Y      Y    |
| B ymodem    /usr/bin/sb-vv                Y   U   N      Y      Y    |
| C xmodem    /usr/bin/sx-vv                Y   U   N      Y      N    |
| D zmodem    /usr/bin/rz -vv -b-E          N   D   N      Y      Y    |
| E ymodem    /usr/bin/rb-vv                N   D   N      Y      Y    |
| F xmodem    /usr/bin/rx-vv                Y   D   N      Y      N    |
| G kermit    /usr/bin/kermit -i -l %l -b %b Y   U   Y      N      N    |
| H kermit    /usr/bin/kermit -i -l %l -b %b N   D   Y      N      N    |
| I ascii     /usr/bin/ascii-xfr-dsv        Y   U   N      Y      N    |

ubuntu下从PC机下载文件到开发板上:
1.在开发板的内核配置中,必须选上:openwrt->menuconfig->Basesystem-->busybox-->Miscellaneous Utilities-->rx
2.在mincom下,待开发板启动以后,运行: rx FILE 。##Receive a file using the xmodemprotocol。
3.Ctrl+A, S ,选择xmodem,就会跳出一个选择传送文件的界面,选择好文件后,回车。
4.若提示:Transfer incomplete
       READY: press any key to continue...
 就表明文件已成功下载到开发板的当前目录。  

报错:
root@BenNanoNote:/# rz
/bin/rz: line 1: syntax error: unexpected "("
解决方案:换成开发板上的编译工具编译。


minicom拓展

安装:
sudo apt-get install minicom

配置一:
配置使用命令:minicom -s
1.选择第三个菜单项,即"Serial port setup",根据目标板的串口通信参数设置.

  如果没有使用USB转串口,而是直接使用串口,那么SerialDevice要配置为/dev/ttyS0。
  对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无,停止位1),
  硬/软件流控制分别键入“F”“G”并且都选NO.
  在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置。(即save setupas dfl),之后重启minicom是刚才配置生效,在连上开发板的串口线后,就可在minicom中打印正确的串口信息了。

配置二:
    1 .在终端中输入minicom以启动minicom;
       2. 先按下Ctrl + a, 放开, 再按o, 出现配置菜单.

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

这时候可以打印串口的信息了,但是在通过串口用xmodem协议烧写内核时会提示没有xmodem协议。
所以还必须安装软件包:lrzsz
   sudo apt-get installlrzsz

  这时候就可以正常地用minicom通过串口烧写内核了。


http://www.cnblogs.com/xiaotlili/archive/2011/08/03/2126081.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ymodem是一种常用于串行通信的文件传输协议,它是Xmodem协议的改进版。Ymodem具备更高的传输速度和更好的错误检测与纠正能力。 Ymodem协议基于C语言实现比较简单,可以通过串口通信库函数或者底层串口通信接口来实现。下面是一个简单的Ymodem发送文件的C语言代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define PACKET_SIZE 1024 // Ymodem SOH(128 bytes) #define SOH 0x01 // Ymodem EOT #define EOT 0x04 // Ymodem ACK #define ACK 0x06 // Ymodem NAK #define NAK 0x15 // Ymodem CAN #define CAN 0x18 // 发送一个Ymodem数据包 void sendPacket(char *packet, int packetSize) { // TODO: 将数据包通过串口发送 } // 发送文件(以Ymodem方式) int sendFile(char *fileName) { // 打开文件 FILE *file = fopen(fileName, "rb"); if (file == NULL) { printf("无法打开文件"); return -1; } // 获取文件大小 fseek(file, 0, SEEK_END); int fileSize = ftell(file); fseek(file, 0, SEEK_SET); // 计算需要发送的数据包数量 int packetCount = fileSize / PACKET_SIZE; if (fileSize % PACKET_SIZE != 0) { packetCount++; } // 发送文件名和文件大小信息 char fileInfo[PACKET_SIZE]; sprintf(fileInfo, "%s%d", fileName, fileSize); sendPacket(fileInfo, PACKET_SIZE); // 逐个发送数据包 int packetNum = 0; char packet[PACKET_SIZE]; while (packetNum < packetCount) { // 读取文件内容 memset(packet, 0, PACKET_SIZE); fread(packet, 1, PACKET_SIZE, file); // 发送数据包 sendPacket(packet, PACKET_SIZE); packetNum++; // 等待接收方ACK,如果接收方收到正确的数据包,则返回ACK(0x06),否则返回NAK(0x15) char response = NAK; while (response != ACK) { // TODO: 接收接收方的响应数据 // response = ... // 如果收到CAN(0x18)字符则终止传输 if (response == CAN) { fclose(file); return -1; } } } // 发送结束标志 sendPacket(&EOT, 1); // 等待接收方发送ACK while (1) { // TODO: 接收接收方的响应数据 // response = ... if (response == ACK) { break; } } fclose(file); return 0; } int main() { char *fileName = "test.txt"; sendFile(fileName); return 0; } ``` 以上是一个简单的Ymodem发送文件的C语言实现,通过发送SOH(Start of Heading)、EOT(End of Transmission)、ACK(Acknowledge)和NAK(Negative Acknowledge)等控制字符来进行通信和数据传输控制。在实际应用中,还需要实现相应的接收方代码来接收和处理Ymodem协议的传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值