新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 技術洞察 | 如何在英飛凌 AURIX? TC3xx 系列單片機上移植 FreeRTOS 實時操作系統(tǒng)

技術洞察 | 如何在英飛凌 AURIX? TC3xx 系列單片機上移植 FreeRTOS 實時操作系統(tǒng)

作者: 時間:2025-04-22 來源:英飛凌 收藏

本文作者

本文引用地址:http://2s4d.com/article/202504/469650.htm

Di Wang

科技大中華區(qū) CAE 客戶支持工程師

最近在 新聞 中,大家了解到為其 ? TC3x 微控制器(MCU)添加了對FreeRTOS的支持。借助實時操作系統(tǒng)(FreeRTOS),功能強大的微控制器 ? MCU 能夠高效管理硬件和軟件資源,確保任務的及時和可靠執(zhí)行。FreeRTOS作為硬件和應用軟件之間的中介,使開發(fā)者能夠專注于應用代碼,無需處理硬件的復雜性,從而實現(xiàn)應用代碼的可移植性和可重用性,并縮短上市時間。

本文介紹了在 ?  單片機上移植 FreeRTOS 實時操作系統(tǒng)的操作步驟,讀者可以使用 Triboard 開發(fā)板和免費的 ADS 開發(fā)平臺,快速移植 FreeRTOS 到自己使用的 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 的周期閃爍。



關鍵詞: 英飛凌 AURIX TC3xx

評論


相關推薦

技術專區(qū)

關閉