對於學習嵌入式實時操做系統,首先第一步要進行的是搭建好對應的開發環境,只有對應的環境搭建好了,才能進行下一步的開發工做。html
RT-Thread爲了方便廣大開發者進行入門或者深刻使用,其官網提供了十分豐富的參考文檔,官網的文檔中心連接:https://www.rt-thread.org/document/site/
git
RT-Thread的文檔中心提供了入門學習,進階學習,應用開發這三個層次的文檔,開發者能夠根據本身的實際狀況進行選擇。然而,對於一些沒有基礎的入門級開發者,面對如此複雜繁多的文檔,不免會不知道如何下手,不知道先看哪一篇文檔比較好。工具
在上完Sean老師的課程後,我進行了一些關於搭建開發環境的總結,主要是關於ENV配置工具和BSP包的使用。
學習
在開發環境搭建以前,要先下載好ENV配置工具和RT-Thread相關源碼,ENV配置工具的下載連接,以下:https://www.rt-thread.org/page/download.html
開發工具
注意:在安裝ENV工具以前,須要確保電腦已經正確安裝了Git管理工具並配置到系統的環境變量當中,Git管理工具能夠從如下連接進行下載: https://git-scm.com/downloads,具體安裝方式可自行上網查詢。url
ENV工具的安裝路徑不能包含中文和空格,應該使用全英文路徑。spa
RT-Thread的相關源碼,下載連接:https://gitee.com/rtthread/rt-thread?_from=gitee_search操作系統
下載完成後,解壓出來的文件夾以下圖所示。
.net
ENV是RT-Thread提供的一個輔助開發工具,使用ENV能夠很方便地構建出RT-Thread的工程項目。ENV提供了IAR、MDK、GCC工程的構建,集成了menuconfig配置裁剪工具,軟件包管理功能,等等。命令行
其中,menuconfig管理工具,沿用的是Linux kernel的Kconfig機制,當RT-Thread內核須要增長或減小某個功能時,可使用menuconfig方便地進行配置,而不用從源碼端一步步進行移植,提供了開發者的開發效率。
關於ENV工具的使用方法,能夠參考RT-Thread的官方文檔裏面關於ENV的章節,有詳細的介紹。https://www.rt-thread.org/document/site/programming-manual/env/env/#
RT-Thread針對不一樣的芯片平臺,提供了一些已經構建好的BSP(Board Support Package)板級支持包,開發者能夠直接使用這些BSP包進行擴展開發,目前RT-Thread提供的BSP包以下圖所示。
因爲介子開發板使用的主控芯片是AT32F407,因此,開發板是能夠基於at32這個BSP包進行開發的。進入bsp/at32/at32f407-start目錄,能夠看到BSP包的主要構成包括:工程模板,經過scons構建的工程,rtconfig.py構建腳本,等等,以下圖所示。
在安裝和配置好ENV工具後,在at32f407-start目錄裏面,右鍵打開ENV工具命令行終端,以下圖所示。
RT-Thread是使用scons命令來進行工程構建的,若是是使用IAR或MDK來進行工程開發,可使用如下命令構建對應的工程。構建IAR工程:scons --target=iar。構建MDK工程:scons --target=mdk5或scons --target=mdk4
menuconfig是一種圖形化配置工具,,開發者可使用menuconfig工具對RT-Thread內核進行配置和裁剪,關於menuconfig的快捷鍵介紹,以下圖所示。
注意,每次使用menuconfig對BSP進行配置後,都須要使用scons命令對相應的工程進行從新生成,以便配置能生效。
細心的開發者會發現,對於at32f407開發板,其BSP包裏面的工程,須要依賴整個RT-Thread源碼才能被正確編譯,然而整個RT-Thread源碼裏面又包含了其餘跟AT32不相關的BSP包,這樣會致使整個工程很龐大和臃腫。
爲了讓BSP包生成跟AT32芯片相關的工程項目,移除其餘不相關的芯片BSP包,可使用如下命令:scons --dist,命令執行後,會在BSP包目錄裏面生成dist目錄,這個目錄裏面包含了整個AT32的工程,能夠把這個工程複製到任何目錄下使用,以下圖所示。
要使用一個BSP包進行開發,通常會通過如下步驟:
1.使用menuconfig命令,對RT-Thread的內核和組件進行配置。
2.配置完成後,根據本身的編譯器狀況,使用scons --target=xxx生成對應的工程。
3.打開對應的工程,便可進行代碼編寫開發。
4.可使用scons --dist命令,移除不相關的芯片,把工程單獨抽離出來。
通俗地總結一下,ENV是一個工具包,這個工具包裏面集成了一些命令,咱們只須要在ENV的命令行窗口輸入指定的命令就能夠進行對應的操做。
menuconfig是工具包裏面其中一個命令,這個命令能夠調用一個圖形化配置界面,可讓開發者方便地對RT-Thread內核進行配置和修改。
scons也是工具包裏面其中個一個命令,這個命令是用來構建咱們經常使用的IAR或MDK工程的,使用scons命令,就能夠很方便地生成IAR或MDK工程,這樣就不用手動地往工程裏面添加源文件和頭文件。