zoukankan      html  css  js  c++  java
  • Vmware+Virtualbox+Ubuntu+debian+USB转串口+kermit

    当前的环境是:在Win7笔记本主机上安装VirtualBox+Ubuntu12_04,串口使用USB转串口

    如果使用的虚拟机是VirtualBox:

    如果使用的虚拟机是Vmware:

    执行这步后,主机的设备管理器下的COM设备会自动消失,同时会自动在虚拟机的/dev下创建一个名为ttyUSB0或者ttyUSB1(可以自己到/dev下去看一下到底是ttyUSB0还是ttyUSB1)的设备结点(注:/dev/ttyUSB0表示使用usb转串口的连接线接开发板,如果是只用用串口线连接主机的话,需要设置为/dev/ttyS0)。

    如果不想在虚拟机下面使用串口了,可以先将kermit退出,再将COM设备从虚拟机下面转到主机下面,方法还是按照上面那两张截图的步骤,再点击一下即可(虚拟机的/dev下面的ttyUSBx会自动消失,主机的设备管理器中会自动出现COM设备)。

    Vmware可以设置虚拟机上电时自动将主机的COM设备导到虚拟机下:

    安装kermit:

    sudo apt-get install ckermit

    配置:

    在家目录下创建名为 .kermrc的文件,输入如下内容:

    set line /dev/ttyUSB0

    set speed 115200

    set carrier-watch off

    set handshake none

    set flow-control none

    robust

    set file type bin

    set file name lit

    set rec pack 1000

    set send pack 1000

    set window 5

    c

    这里,kermit在启动时会查找~/.kermrc文件,调用里面的命令来初始化kermit。只要将你所需的命令写到~/.kermrc文件里,启动后就不用手动敲这些命令配置了。 

    为了避免每次插拔玩USB转串口线后,下次再插的话系统自动创建的设备节点跟前一次不同,需要修改配置文件的问题,我写了一个简单的脚本。将这个脚本赋予科科执行权限,在使用kermit的时候,执行我这个脚本就可以了。

    下载地址:http://files.cnblogs.com/files/pengdonglin137/mykermit.tar.gz

    下面是脚本内容:

    #!/bin/bash
    
    i=0
    uart_list=""
    count=0
    
    for i in {0..10}
    do
        if [ -e /dev/ttyUSB${i} ]; then
            uart_list="${uart_list} /dev/ttyUSB${i}"
            let count++
        fi
    done
    
    if [ $count -ge 2 ]; then
        select Port in ${uart_list}
        do
            break
        done
        uart_list=`echo ${Port}`
    else
        uart_list=`echo ${uart_list}`
    fi
    
    cat > ~/.mykermrc <<EOF
    set line            ${uart_list}
    set speed           115200
    set carrier-watch   off
    set handshake       none
    set flow-control    none
    robust
    set file type       bin
    set file name       lit
    set rec pack        1000
    set send pack       1000
    set window          5
    c
    EOF
    
    if [ ! -w ${uart_list} ]; then
        sudo chmod a+r+w ${uart_list}
    fi
    
    kermit

    注:建议不要在家目录下创建 .kermrc配置文件,而是去修改/etc/kermit/kermrc配置文件,原因如下:

    因为在/dev下面的ttyS0以及ttyUSB0的权限都是他组用户没有任何权限,如下所示:

    如果要运行kermit,在不修改这两个设备的权限管理时,必须使用sudo,即以root身份运行,如果以root身份运行,kermit会到/root目录下去找 .kermrc文件,为了省事,我们直接修改/etc/kermit/kermrc配置文件配置文件(将上面的配置粘贴到/etc/kermit/kermrc配置文件中),在运行时采用命令sudo kermit。

    *运行的时候直接进入命令模式: 

    $sudo kermit 

    这里没-c就进入默认的命令模式了(需要修改配置文件,把最后一行的c去掉)。 

    *运行的时候,直接进入非命令模式: 

    $sudo kermit -c 

    这里,加上-c表示进入非命令模式,相当于在命令模式下面运行了connect或者c.在连接好了板子之后,这样就可以连接到串口上面了,当然不要忘记将设备打开,否则你敲入东西的时候是没有反应的。 (注意:在配置文件的最后一行我加了一个c,即如果执行sudo kermit 时,会自动进行连接,跟执行sudo kermit -c是同样的效果)

     

    *进入命令模式,步骤如下: 

    1)输入"[Ctrl]". 

    2)输入"c". 

    这样进入kermit的命令模式可以进行各种命令(支持TAB补全),例如HELP可以查看帮助,输入"?"列出所有命令。 

     

    *从命令模式退回com终端: 

    输入"connect". 

    或输入"c". 

    这样又切换会了串口界面(例如在uboot下面)。 

     

    *在命令模式下查看当前主机目录文件: 

    输入"ls". 

     

    *在命令模式下查看当前路径: 

    输入"pwd". 

     

    *在命令模式下进入指定的主机目录/home/test: 

    输入"cd /home/test". 

     

    *传输文件file到板子的flash上面: 

    输入"send file". 

    这里,在命令行下的发送命令就是send。如果之前在Uboot下使用了loadb 0xc0008000进入的命令模式,那么发送的文件将会被放在了这个地址上面。 

     

    *退出串口程序: 

    输入"exit". 

    当然,这里指的是在命令行下面。 

     

    [其他] 

    *一个简单的完整例子: 

    启动板子uboot之后,我想传一个文件/root/test.sh到地址0xc0008000 

    步骤如下: 

    1)$kermit -c 

    这样,就连接到串口上面了。 

    2)输入"loadb 0xc0008000" 

    3)输入"[Ctrl]" 

    4)输入"c" 

    这样进入命令模式. 

    5)输入"send /root/test.sh" 

    6)输入"connect". 

    这样就传完了。ckermit好像只支持kermit协议。 

  • 相关阅读:
    网速问题?更换国内源吧!
    NES像素风格的Raspberry
    dalao自动报表邮件2.0
    大佬要我写自动邮件报表系统
    扬帆起航
    Linux下安装与配置tomcat集群+负载均衡
    centos配置ssh和ftp服务
    tomcat中server.xml配置详解
    设置windows 宿主计算机和VMware虚拟机共享文件夹
    Redhat6 yum 安装与配置
  • 原文地址:https://www.cnblogs.com/pengdonglin137/p/3381636.html
Copyright © 2011-2022 走看看