技術洞察 | 如何在英飛凌 AURIX? TC3xx 系列單片機上移植 FreeRTOS 實時操作系統(tǒng)
本文作者
本文引用地址:http://2s4d.com/article/202504/469650.htmDi Wang
英飛凌科技大中華區(qū) CAE 客戶支持工程師
最近在 新聞 中,大家了解到英飛凌為其 AURIX? TC3x 微控制器(MCU)添加了對FreeRTOS的支持。借助實時操作系統(tǒng)(FreeRTOS),功能強大的微控制器 AURIX? TC3xx MCU 能夠高效管理硬件和軟件資源,確保任務的及時和可靠執(zhí)行。FreeRTOS作為硬件和應用軟件之間的中介,使開發(fā)者能夠專注于應用代碼,無需處理硬件的復雜性,從而實現(xiàn)應用代碼的可移植性和可重用性,并縮短上市時間。
本文介紹了在 AURIX? TC3xx 單片機上移植 FreeRTOS 實時操作系統(tǒng)的操作步驟,讀者可以使用 Triboard 開發(fā)板和免費的 ADS 開發(fā)平臺,快速移植 FreeRTOS 到自己使用的 TC3xx MCU上,創(chuàng)建任務并實現(xiàn) LED 的閃燈演示。
1、前言
FreeRTOS是一款廣泛使用的開源實時操作系統(tǒng)(RTOS),具有輕量級、模塊化和易用的特點,適用于資源受限的嵌入式系統(tǒng)開發(fā)。 它支持多任務調度、任務間通信和同步,并提供豐富的中間件支持,便于開發(fā)者快速構建高效、可靠的應用程序。
英飛凌的AURIX? TC3x MCU采用符合ASIL-D/SIL-3標準的設計,滿足汽車和工業(yè)市場的嚴格要求。它基于高性能的TriCore?架構,具備實時能力、先進的功能安全特性和功能可靠性, 是安全關鍵應用的理想選擇 。FreeRTOS的可用性使客戶能夠在成熟且功能豐富的開源環(huán)境中快速構建應用程序。將FreeRTOS集成到AURIX? TC3x MCU中,不僅能夠助力汽車和工業(yè)市場的廣大客戶快速進行功能評估,而且為在非AUTOSAR項目中快速遷移應用代碼提供了可能。
2、參考鏈接
參考鏈接一
參考鏈接二
參考鏈接三
3、準備 ADS 開發(fā)環(huán)境
ADS (AURIX? Development Studio)是英飛凌推出的一個免費的集成開發(fā)環(huán)境,內嵌 Tasking 編譯器的免費版本,并集成大量AURIX? TC3xx 微控制器的例子工程。用戶可以快速上手,通過導入不同模塊的例子工程,編譯并下載到開發(fā)板中,進行功能評估和開發(fā)。( 下載鏈接 )
如圖所示:
4
準備 Triboard 開發(fā)板
ADS 開發(fā)環(huán)境支持各種 AURIX? TC3xx MCU的開發(fā)板,比如Lite Kit、ShieldBuddy、TFT Kit或Triboard。本文基于 TC399 Triboard ,其板載有8個 LED 供測試使用,本文代碼使用 P33.4和 P33.5引腳來控制最左側的LED1和LED2,實現(xiàn)閃爍演示。在下載程序之前,請使用電源線給 Triboard供電,并使用mini USB線連接開發(fā)板到PC機,在 PC 機上開啟 ADS 集成開發(fā)環(huán)境。
如圖所示:
5
打開一個例子工程
安裝完成之后,用戶可打開 ADS平臺,在 File 菜單中選擇 Import 導入,之后在例子工程的代碼庫中找到名為 STM_Interrupt_1 的例子工程,點擊 Finish 完成,即可導入第一個例子工程。 (注:TC397的工程可以使用在TC399的開發(fā)板上)。
如圖所示:
打開工程后,可以在工程上點擊右鍵,選擇 Set Active Project,之后點擊 Build Project 進行編譯。編譯之后,點擊 Debug菜單進行下載調試。如果在Debug Configurations中沒有合適的配置,請首先創(chuàng)建一個配置(使用默認配置在TASKING C/C++ Debugger中創(chuàng)建即可)。這里注意,編譯前需修改 STM_Interrupt.c 文件中的 LED 引腳為 P33.4,以適配 TC399 Triboard 的 LED1 引腳。下載后,點擊Resume運行,可以看到開發(fā)板上最左側的LED燈會閃爍。這個工程是我們進行 FreeRTOS 移植的基礎。
6
移植過程
在準備好了ADS開發(fā)環(huán)境、Triboard開發(fā)板,并下載成功 STM_Interrupt_1 例子工程后,即可開始我們的移植過程。
第一步:下載 FreeRTOS 版本 10.5.1 并解壓縮
用戶可以從 FreeRTOS 的官方網站獲取源碼,將解壓后的 FreeRTOS 文件夾復制到 STM_INTERRUPT_1 例子工程的 OS/FreeRTOS/ 路徑下。( 下載鏈接 )
第二步:整理 Portable 文件夾
打開 FreeRTOS/Portable/ 目錄,刪除所有文件夾,僅保留 MemMang 和 Tasking 文件夾。
第三步:port.c 和 portmacro.h
在 Tasking 文件夾中移除 ARM_CM4F 文件夾,創(chuàng)建一個名為 TC3 的新文件夾,該文件夾將包含兩個文件:port.c 和 portmacro.h。( 下載鏈接 )
第四步:FreeRTOSConfig.h
將 FreeRTOSConfig.h 文件復制到 STM_INTERRUPT_1 例子工程的 Configurations/ 路徑下。( 下載鏈接 )
第五步:修改 Ifx_Cfg.h
參考后面鏈接中的 Ifx_Cfg.h 文件,修改例子工程中的 Configurations/Ifx_Cfg.h 文件。( 下載鏈接 )
第六步:排除不必要的文件
打開 OS/FreeRTOS/portable/MemMang/ 目錄,右鍵點擊 heap_2.c 到 heap_5.c,選擇 Resource Configuration,然后選擇 Exclude from Build。這確保在構建過程中僅使用 heap_1.c
第七步:修改 Cpu0_Main.c 、 STM_Interrupt.c 和 STM_Interrupt.h
讀者可以下載3個源文件并覆蓋例子工程中的相應文件。( 下載鏈接 )
講解:
在 Cpu0_Main.c 中,主要創(chuàng)建了2個任務 task_app_led1 和 task_app_led2,并啟動操作系統(tǒng)的調度器,代碼如下:
在 STM_Interrupt.c 中,對LED1和LED2引腳進行初始化,設置為輸出模式,并給出了2個任務的具體實現(xiàn),主要是定時翻轉 LED1 和 LED2的引腳,代碼如下:
在 STM_Interrupt.h中,對兩個任務函數(shù)的原型給出了聲明。
第八步:重新編譯工程并下載
右鍵點擊工程,選擇「Clean Project」清除編譯文件,之后重新「Build Project」,并在 Debug 菜單中點擊 Debug,之后生成的程序會下載到 TC399 Triboard 開發(fā)板中并進入調試界面,在調試界面點擊 「Resume」運行,觀察開發(fā)板上的 LED1(P33.4)和 LED2(P33.5),它們將分別以 500ms 和 1000ms 的周期閃爍。
評論