RT-Thread教程一之Linux下開發環境及QEMU配置

2021-01-04 RTThreadIoT作業系統

作者:愛我如深海

原文連結:

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的物聯網應用。

相關焦點

  • RT-Thread Studio開發環境搭建
    前言從今天開始,我們學習使用RT-Thread Studio IDE開發STM32程序,RT-Thread Studio是一站式的 RT-Thread 開發工具,通過簡單易用的圖形化配置系統以及豐富的軟體包和組件資源,讓物聯網開發變得簡單和高效
  • RT-Thread學習筆記+2.RTT的啟動分析
    參考RTT官網提供的BSP製作教程,一次性成功,唯一的是要花點時間。而本次我準備使用使用的正點原子的戰艦V3的板子來學習RTT,因為這個板子上的板載資源要豐富一些。當我準備按照之前的經驗,做一款戰艦V3的BSP的時候才發現,原來已經有成品了。那就本著拿來主義,先用用吧。
  • 物聯網作業系統一站式開發工具:RT-Thread Studio
    為了解決大家的這些痛點,RT-Thread 官方團隊歷經一年用心打磨,推出了 RT-Thread Studio 集成開發環境(IDE),讓大家告別 ENV,能夠基於一款 IDE 快速的進行 RT-Thread 項目開發。日前,RT-Thread Studio V1.0.2 也已經正式發布了。
  • 【RT-Thread】線程的基本知識
    (void* parameter){    rt_uint32_t i = 0;    rt_kprintf("This is static thread!\n");        while (1)    {        rt_kprintf("static thread count:%d \r\n", ++i);                rt_thread_delay(500);    }}int main(void){    rt_err_t
  • Linux環境配置VS2015詳細教程
    VS2015推出了跨平臺開發,其中包括了對Linux程序開發的支持,最近剛好需要開發linux程序,對其進行了一些研究。 首先介紹下涉及到的開發工具 開發工具 VS2015Update3,下文簡稱VS(可以下載免費社區版) Visual C++ for Linux Development(VC_Linux.exe) 下載連結 VMware
  • RISC-V單片機快速入門02-移植RT_Thread Nano
    前言:上一節,我們使用芯來科技Nuclei Studio IDE搭建了裸機開發環境,本節我們開始正式移植RT_Thread系統。也是一個組件完整豐富、高度可伸縮、簡易開發、超低功耗、高安全性的物聯網作業系統。
  • 在rt-thread下實現OTA在線固件更新功能
    簡介為了能讓開發者快速掌握 OTA 升級這把利器,RT-Thread 開發團隊提供了通用的 Bootloader。Bootloader 在線獲取地址: http://iot.rt-thread.com登陸帳號
  • 開發,從未如此簡單——RT-Thread 4.0版本IoT OS
    在設備聯雲步伐日益加快的大背景下,企業追求更佳的交互體驗,更豐富的功能和更快的上市時間成為必然。傳統的基於RTOS內核(例如FreeRTOS)開發軟體應用的方式難以迎合市場的需求,組件、功能豐富,技術領先的IoT OS正日益成為企業開發產品的首選。統一的OS平臺也將幫助企業大幅地提升軟體開發效率,實現軟體應用最大程度的跨平臺復用。
  • RT Thread v2.1.0 正式版發布
    下載連結:git打包下載:http://git.oschina.net/rtthread/rt-thread/repository/archive/v2.1.0這個版本經歷的時間比較長,並且原定的一些目標也還未能完成(更全的POSIX支持,包括device fd,socket等在內的select API接口等)。
  • 智能家居 DIY 教程連載4——手把手教你連雲
    https://www.rt-thread.org/document/site/tutorial/qemu-network/onenet/onenet/https://github.com/RT-Thread-packages/onenethttps://github.com/RT-Thread-packages/at_device《RT-Thread 編程指南》中 AT 組件的章節 :https:
  • Linux Lab 推出十大精彩使用案例
    C 語言開發裡頭已經安裝好了必備的編輯器 vim 和編譯器 gcc,可以直接上手 C 語言開發。這裡是已經集成到主線的部分:ubuntu@linux-lab:/labs/linux-lab$ cat .gitmodules | grep qemu-url = https://gitee.com/tinylab/qemu-aarch64-raspi3/url = https://gitee.com/tinylab/qemu-aarch64-virt.giturl = https
  • RT-Thread物聯網集成開發環境助你便利的應對晶片替換和開發
    打開APP RT-Thread物聯網集成開發環境助你便利的應對晶片替換和開發 strongerHuang 發表於 2020-12-31 10:22:53
  • RT-Thread Studio V1.1 新版本發布
    【官網下載地址】https://www.rt-thread.org/page/studio.html(或點擊文末閱讀原文下載) 有了Studio,用戶再也不用在命令行下來回切換各種工具進行項目開發工作,減少重複性工作,降低使用門檻,讓用戶提高工作效率,在速度和質量上都有所提升,整體上加速產品開發過程。
  • RT-Thread Studio v2.0 大版本發布,支持 RISC-V 的國產集成開發環境
    關於ART-Pi更多資料和教程可以訪問ART-Pi官方站點獲取:https://art-pi.gitee.io/website/升級指南對於已經安裝過Studio的用戶,打開Studio即可自動檢測並升級到V2.0.0版本,沒有安裝的可以到如下地址(https://www.rt-thread.org/page/download.html#studio)下載安裝V2.0.0完整安裝包(建議不要覆蓋安裝)。
  • 玩轉RT-Thread之荔枝派Nano(全志F1C100S)一、新手上路
    更詳細信息及開發文檔可在官網https://www.rt-thread.org獲取。RT-Thread代碼開源在github及國內的碼雲,2個倉庫同步更新。2018年3月底最新版本為3.0.3。一、開發環境搭建在windows下使用RT-Thread進行荔枝派Nano開發,推薦使用RT-Thread Env工具。
  • RT-Thread Studio V1.1.4 有哪些亮點?
    同時QEMU模擬器新增了RISC-V支持,通過GD32VF103-NUCLEI-RVSTAR開發板模擬器,大家可以方便的通過QEMU進行RISC-V開發了。本次還新增了QEMU-VEXPRESS-A9模擬器。同時QEMU新增支持了STM32 SDIO模擬功能,RGB888的模擬功能。
  • Linux環境下的USB攝像頭驅動開發
    本文從Linux內核的USB核心模塊出發,遵循Video4Linux接口標準,採用urb策略與內存映射的方式以提高數據讀取速度,設計開發了基於Linux環境下的USB攝像頭驅動,並在ARM9實驗平臺上對該驅動程序進行了測試與分析。
  • RT-Thread Studio V1.0.2 發布,物聯網作業系統一站式開發工具
    為了解決大家的這些痛點,RT-Thread 官方團隊歷經一年用心打磨,推出了 RT-Thread Studio 集成開發環境(IDE),讓大家告別 ENV,能夠基於一款 IDE 快速的進行 RT-Thread 項目開發。日前,RT-Thread Studio V1.0.2 也已經正式發布了。
  • 1-Linux的環境配置(jdk/tomcat/maven)
    centos環境後。下安裝jdk 1.檢查原本系統中的jdk版本 如果有就卸載掉 檢查: rpm -qa|grep jdk 卸載: sudo yum remove xxx(檢查指令中找的的結果) 2.修改jdk-7u80-linux-x64.rpm 的權限 chmod 777 jdk-7u80-linux-x64.rpm3.安裝jdk 默認的安裝路徑: /usr