STM32高級開發(13)-Ubuntu下的串口助手minicom

在這麼長時間裏我們在Ubuntu上調試stm32,大家在使用串口的時候是不是一直都是在宿主機上的串口助手中查看串口信息呢?來回切換是不是很麻煩?那麼在這篇中我們就來介紹一下在Ubuntu下的串口助手,或者準確點說應該叫串口終端,它就是minicom。


終端與串口助手的區別

在我們正式介紹minicom之前,我們首先來關注一個問題即:終端與串口助手有什麼區別?(注意這裏的終端不是指Ubuntu的shell指令終端,而是說串口軟件終端)

其實如果大家接觸過Linux嵌入式開發應該就很明白這其中的差別了,不過鑑於大家可能之前沒有接觸過Linux嵌入式開發,我們這裏就爲大家詳細的講解一下他們。

在Linux嵌入式開發中,很多時候我們在一開始的時候網口等外圍接口沒有辦法使用,設備內只安裝了uboot等簡單的引導程序時,或是不方便使用網口的情況下,我們一般會選擇串口作爲前期控制嵌入式設備的接口,通過它能控制設備實現很多的功能:如下載新的固件、檢查修復NAND FLASH壞塊亦或是點亮一個LED指示燈等等。很明顯在如此複雜的操作下,我們就希望在串口上實現一個像DOS窗口或是shell一樣的指令界面,那麼顯然的類似於串口助手這樣的軟件只能在點擊發送時發送指令且會在窗口顯示發送出去的指令的串口調試軟件就不適用了。

所以在windows下,我們會使用系統自帶的超級終端或是securityCRT等調試軟件來調試串口。

這裏寫圖片描述

與串口助手不同的是:

  • 這類軟件沒有發送文本的輸入窗口,也沒有發送按鍵。而是隻要我們在窗口激活的情況下,只要按動鍵盤就軟件會實時的通過串口發送鍵盤按鍵的標準ASCII碼。

  • 第二在窗口上只會以ASCII碼形式顯示從設備發送來的數據而不會顯示發送出的數據。

也許看起來麻煩,但這樣的形式卻給我們在串口上實現類似shell的指令行功能提供了基礎。由於不會回顯,就可以通過嵌入式設備發送不同的ASCII碼來改變窗口上的顯示,甚至還能夠實現光標左右移動,回刪等操作,以此我們在嵌入式設備上,編寫合理的回顯及對回車鍵實時處理的功能,就能夠實現指令行的操作了。

這裏寫圖片描述


安裝與配置minicom

使用指令安裝minicom

$ sudo apt-get install minicom

隨後使用指令啓動minicom,這裏一定注意以sudo管理員身份執行,Ubuntu下操作串口需要管理員權限

$ sudo minicom

這樣軟件就被啓動了。由於minicom是在終端下運行的軟件,但是別覺得它鬼畜,其實他的使用和我們的超級終端等軟件的使用是基本一樣的,而且在指令行下的界面簡潔又炫酷,相信我你會愛上它的。

這裏寫圖片描述

接下來我們介紹一下minicom的基本用法。首先在啓動軟件後,在軟件界面上就會提示你使用Ctrl+a鍵。對於minicom我們在基本界面下輸入的任何單個按鍵都會被minicom解析爲發送數據而從串口中發出,那麼我們要怎麼設置它選擇他的一些功能呢?(就比如發送文件、清屏、退出或是顯示幫助)萬能的Ctrl+a鍵就來了,對於minicom它所有的菜單功能都需要使用Ctrl+a來召喚。在按動Ctrl+a後,minicom就進入了菜單指令輸入模式,此時除了再按ESC或是其他沒有功能的按鍵退出指令模式外,都被解析爲操作指令而不是需要發送的數據。在指令模式下,窗口下方會這樣顯示:

這裏寫圖片描述

  • Ctrl+a ,z。在指令模式下按z,會顯示指令模式下的菜單及按鍵說明。

    這裏寫圖片描述

  • Ctrl+a,c。就如說明中的功能顯示,用於清屏操作。

  • Ctrl+a,x。退出軟件

  • Ctrl+a,o。最重要的,用於設置串口參數。在serial port setup中我們設置,串口設備號和波特率及奇歐校驗位等參數,然後選中save setup as dfl後重啓minicom,就完成串口的設置了。

    這裏寫圖片描述

    這裏寫圖片描述


一些需要注意的問題

  • 回車換行的定義

    在Linux、windows、mac下,要實現我們通常認爲的換行操作的ASCII是不同的,也就是回車鍵產生的ASCII碼是不同的。

    在windows下,是0x0a,0x0d兩個字節數據即\r,\n,前者意爲換行,但光標仍處於下一行的同樣的列位置,這點與老式的機械打字機是一樣的,而只有再使用回車的功能將光標放到該行最初位置才能實現完整的“回車”操作。

    但在Unix系統之下,回車操作只有 0x0d,即\n。而在mac中則是\r

    由於這樣的差別很多時候在windows和Linux互相讀取文檔的時候會造成顯示上的錯誤,如通篇不換行或是多個字符^等現象。同時一樣的錯誤也會發射在串口調試軟件中,這點要尤其注意。

    比如在原子開發板串口教程中,在接收中斷處理函數中用於分割指令的檢測回車的代碼就是要順序檢測 \r\n纔會生效,而這樣的代碼到了Linux中,就需要進行更改了。當然現在的終端軟件一般也支持修改回車鍵的定義標準,這個大家可以自己去找找設置看。

  • USB串口驅動

    在Ubuntu的內核中一般是集成有主流的TTL轉RS232驅動程序的,也就意味着大家只要插上設備就可以使用了。我們可以使用指令

    $ lsusb

    來查看系統的USB設備情況。

    這裏寫圖片描述

  • 查看串口編號

    在Ubuntu中不像windows,一般USB串口的標號都是按照順訊擺列的,如:ttyUSB0、ttyUSB1這樣。當然我們也可以去文件路徑 /dev 下去看看設備的編號,Linux在所有都是文件的核心理念設計下,當外圍的設備連接後,就會在根目錄下的 /dev 文件夾下創建一個設備文件,通過讀寫這個文件,來操作通信接口。而這個文件的名字也就是上面我們在minicom中設置串口時,需要在第一行 Serial Device處填寫的內容。

    這裏寫圖片描述

    這裏寫圖片描述


總結

對於minicom的介紹我們到此就說完了,在設置和其他配置及功能的講述上,我們沒有過多的文字,如果大家沒有理解他的使用方式或是還想看看minicom更多的功能,可以自己去檢索下相關的資料學習,這裏我們就不過多的說了。總之需要大家理解一點的是,只有像minicom或是超級終端這樣的不帶有發送指令回顯功能的調試軟件才能實現串口界面的指令行。關於這點大家可以編譯運行一下樣例工程中Usart-Stdio的工程,並用分別串口調試助手和SecurityCRT來打卡它操作一下就明白了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章