同構(homogeneous)多核:單片機中,多個Core的結構相同,各個Core用的指令集相同。 異構(heterogeneous)多核:單片機中,多個Core的結構不同,不同的Core架構,使用不同的指令集。
本文基于TC397+Tasking實現SMP(Symmetric Multi-Processing,對稱多處理),這里的多核屬于同構多核。相對于SMP,AMP(Asymmetric Multi-Processing,非對稱多處理)主要用于異構多核處理。
本文,主要記錄RTThread多核實現過程中的"雷區"。
1、RTThread多核實現細節
(一)各Core實現硬件初始化
(二)任務初始化
(三)線程間任務切換
如果不是systick觸發的線程切換,即:由于線程狀態掛起觸發的線程切換時,需要判斷線程是否上鎖,如果已經解鎖,則需要解鎖之后在進行線程切換,避免死鎖。多核rt_hw_context_switch()的接口實現如下所示:
(四)中斷切換標志置位時機
每次程序進入系統心跳中斷服務例程時,需要先置位中斷切換標志Flag,完成系統心跳的累加后復位。注意:不同于單核處理,多核處理中,此處還需要對中斷切換進行處理,即:判斷程序是否超時,如果超時,則對應的pcpu->irq_switch_flag置位,需要進行中斷線程切換處理。代碼實現如下所示:
(五)線程上鎖/解鎖操作
上鎖處理,對應代碼實現如下所示:
解釋:__cmpswapw((address), ((unsigned long)value), (condition) ),上鎖處理時,如果address處的值==condition,則將value值賦寫到address位置。在Tricore架構中,__cmpswapw操作是原子操作,可以避免多核的并行訪問。
解鎖處理,對應的代碼實現如下所示:
(八)確認線程是否在目標Core運行
如果想確認線程是否在目標Core運行,在目標線程設置一個斷點(Breakpoint)即可,如下所示:
2、RTThread任務調度
(三)core1_thread_1運行周期
2、源碼鏈接
多核與單核的切換,在rtconfig.h文件中,使能或者關閉宏RT_USING_SMP即可打開/禁用SMP。
本文的RTThread中,啟用了2個Core(主核Core0,一個從核Core1),如果需要啟用更多的從核,可以在本文的基礎上打開其余從核,其余從核的處理與Core1類似。
受限于時間和我的水平,本文在零零碎碎的時間里整理完,實現未必最優。而且,我并未嚴格的按照RTThread的架構處理,寫的稍微有些隨心所欲。大家可以基于我的工程進行調試和二次開發,以便于達到理解OS內核、任務切換等相關知識。
源碼鏈接地址如下:
https://github.com/Kaixinguo2021/Tasking_TC397_MultiCore_RTThread.git
往期精彩回顧
Autosar往期精彩文章匯總:151~200
Autosar往期精彩文章匯總:201~251
NVM基礎:解讀"切頁"的頭部信息
診斷基礎:Event內存管理
Autosar通信模塊COM:Update-Bits詳解
Lin總線基礎:為什么Master節點需要外接上拉電阻
———————End———————
![](https://file1.elecfans.com//web2/M00/A4/1A/wKgaomUAQTiANR6kAAM1SltvouI658.png)
![](https://file1.elecfans.com//web2/M00/A4/1A/wKgaomUAQTqAZ9K5AHiX-BnG6Ho431.gif)
-
RT-Thread
+關注
關注
31文章
1305瀏覽量
40387
原文標題:基于Tricore架構的RTThread多核實現
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何更新rtthread studio自帶的默認庫?
請問AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省算力?
請問rtthread的外設驅動為什么不實現posix接口?
Tricore MCU是否只能在特定時序下識別連接了OCDS?
求助,關于ESP32多核使用問題求解答
Tricore Tc397 SPI能否發送超過32位的幀呢?
使用AURIX studio開發帶有FreeRTOS的MCU TC387-QP TriCore,如何實現GPIO ISR功能?
Tricore TC37x和TC36x是否只有在Tricore MCU啟動時連接了調試器,看門狗定時器才會停止?
微內核實時操作系統的介紹
risc-v多核芯片在AI方面的應用
多核異構通信框架(RPMsg-Lite)
![<b class='flag-5'>多核</b>異構通信框架(RPMsg-Lite)](https://file1.elecfans.com/web2/M00/C4/52/wKgaomXq5pmAHx8GAAARRxObkIo241.jpg)
評論