歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> VirtualBox下配置串口以及stty命令詳解

VirtualBox下配置串口以及stty命令詳解

日期:2017/2/28 16:02:39   编辑:Linux教程

虛擬機於主機通過串口通信

我們需要先配置一下宿主機器上的virtualbox。

1. 在串口欄中勾選 []啟用串口(E)

2. 端口編號選擇COM1

3. 端口模式選擇Host Pipe

4. 勾選 []創建通道(C)

5. Port/File Path: 填上 /tmp/serial. 也就是說我們在宿主機器的/tmp/中創建了serial的通道文件

此外,我們還要在宿主機器上設定一下串口.在此之前需要安裝minicom軟件

1. 運行minicom -s命令

2. CTRL+A調出配置界面,選擇Serial port setup

3. Serial Device修改為 unix#/tmp/serial

4. Bps/Par/Bits修改為 9600 8N1

5. Hardware Flow Control和Software Flow Control都設置為No.

6. 保存為dfl以後退出

在虛擬機上配置:

修改/boot/grub/menu.lst,將輸出導出到串口

title Debian GNU/Linux, kernel 2.6.32.7

root (hd0,0)

kernel /boot/vmlinuz-2.6.32.7 root=/dev/hda1 ro console=ttyS0,9600

initrd /boot/initrd.img-2.6.32.7

修改/etc/inittab,允許輸出的控制台為ttyS0.

#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

啟用即可。

宿主機開啟minicom, 然後啟動虛擬機,就可以看到系統啟動輸出信息全部導出到了串口上。等到登陸界面出現的時候,就可以登陸操作。

虛擬機和虛擬機之間的串口通信

兩台虛擬機間的通信也可以通過利用主機的命名管道來完成。原理可以簡單的這樣描述:一台虛擬機在主機中創建的命名管道並其串口相連,另外一台虛擬機也將自己的串口連到主機的命名管道上,這樣兩個虛擬機的串口就能連起來了。這裡兩台虛擬機都使用各自的COM1端口,主機的命名管道為同一管道/tmp /vbox,在配置時一台創建通道(假設為Ubuntu8.10DevOS),另一台不創建。啟動時先啟動創建通道的虛擬機,然後啟動另一台虛擬機,分別打開兩台虛擬機的終端,通過如下命令將各自的COM1口的輸入輸出波特率都設為115200
虛擬機A:stty ispeed 115200 ospeed 115200 -F /dev/ttyS0
虛擬機B:stty ispeed 115200 ospeed 115200 -F /dev/ttyS0
測試過程:
在其中一台虛擬機A終端上執行
cat /dev/ttyS0
在另一台虛擬機B上執行
echo ok > /dev/ttyS0
這時虛擬機A的終端會接受到B發來的ok消息。

如果不確認串口線在哪個串口上可以安裝setserial軟件執行

setserial -g /dev/ttyS*

看看那個串口有信息! 有可能是串口到ttyS1上了

stty命令詳解

[語法]: stty [-a] [-g] [選項]

[說明]: 本命令設置終端,無參數時報告終端設置,本命令功能十分強大,應謹慎使用,下面僅介紹部分常用功能 詳細如下:

-a 顯示當前終端所有設置

-g 以能作為 stty 命令參數的方式顯示終端設置

以下是終端常用設置,在設置前加-表示清除設置:

控制方式
ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令設置終端輸入波特率,若為0則使用缺省波特率。

例如 stty ispeed 9600
ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令設置終端輸出波特率,參看 ispeed。

輸入方式
ingbrk(-ignbrk) 忽略(不忽略)中斷(BREAK)
brkint(-brkint) 設置(清除)信號INTR為中斷信號
inlcr(-inlcr) 將換行轉換(不轉換)成回車
icrnl( -icrnl) 將回車轉換(不轉換)成換行
igncr(-ignrc) 忽略(不忽略)回車
iuclc( -iuclc) 將大寫字母轉換(不轉換)成小寫字母

輸出方式
olcut(-olcut) 將小寫字母轉換(不轉換)為大寫字母
onlcr(-onlcr) 輸出時將換行符轉換(不轉換)為回車換行
ocrnl(-ocrnl) 輸出時將回車符轉換(不轉換)為換行符

本地方式
echo (-echo) 設置(清除)回顯
stwrap(-stwrap) 截斷(不截斷)大於79個字符的行
echoctl(-echoctr) 將控制鍵回顯為^

Copyright © Linux教程網 All Rights Reserved