作者:愛我如深海
原文連結:
https://blog.csdn.net/wanywhn/article/details/79983753
前言
這兩個月要開始RT-Thread了,在此記錄一下過程,也好給後人指一條路。
各種工具安裝
編譯器、調試器
我選擇了直接在系統倉庫裡面下載
sudo apt install gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi scons qemu-system-arm
第一個包提供了編譯鏈工具,第二個是GDB,第三個是工具集,詳見
Binutils工具集詳解,scons是RT-Thread使用的編譯系統。
RT-Thread原始碼
Linux下安裝git後在工程目錄下(比~/Workplace)執行git clone https://github.com/RT-Thread/rt-thread我們看一下樹目錄結構
rt-thread git:(master) tree . -L 1
.
├── AUTHORS
├── bsp //板級支持包
├── ChangeLog.md
├── components //RT-Thread組件目錄
├── COPYING
├── documentation //相關文檔
├── examples //官方示例
├── include //頭文件
├── Kconfig
├── libcpu //平臺相關的啟動代碼及線程切換代碼
├── README.md
├── README_zh.md
├── src //RT-Thread源碼目錄
└── tools //RT-Thread Scons腳本目錄
在這裡我麼將使用bsp下的qemu-vexpress-a9,進入該目錄後可發現如下文件
qemu-vexpress-a9 git:(master) tree . -L 1
.
├── applications
├── build
├── compile_commands.json
├── cpu
├── drivers
├── Kconfig
├── link.lds
├── main.cpp
├── packages
├── qemu.bat
├── qemu-dbg.bat
├── qemu-dbg.sh
├── qemu-nographic.sh
├── qemu.sh //這是我們的啟動腳本
├── README.md
├── rtconfig.h
├── rtconfig.py
├── rtconfig.pyc
├── rtthread.bin
├── rtthread.elf //編譯後會輸出該文件
├── rtthread.map
├── SConscript
├── SConstruct
└── sd.bin
qemu.sh內容如下
if[ ! -f "sd.bin"]; then
dd if=/dev/zero of=sd.bin bs=64M count=1 //模擬的SD卡文件
fi
qemu-system-arm -M vexpress-a9 -kernel rtthread.elf -serial stdio -sd sd.bin
在運行之前,我們需要先編譯整個系統,在當前目錄下直接輸入scons即可編譯出默認配置的系統,輸出一個rtthread.elf文件。之後在運行./qemu.sh即可啟動
啟動後如下圖所示:
進行調試
在終端下通過GDB直接調試
QEMU配置
首先我們要拷貝一份qemu.sh命名為qemu-dbg.sh,給他qemu-system-arm後面添加-s -S參數前一個代表開啟一個GDBServer,默認埠號為1234,後一個參數為在啟動時凍結CPU,所以我們等會兒需要在GDB下continue以下。 修改完後的qemu-dbg.sh如下
if[ ! -f "sd.bin"]; then
dd if=/dev/zero of=sd.bin bs=64M count=1
fi
qemu-system-arm -M vexpress-a9 -kernel rtthread.elf -serial stdio -sd sd.bin -s -S
然後直接執行它,結果如下圖所示。
發現他卡在了這兒,目的達到了。接下來讓我們配置GDB
GDB設置
接下來,我們在另一個終端下輸入如下命令 arm-none-eabi-gdb -se rt-thread.elf-s表示從該文件讀取符號表,-e指定了可執行文件。在這裡都是同一個文件。 正常情況應如下圖所示:
接下來,輸入b main,然後是c,分別表示在main函數設置斷點並且繼續執行。
最終如下兩圖所示
以上就完成了。
Eclipse下進行調試
Eclipse在Eclipse Market裡面搜索MCU安裝GNU MCU Eclipse
安裝完重啟之後,在`Run-Debug Configurations`裡面如下圖所示配置
之後點擊Debug即可。
結尾
以上就是全部過程,期待我們下一次再見面!
RT-Thread 近期活動
1.北京站RT-Thread沙龍:除了嘉賓關於RT-Thread入門經驗的精彩主題分享,這次的workshop內容是,分組動手製作一個基於RT-Thread的物聯網應用。