SYNOPSIS
minicom [options] [configuration]
功能
串口通信程序。
描述
簡介
在嵌入式開發中,Linux主機上安裝好minicom程序之后,將linux主機和開發板通過串口相連接,這樣可以直接在pc上面通過啟動的minicom,"登陸"到開發板上,和開發板進行交互,效果類似遠程登陸telnet不過使用的是串口連接。
配置
啟動minicom的時候,會檢測 MINICOM
環境變量,將它們作為命令參數,如果命令中指定了某個參數,那么這個 MINICOM
中的相應的某個參數會被替換。注意必須對這個環境變量進行 export
才行。
例如:
MINICOM='-m -c on'
export MINICOM
這樣,啟動minicom的時候,會自動地將這個環境變量指定的參數作為minicom的啟動參數。如果命令行中又指定了這個環境變量中的某個參數,那么命令行中指定的參數值將會覆蓋這個環境變量的參數值。
或者其它等效的設置,然后啟動minicom,minicom 會假定你的終端有Meta鍵或Alt鍵,并且支持彩色。如果你從一個不支持彩色的終端登錄,并在你的啟動文件( .profile
或等效文件)中設置了 MINICOM
,而且你又不想重置你的環境變量,那么你就可以鍵入 minicom -c off
,來運行這次沒有色彩支持的會話。
The configuration
參數更有趣。通常,minicom從文件 minirc.dfl
中獲取其缺省值。不過,若你給minicom一個參數,它將嘗試從文件 minirc.configuration
中獲取缺省值。因此,為不同端口、不同用戶等創建多個配置文件是可能的。最好使用設備名,如: tty1, tty64,sio2
等。如果用戶創建了自己的配置文件,那么該文件將以 .minirc.dfl
為名出現在他的home目錄中。
minicom的全局配置文件通常在 /etc/minirc.dfl
. minicom將其配置文件保存在一個目錄中,通常是: /var/lib/minicom
, /usr/local/etc
或者 /etc
。要想知道minicom編譯時內定的缺省目錄,可用命令 minicom -h
,在那兒你可能還會找到 runscript(1)
的demo文件。
配置文件的文件名格式: minirc.user
。minicom默認加載配置文件 minirc.df1
,但你也可以仿照 minirc.df1
編輯自己的配置文件 minirc.user
,輸入 minicom user
啟動時則加載 minirc.user
。如在本機上,我做了一個 minirc.root
,輸入 minicom root
啟動minicom,則系統自動加載 /etc/minirc.root
中的配置。
$HOME/.minirc.*
$HOME/.dialdir
$HOME/minicom.log
/usr/share/locale/*/LC_MESSAGES/minicom.mo
命令行啟動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位字符的語言都需要(例如顯示芬蘭文字就不需要這個)。
舉例
啟動minicom的時候,開啟自動換行
$minicom -w
如果不加這個項,那么在minicom和pc交互的時候中鍵入命令超過一行時候會被截斷,(這時候可以通過<C-a> w來開和關切換截斷行功能).
啟動minicom的時候,顯示顏色
$minicom -c on
這樣,啟動之后我們會發現顯示的內容不是黑白的了。
啟動一個圖形的minicom
$xminicom
啟動minicom的時候,自動創建日志捕捉文件my_capturefile
$minicom -C my_capturefile
這樣,啟動之后,所在minicom的輸出都會在my_capturefile中保留一份,如果原來文件存在,則追加,不存在則創建一個。
啟動minicom的時候,將命令鍵修改成Meta鍵(<C-a>變成[Alt]或者[ESC]等)
$minicom -m
這樣,我們可以取代用<C-a> *發送命令的方式,將<C-a>替換成[Alt]或者[ESC].
啟動minicom的時候,指定運行的腳本
$minicom -S <filename>
這里,<filename>是你的腳本文件的名字,應該指定絕對路徑,否則就會在你啟動minicom的路徑下尋找。關于minicom的腳本,可以參考man手冊"man runscript".交互命令中可以運行"<C-a>G"來運行腳本。
關于runscript腳本:
- 注釋是'#'開始的。
- send命令中的字符串,有\c就不會發送默認的\r了。例:send "ls \c"就不會自動回車,這里'\c'也可以在前面。
目前發現,腳本功能比較弱。在minicom原代碼中有簡單的例子:scriptdemo和unixlogin,可以直接在linux運行runscript.
可以指定minicom的腳本運行程序,
D - Script program
作為腳本解釋器的程序。缺省是“runscript”,也可用其它的東東(如: /bin/sh 或 "expect",這樣就可以用shell或者其他的腳本了_)。Stdin和Stdout連接到modem,Stderr連接到屏幕。
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
這樣會顯示所命令列表,便于查找。
回到shell
<C-a> j
這樣minicom會在后臺stop,直到fg將它調到前臺。
開/關捕捉minicom中的輸出到一個文件
<C-a> l
這樣會打開/關閉捕捉輸出功能,捕捉的輸出會存放在一個你選擇的文件中。
退出minicom
<C-a> x
這樣會退出minicom.
配置minicom
配置minicom的目的是讓pc機可以通過minicom連接開發板。
下面是一個配置的例子:
-
運行Minicom
#minicom -s
-
選擇
Serial port setup
配置其中的如下配置項:
A - Serial Device : /dev/ttyS0 E - Bps/Par/Bits : 115200 8N1 F - Hardware Flow Control : No G - Software Flow Control : No
這里,也可以在啟動minicom之后運行
<C-a> o
來進行配置。
使用minicom在開發板和主機之間傳輸文件
這里詳細講述如何在minicom下面,開發板子和pc機器直接通過串口傳輸文件。
準備需要的文件
假設我的開發板是arm體系的cpu。那么需要如下文件:
- lrzsz-0.12.20.tar.gz: 傳輸文件的工具,需要編譯成開發板子可運行的,也要再編譯一份在pc上面運行的。
- bin_forarm/* :這里是隨便建立的一個目錄,里面存放編譯好的在開發板子運行的文件傳輸工具(也就是前面那個lrzsz的arm運行版本,編譯它們需要借助交叉編譯工具),需要拷貝到板子上的/usr/bin目錄下。
- bin_forpc_maybe/* :這里是隨便建立的一個目錄,里面存放編譯好的在pc運行的文件傳輸工具(也就是前面那個lrzsz的pc運行版本),因為可能pc上面原來就有lrzsz工具,所以可以先只把bin_forarm的內容拷貝到開發板上面嘗試一下看能否傳輸,如果只拷貝bin_forarm/*不好用的話就把這里的內容拷貝到pc的/usr/bin下。
工具(lrzsz,minicom)的獲取
- 下載lrzsz-0.12.20: http://download.chinaunix.net/download/0007000/6293.shtml
- 編譯:交叉編譯lrzsz拷貝到開發板上, 編譯lrzsz并拷貝到pc機器上.
- 下載minicom:
#apt-get install minicom
這里假設我的系統是ubuntu.
配置
打開minicom,配置環境。
-
配置文件所在目錄
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 | +--------------------------+ +-----------------------------------------------------------------------+ | A - Download directory : /tmp | | B - Upload directory : /home/quietheart/tmpTrans | | C - Script directory : | | D - Script program : runscript | | E - Kermit program : | | F - Logging options | | | | Change which setting? | +-----------------------------------------------------------------------+
這里:
- A - download 下載的文件的存放位置
- B - upload 從此處讀取上傳的文件
- download 開發板 —> PC
- upload PC —> 開發板
- B - Upload directory : /home/quietheart/tmpTrans
PC機向開發板發送文件,需要發送的文件在/home/quietheart/tmpTrans目錄下(PC機上的目錄)。
做了此項配置后,每次向開發板發送文件時,只需輸入文件名即可,無需輸入文件所在目錄的絕對路徑
傳輸文件
實際前面的upload directory表示pc機器的上傳目錄,將會把這個目錄中的內容傳到板子上面.上面的配置不是必須的,但在后面選擇的時候使用上面的目錄做為默認。
方法:假設我在pc上面,使用minicom,在minicom中,
PC–>開發板
首先,在minicom中,運行開發板子上的rz,準備接受數據:
#lrz
然后,在minicom中,輸入
[Ctrl]a S
這里的Send表示從pc發送到開發板子.然后會進入選擇文件的目錄(默認為upload目錄),選擇PC機上面準備傳輸的文件,然后確認即可。
這樣會開始傳輸文件,傳輸的文件最終存放在開發板子上運行lrz命令的地方。
開發板–>PC
首先在開發板子上面運行:
#lsz filename
然后,在開發板子上minicom下運行(有時候不需要這一步)
[Ctrl]a R
這樣,會自動把要傳送的文件傳送到前面設置的Download directory上面(/tmp)
其它
以上,是我對Minicom使用的一些經驗的總結。
參考資料
- http://blog.csdn.net/sikinzen/archive/2010/04/05/5451758.aspx
- minicom手冊
- 其他網上收集的資料