minicom 使用方法
一,安裝
sudo apt-get install minicom
二,配置
安裝完成后,請不要著急打開軟件。需先進行配置。具體步驟如下:
1.linux下的所有操作面向用戶的都是文件操作,在對串口操作之前,我們應該先確認自己對該文件有沒有讀寫權限。
ls -l /dev/ttyUSB*
linux下的usb串口命名為ttyUSB,運行上面命令,可以看到有幾個設備掛載。
我們這里是:
crw-rw---- 1 root dialout 188, 0 Apr 10 17:10 /dev/ttyUSB0
只有ttuUSB0.
再用lsusb察看:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 007 Device 002: ID 046d:c31d Logitech, Inc.?
Bus 004 Device 009: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
usb 004正是我們掛上去的usb轉串口線纜,使用的芯片是PL2303。
但是正如上面顯示,ttyUSB0這個設備是root所有的,所以,我們以普通用戶身份打開minicom是沒法訪問該文件的。
2.配置minicom的參數
運行$ sudo minicom -s
便進入了minicom的配置界面,使用上下鍵選擇Serial port setup,回車。此時光標在“change which setting”后面停留,它的上面有如下菜單:
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? |
+-------------------------------------------------------------+
我們只需輸入上面對應的字母,就可以進如相應的菜單進行設置。設置完成,回車,光標會回到“change which setting”后面,如此重復。完成按回車返回主菜單即可。
注意:如果沒有使用USB轉串口,而是直接使用串口,那麼Serial Device要配置爲/dev/ttyS0。
返回主菜單后,選擇“Save setup as df1”,將其保存為默認設置,然后選擇 Exit推出。需退出后重新打開minicom,軟件才會使用上述參數進行初始化。
3.minicom使用
如果上面設置順利,打開minicom
sudo minicom
重新給開發板上電后,此時,窗口里就有信息打印出來了。
minicom基本操作如下:
1)需使用Ctrl+a 進入設置狀態
2)按z進入設置菜單
(1)S鍵:發送文件到目標系統中;
(2)W鍵:自動卷屏。當顯示的內容超過一行之後,自動將後面的內容換行。這個功能在查看內核的啓動信息時很有用。
(3)C鍵:清除屏幕的顯示內容;
(4)B鍵:瀏覽minicom的歷史顯示;
(5)X鍵:退出mInicom,會提示確認退出。
4丶配置文件所在目錄
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機上的目錄)。做了此項配置後,每次向開發板發送文件時,只需輸入文件名即可,無需輸入文件所在目錄的絕對路徑。 5、
啟動minicom的時候,會檢測MINICOM環境變量,將它們作為命令參數,如果命令中指定了某個參數,那么這個MINICOM中的相應的某個參數會被替換。注意必須對這個環境變量進行export才行。例如:?
MINICOM='-m -c on'?
export MINICOM?
這樣,啟動minicom的時候,會自動地將這個環境變量指定的參數作為minicom的啟動參數。如果命令行中又指定了這個環境變量中的某個參數,那么命令行中指定的參數值將會覆蓋這個環境變量的參數值。?
或者其它等效的設置,然后啟動minicom,minicom 會假定你的終端有Meat鍵或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連接開發板。?
下面是一個配置的例子:?
(1)#minicom -s?
(2)選擇"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機器直接通過串口傳輸文件。?
主要內容:?
1)準備需要的文件?
假設我的開發板是arm體系的cpu。那么需要如下文件:?
a)lrzsz-0.12.20.tar.gz: 傳輸文件的工具,需要編譯成開發板子可運行的,也要再編譯一份在pc上面運行的。?
b)bin_forarm/* :這里是隨便建立的一個目錄,里面存放編譯好的在開發板子運行的文件傳輸工具(也就是前面那個lrzsz的arm運行版本,編譯它們需要借助交叉編譯工具),需要拷貝到板子上的/usr/bin目錄下。?
c)bin_forpc_maybe/* :這里是隨便建立的一個目錄,里面存放編譯好的在pc運行的文件傳輸工具(也就是前面那個lrzsz的pc運行版本),因為可能pc上面原來就有lrzsz工具,所以可以先只把bin_forarm的內容拷貝到開發板上面嘗試一下看能否傳輸,如果只拷貝bin_forarm/*不好用的話就把這里的內容拷貝到pc的/usr/bin下。?
?
2)工具(lrzsz,minicom)的獲取?
a)下載lrzsz-0.12.20?
http://download.chinaunix.NET/download/0007000/6293.shtml?
b)編譯?
交叉編譯lrzsz拷貝到開發板上.?
編譯lrzsz并拷貝到pc機器上.?
c)下載minicom?
#apt-get install minicom?
這里假設我的系統是ubuntu.?
?
3)配置?
a)打開minicom,配置環境。?
b)配置文件所在目錄?
--------------------------------------------------?
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機上的目錄)。?
????
做了此項配置后,每次向開發板發送文件時,只需輸入文件名即可>,無需輸入文件所在目錄的絕對路徑?
?
4)傳輸文件?
實際前面的upload directory表示pc機器的上傳目錄,將會把這個目錄中的內容傳到板子上面.上面的配置不是必須的,但在后面選擇的時候使用上面的目錄做為默認。?
方法:?
假設我在pc上面,使用minicom,在minicom中,?
PC-->開發板?
a)首先minicom中,運行開發板子上的rz,準備接受數據:?
#lrz?
b)在minicom中,輸入?
[Ctrl]a S?
這里的Send表示從pc發送到開發板子.然后會進入選擇文件的目錄(默認為upload目錄),選擇PC機上面準備傳輸的文件,然后確認即可。?
這樣會開始傳輸文件,傳輸的文件最終存放在開發板子上運行lrz命令的地方。?
?
開發板-->PC?
a)在開發板子上面運行:?
#lsz filename?
b)在開發板子上minicom下運行(有時候不需要這一步)?
[Ctrl]a R?
這樣,會自動把要傳送的文件傳送到前面設置的Download directory上面(/tmp)?
?
?
*參考資料:?
http://blog.csdn.net/sikinzen/archive/2010/04/05/5451758.aspx?
minicom手冊?
其他網上收集的資料
user版本打開uart
??? 如何在user版本中使用串口(uart)
??? bootable/bootloader/lk/app/mt_boot/mt_boot.c
??? 582 #ifdef USER_BUILD?????????????? ?
??? 583???????? sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=1");
??? 584 #else
??? 585???????? sprintf(cmdline,"%s%s",cmdline," printk.disable_uart=0 ddebug_query=\"file *mediatek* +p ; file *gpu* =_\"");
??? 586 #endif
??????? 1
??????? 2
??????? 3
??????? 4
??????? 5
??? 將上面的printk.disable_uart=1改成printk.disable_uart=0,然后重新編譯lk, download lk 即可;或者直接download eng版本的lk。
??? 如何開啟Uart 的控制臺(console/sh)
??? system/core/rootdir/init.rc
??? 515 service console /system/bin/sh
??? 516???? class core
??? 517???? console
??? 518???? disabled
??? 519???? user shell
??? 520???? seclabel u:r:shell:s0
??? 521?
??? 522 on property:ro.debuggable=1
??? 523???? start console
??????? 1
??????? 2
??????? 3
??????? 4
??????? 5
??????? 6
??????? 7
??????? 8
??????? 9
??? 注釋掉on property:ro.debuggable=1,然后重新編譯bootimage 即可。
??? 如何在Uart 上抓取上層LOG
??? Uart 上進行輸入,實際就是開啟了一個sh 對接起來,所以絕對不能在uart 上輸入一個長命令(不可中斷),否則uart 將被卡住,不能再輸入。
??? 抓取上層log, 我們通常需要使用logcat, 但logcat 是不可中斷的,將導致uart 不能再輸入。
??? 處理的方法即將logcat 轉入后臺執行,如下操作即可:
??? Main log: logcat -v time &
??? Radio log: logcat -v time -b radio &
??? Event log: logcat -v time -b events &
??????? 1
??????? 2
??????? 3
??? 如果想關閉上層log, 直接ps 查閱前面開啟的logcat process pid, 然后kill -9 pid 殺掉即可。
??? 注意一定要帶“&”,否則將block 住uart輸入
讓Android?log從串口kernel log輸出
分析無法開機問題,如串口RX/TX連接正常,可正常輸入,請參考上面第3點。
如確認RX/TX連接正常,但不能輸入,則可能是下面原因導致:
??? 數據流控制是否正確,一般需關閉,下面為RS232的三種流控制模式介紹:
??? DTR/DSR:硬件上要有對應接口,軟件上實現對應協議,才能實現此流控制。具體實現起來,一般好像是和RTS/CTS一直搭配使用。
??? RTS/CTS:硬件上要有對應接口,軟件上實現對應協議,才能實現此流控制。一般常見的也就是這種。但是很多開發板用secureCRT連接開發板的時候,往往都是在Uboot階段,那時候還沒有實現對應的RTS/CTS的流控制,所以此處需要取消此選擇,否則,secureCRT就會去一直檢測對應的RTS(Request To Send)pin腳,發現一直是無效,所以就一直沒有接受到數據,就“卡”在那了。同樣,你要輸入數據,就是secureCRT要發送數據,所以其先發了個RTS給開發板,然后就一直檢測自己的CTS是否有效,直到自己的CTS有效后,才能發送數據,而此處由于開發板上的驅動沒有實現RTS/CTS,所以secureCRT就一直檢測CTS,就“卡”死了,即你無法輸入數據。
??? XON/XOFF:軟件上實現的流控制,硬件上無需像上面的RTS/CTS或DTR/DSR那樣要增加對應的引腳。但是由于XON/XOFF分別對應的兩個二進制的值,所以如果本身傳輸數據中包括該值,那么此軟件的流控制就失效了。現在好像也很少用此種流控制了。
??? 是否打開回顯
串口分析kernel log正常但adb連不上時,并且串口只能輸出時,希望讓android?log也從串口輸出,可以嘗試此方法,以下是一個驗證過的示例。
原理上就是根據kernel log能夠從串口輸出,只要將logcat重定向到kmsg即可實現,因此各個平臺的原理是一樣的應該通用。(但須注意這樣打印雖然能夠有android log從串口輸出,但串口輸出量過大可能會出現丟log的情況)
system/core/rootdir/init.rc中添加:
chmod 0660 /proc/kmsg
###############################################################
# redirect logs(LOGE, LOGI...) to linux console
###############################################################
service logcat /system/bin/logcat -f /dev/kmsg *:D
?class main
?user root
?group log
沒找到真正的博主是誰,沒法附鏈接,抱歉啊!
總結
以上是生活随笔為你收集整理的minicom 使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。