一、搭建開發(fā)環(huán)境
1.基于windows
下載 RT-Thread 源碼,推薦下載3.1.0及以上版本。
-
安裝 python 以及 SCons 工具
- 將路徑加入到系統(tǒng) PATH 變量中
-
安裝 GCC 編譯工具鏈 【動態(tài)模塊只支持gcc編譯】
- 選擇Sourcery G++ Lite 2011.03-42
- Windows 環(huán)境下使用 GCC
- 將路徑加入到系統(tǒng) PATH 變量中
-
下載 RT-Thread Env 工具,推薦下載1.0.0及以上版本。
- QEMU 模擬的 ARM vexpress A9 開發(fā)板的板級支持包 (BSP) 位于 RT-Thread 源碼 BSP 目錄下的 qemu-vexpress-a9 文件夾,此 BSP 實(shí)現(xiàn)了 LCD、鍵盤、鼠標(biāo)、SD 卡、以太網(wǎng)卡、串口等相關(guān)驅(qū)動。
Env 中攜帶了
Python & scons環(huán)境
2.基于ubuntu環(huán)境
- 下載 RT-Thread 源碼,使用命令:
git clone https://github.com/RT-Thread/rt-thread.git - 安裝 QEMU,使用命令:
sudo apt-get install qemu - 安裝 Scons,使用命令:
sudo apt-get install scons - 安裝編譯器,使用 apt-get 命令安裝的編譯器版本太舊會導(dǎo)致編譯報(bào)錯(cuò),可依次使用如下命令下載安裝新版本,下載鏈接和解壓文件夾名因下載版本而異:
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2cd /optsudo tar xf ~/Downloads/ gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2- 安裝 ncurses 庫,使用命令:
sudo apt-get install libncurses5-dev
二、開發(fā)編譯
1.RT-Threand 源碼目錄
RT-Thread
├─bsp 各個(gè)平臺的工程目錄
├─components 組件源碼目錄
├─documentation 文檔目錄
├─examples 測試用例目錄
├─include 頭文件目錄
├─libcpu 存放各個(gè)平臺的啟動程序以及線程切換程序
├─tools SCons 腳本目錄
└─src RT-Thread 內(nèi)核源碼目錄
推薦使用 SCons編譯或者使用 MDK 編譯
- BSP 為 bsp\stm32f40x 目錄內(nèi)容
- applications 目錄下存放一些頂層應(yīng)用程序
- drivers 目錄下存放 RT-Thread 設(shè)備驅(qū)動程序
- Libraries 目錄下存放 stm32 官方固件庫代碼
- rtconfig.h 為當(dāng)前工程的頭文件,用于控制 RT-Thread 組件裁剪
- Project.uvproj 為 MDK 工程文件
- Template.uvproj 為生成 MDK 工程文件模板文件,由 SCons 使用。
- Stm32_rom.ld 為 GCC 鏈接文件,用于 GCC 編譯
- Stm32_rom.sct 為 MDK 分散加載文件,當(dāng)使用 SCons 調(diào)用 armcc 編譯時(shí)需要使用
- rtconfig.py 為 python 腳本,主要用于配置 SCons 的底層編譯器。
- SConscript 為 python 腳本,由 SCons 使用
- SConsctruct 為 python 腳本,由 SCons 使用

image
2.BSP工程配置
- 進(jìn)入相應(yīng)bsp工程目錄,執(zhí)行:menuconfig
- menuconfig的內(nèi)容與rtconfig.h文件對應(yīng),其修改的內(nèi)容也會在rtconfig.h文件中修改。
- 下載更新軟件包:pkgs --update
3.編譯
RT-Thread 的通過 SCons 支持三種編譯器,編譯器的選擇在 rtconfig.py 中指定
-
使用GCC編譯
CROSS_TOOL='gcc' ... if CROSS_TOOL == 'gcc': EXEC_PATH ='D:/Program Files/CodeSourcery/Sourcery G++ Lite/bin' -
使用keil編譯
CROSS_TOOL='keil' ... elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = 'D:/Keil' -
使用MDK IDE編譯
-
SCons 自動生成 MDK 工程 ,然后用IDE打開工程編譯
scons --target=mdk4 -s #或 scons --target=mdk5 -s
-
執(zhí)行編譯
scons [-j4]
#清除編譯目標(biāo)
scons -c
編譯完成后,會在 BSP 當(dāng)前目錄下生成rtthread.bin和rtthread-stm32f4xx.axf
編譯注意:由于windows端的路徑表示方式與linux不同,該工程是基于linux編寫的,所以有些文件路徑需要使用轉(zhuǎn)義符r來做轉(zhuǎn)義處理。
三、使用QEMU運(yùn)行RT-Thread
在bsp下運(yùn)行qemu
qemu.bat