將RT-Thread移植到MCUXPressoIDE上(基于FRDM-MCX C444)
RT-Thread默認(rèn)支持的IDE只有IAR 和 Keil, 那如何將RT-Thread移植到NXP MCUXPressoIDE上呢?本文內(nèi)容比較簡單但稍有瑣碎,希望對有需要的小伙伴有所幫助。
本文引用地址:http://www.ex-cimer.com/article/202502/467297.htmMCUXpresso IDE是由恩智浦官方推出的基于Eclipse的集成開發(fā)環(huán)境,是LPCXpresso IDE的升級版本。它具有以下特點(diǎn):
◆ 完全免費(fèi),支持所有NXP的MCU產(chǎn)品線
◆ 包含MCUXpresso配置工具(SDK Builder),可視化配置外設(shè)
◆ 基于Eclipse平臺,支持豐富的插件生態(tài)
RT-Thread是一個開源的物聯(lián)網(wǎng)操作系統(tǒng),由中國開發(fā)者主導(dǎo)開發(fā),具有以下特點(diǎn):
◆ 開源、中立、穩(wěn)定可靠
◆ 組件豐富,生態(tài)完善
◆ 軟件包管理系統(tǒng),降低開發(fā)難度
◆ 提供實時性強(qiáng)、資源占用小的內(nèi)核
◆ 支持標(biāo)準(zhǔn)POSIX接口
◆ 完善的中文文檔支持
本文受眾:
本文面向熟悉RT-Thread并需要將其移植到MCUXPressoIDE的用戶. 本文以FRDM-MCX C444為例,但是其中的移植步驟基本上是通用的, 其他NXP的芯片移植也可以借鑒這篇文章的內(nèi)容。
本文所涉及的軟件版本:
◆ MCUXPressoIDE: 24.9 [Build 25] [2024-09-26]
◆ SDK: SDK_2_16_000_FRDM-MCX C444.
◆ RT-Thread: V5.2.0
軟硬件準(zhǔn)備:
1. 下載并安裝SDK. 導(dǎo)入MCUXpressoIDE并且確保您已經(jīng)熟悉基本操作(可以導(dǎo)入SDK工程并成功運(yùn)行一個基本的SDK helloworld).確保下載,調(diào)試,串口輸出等基本技能已經(jīng)掌握. 這些內(nèi)容和RT-Thread沒有任何關(guān)系,具體教程可以參見官方上手指南:
https://www.nxp.com/document/guide/?getting?-started-with-frdm-MCX C444:GS-FR?DM-MCX C444
2. 下載RT-Thread源碼(本文以5.20為準(zhǔn)),因為目前RT-Thread主干已經(jīng)支持了FRDM-MCX C444(Keil, GCC),所以強(qiáng)烈建議先使用Keil編譯FRDM-MCX C444 RT-Thread工程,并且運(yùn)行,確認(rèn)基本的軟硬件配置是OK的.具體Keil下指南見: https://github.com/RT-Thread/rt-thre?ad/tree/master/bsp/n?xp/mcx/MCX C
移植步驟:
1. 基于SDK創(chuàng)建一個新的工程(本文以SDK hello_world為藍(lán)本).創(chuàng)建好后可以給整個工程改個名字,方便識別,養(yǎng)成好習(xí)慣(可選):
2. 將RT-Thread源代碼文件復(fù)制進(jìn)工程,并且將RT-Thread文件夾添加進(jìn)編譯系統(tǒng):
3. 因為RT-Thread沒有專門針對MCXPressoIDE的構(gòu)建系統(tǒng),所以接下來一個主要的任務(wù)就是將RT-Thread中不需要的源代碼刪除.這個過長相當(dāng)繁瑣(基本占移植工作的95%以上),并且需要對RT-Thread本身的源代碼有一定了解,這里僅僅舉一個例子:
比如有關(guān)真對處理器架構(gòu)的相關(guān)移植文件文件夾在RT-Thread/libcpu中,MCX C444是ARM Cortex-M0+內(nèi)核的,且MCXPressoIDE是基于GCC編譯器的,所以我需要只保留rt-threadlibcpuarmcortex-m0中context_gcc.S其余文件(文件夾)需要通通刪除. RT-Thread其他地方的源碼,包括C源碼也有很多需要類似的處理(總共有100+處),這里就不在一一舉例了,可以通過查看GCC構(gòu)建中的Makefile文件或者env工具自動構(gòu)建出來的Keil/IAR工程對比進(jìn)行操作。
4. 添加Include路徑: 如下圖所示. 這一部分是否完成可以嘗試編譯來確認(rèn),如果都編譯通過,則說明這步基本沒問題:
5. 將hello_world.c改名為main.c,并且將hello_world工程中board.c也替換為MCX C444 RT-Thread工程中的board.c 并且修正一些編譯過去,使之能通過編譯.
6. 對于RT-Thread移植,需要幾個特定的保留段(Keep section),因此我們要手動修改Linker File:
然后在linker File里添加如下字段:
7. 到此, 移植步驟基本結(jié)束. 重新編譯整個工程,并且下載到開發(fā)板中,復(fù)位后,打開串口.波特率115200. 會出現(xiàn)RT-Thread開機(jī)log, 并且工程默認(rèn)已經(jīng)實現(xiàn)了串口和GPIO驅(qū)動, 默認(rèn)使能了Finish命令行 輸入”help”會打印幫助信息. ,另外開發(fā)板紅色LED會以1Hz閃爍;
到此移植工作結(jié)束。注意:本工作只是實現(xiàn)了一個最小系統(tǒng)的移植,RT-Thread有眾多的組件和生態(tài),如果需要可以涉及繼續(xù)手工移植源碼,另外本工程的device driver只實現(xiàn)了pin和 serial,如需其他driver需要手工添加。
最后移植成功的完整工程將會隨后發(fā)布在NXP的 AppcodeHub上,歡迎下載嘗鮮!
評論