使用樹莓派構建嵌入式C++調試環境

本文以使用樹莓派4b為例說明構建嵌入式C++執行環境。之所以選擇樹莓派是因為它的系統比較完善,資料也多,容易上手。需要事先說明的是本文說明的大部分內容並不僅限於樹莓派。

準備樹莓派

下載鏡像文件

打開樹莓派官方網站的系統鏡像下載網頁:

使用樹莓派構建嵌入式C++調試環境

我們直接選擇紅框中的最大版本。下載完成之後我們得到以下文件(時間戳可能會不同):

<code>2020-02-05-raspbian-buster-full.zip/<code>

將文件解壓縮可以得到下面的鏡像文件:

2020-02-05-raspbian-buster-full.img

燒寫鏡像文件

首先選擇8G以上的TF卡,最好是Class4以上。然後使用SDCardFormator進行格式化。

使用樹莓派構建嵌入式C++調試環境

啟動DiskImager,選擇之前下載/解壓得到的image文件。

使用樹莓派構建嵌入式C++調試環境

接下來選擇設備。由於DiskImager不會自動選擇正確的SD卡,因此盤符一定不要弄錯。按下[寫入]按鈕開始寫入過程。

使用樹莓派構建嵌入式C++調試環境

寫入成功。

軟件下載地址

購買樹莓派時賣家都已提供的開發資料就應該包含這兩款軟件,讀者也可以使用下面的鏈接自己下載。

SDCardFormator:

DiskImageer:

設定基本信息

將燒寫完成的TF卡插入樹莓派的TF卡槽,接好鍵盤、鼠標和顯示器,啟動樹莓派。樹莓派啟動之後,選擇國家,地區並修改密碼。接下來設定網絡鏈接。如果是有無線路由器也可以使用Wifi連接。更新軟件操作可以自由選擇,不是必須實施。

點擊畫面左上角的[樹莓]圖標,進入[Preferences]-[Raspberry PI Configurations]菜單。進入[Interface]畫面選擇SSH有效後關閉畫面。

進入樹莓終端畫面,輸入ifconfig命令,記錄ip地址(例如:192.168.3.233)。如果IP地址獲取失敗,可以輸入以下命令重新設定。

<code>sudo raspi-config/<code>

遠程鏈接樹莓派

進入Ubuntu主機的終端畫面,輸入以下命令(地址初始化樹莓派時記錄的Ip地址):

<code>ssh [email protected]/<code>

第一次登陸會出現密鑰,安全相關的提示,直接接受就好。接下來輸入密碼之後,看到以下畫面就表示登錄成功。從此以後的開發,樹莓派一側的所有操作都通過這個終端窗口進行,就不再需要單獨的外設了。

除了Ubuntu中使用SSH命令之外,Window下也可以使用Putty等連接樹莓派,方法大同小異。

準備C++執行和調試環境

安裝NFS服務(Ubuntu開發主機)

在Ubuntu主機上打開終端窗口,輸入以下命令以安裝NFS服務。這個服務安裝完成之後,可以從樹莓派上訪問通過NFS共享的目錄。

<code>sudo apt get install nfs-kernel-server/<code>
<code>sudo vi /etc/exports/<code>

在文件最後增加以下內容。其目的是公開/home/xwg/Raspberry中的內容並賦予最大權限。具體可以根繼開發環境的位置自行決定。

<code> /home/xwg/RaspberryPi*(rw,sync,no_root_squash)/<code>

配置文件修改、保存完成之後,在終端窗口中輸入以下命令啟動NFS服務。

<code>sudo /etc/init.d/nfs-kernel-server start/<code>

掛接開發目錄(樹莓派)

啟動樹莓派SSH客戶端,輸入以下命令掛接Ubuntu主機分享的NFS目錄。

<code>mount -t nfs 192.168.3.202:/home/xwg/EasyARM /mnt -o nolock/<code>

命令中IP地址需要替換為Utuntu主機的地址,目錄需要和前面分享的目錄相同。安裝成功之後,可以進入/mnt目錄,如果看到的Ubuntu主機分享的內容,就意味在NFS目錄掛接成功了。使用這個目錄,可以直接訪問Ubuntu主機交叉編譯的結果,而不必每次都拷貝文件。

找到前一篇文章的創建的arm_cpp項目,進入Debug目錄,輸入以下命令:

./arm_cpp

終端中應該出現如下的內容:

<code> Hello GCC/G++ Compiler!/<code>

遠程調試

安裝GdbServer

在樹莓派終端窗口中輸入以下命令安裝gdbserver.

<code>sudo apt-get install gdbserver/<code>

輸入以下命令確認安裝結果,如果能過或者正常的版本信息,則表示安裝成功。

<code>gdbserver -v/<code>

安裝gdb-multiarch

在Ubuntu主機的終端窗口中輸入以下命令安裝多平臺版本的gdb.

<code>sudo apt-get install gdb-multiarch/<code>

安裝完成後通過以下命令確認安裝結果:

<code>gdb-multiarch --version/<code>

參考信息:

Gdb調試和遠程調試

通過樹莓派終端輸入arm_cpp/Debug目錄,並輸入如下命令:

<code>gdbserver :10000 arm_cpp/<code>

樹莓派終端表示如下:

使用樹莓派構建嵌入式C++調試環境

在Ubuntu主機的終端窗口中輸入如下命令,啟動gdb-multiarch。

<code>gdb-multiarch/<code>

畫面表示如下:

使用樹莓派構建嵌入式C++調試環境

輸入以下命令鏈接樹莓派側的GdbServer:

<code>target remote 192.168.3.233:10000/<code>

鏈接成功時,Ubuntu主機的終端畫面表示如下:

使用樹莓派構建嵌入式C++調試環境

樹莓派側的終端表示如下:

使用樹莓派構建嵌入式C++調試環境

在gdb畫面中輸入c命令執行程序。可以在樹莓派終端中看到如下輸出:

使用樹莓派構建嵌入式C++調試環境

至此樹莓派遠程調試環境安裝完成!


覺得本文有幫助?請分享給更多人。

面向對象開發,面向對象思考!


分享到:


相關文章: