色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Tricore架構的RTThread多核實現

RTThread物聯網操作系統 ? 來源:未知 ? 2023-09-12 18:40 ? 次閱讀
在《基于Hightec+TC375TP的RT-Thread移植詳解》一文中,基于Tricore實現了單核RTThread的移植。最近,花了些時間完成遺留的任務:基于Tricore的多核移植。目前,多數項目中的單片機都具備多核,多核單片機似乎已經是項目的標配。如果搞汽車電子,不理解OS(Operating System),似乎感覺少了什么,就好像吃面不吃蒜的感覺。對于多核,又分為同構(homogeneous)多核和異構(heterogeneous)多核。
  • 同構(homogeneous)多核:單片機中,多個Core的結構相同,各個Core用的指令集相同。
  • 異構(heterogeneous)多核單片機中,多個Core的結構不同,不同的Core架構,使用不同的指令集。

本文基于TC397+Tasking實現SMP(Symmetric Multi-Processing,對稱多處理),這里的多核屬于同構多核。相對于SMP,AMP(Asymmetric Multi-Processing,非對稱多處理)主要用于異構多核處理。

本文,主要記錄RTThread多核實現過程中的"雷區"。

1、RTThread多核實現細節

(一)各Core實現硬件初始化

由于各個Core所使用的硬件資源不同,因此,各個Core在初始化時,需要實現對應的外設。eg:提供心跳的系統定時器(System Timer),本文Core1的外設初始化在Core1_init()中完成。從核除了初始化自身的硬件以外,還需要調用rt_system_scheduler_start()接口啟動調度表,代碼示意如下所示:

提示:上述代碼中,從核(Core1)初始化了一個線程。當然,在主核(Core0)完成所有核的線程初始化也可以。

(二)任務初始化

在Tricore架構中,雖然不同Core使用的CSA(Context Save Areas)不同,但是,線程Thread(等同Task)的初始化可以在主核中完成,之后通過rt_thread_control()接口,為線程靜態分配控制的Core,eg:分配Core1調度led_thread_thread線程,代碼示意如下:

(三)線程間任務切換

如果不是systick觸發的線程切換,即:由于線程狀態掛起觸發的線程切換時,需要判斷線程是否上鎖,如果已經解鎖,則需要解鎖之后在進行線程切換,避免死鎖。多核rt_hw_context_switch()的接口實現如下所示:

(四)中斷切換標志置位時機

每次程序進入系統心跳中斷服務例程時,需要先置位中斷切換標志Flag,完成系統心跳的累加后復位。注意:不同于單核處理,多核處理中,此處還需要對中斷切換進行處理,即:判斷程序是否超時,如果超時,則對應的pcpu->irq_switch_flag置位,需要進行中斷線程切換處理。代碼實現如下所示:

(五)線程上鎖/解鎖操作

上鎖處理,對應代碼實現如下所示:

解釋:__cmpswapw((address), ((unsigned long)value), (condition) ),上鎖處理時,如果address處的值==condition,則將value值賦寫到address位置。在Tricore架構中,__cmpswapw操作是原子操作,可以避免多核的并行訪問。

解鎖處理,對應的代碼實現如下所示:

注意:上鎖/解鎖必須成對出現。如上代碼中,上鎖/解鎖處理中都有一個while操作,這也是為什么過多的spinlock會影響CPU效率的原因。
(六)主核(Core0)與從核(Core1)同步時機
主核(Core0)與從核(Core1同步時機可以選擇在各自硬件初始化完成后進行,否則,從核可能會訪問到空地址,進而進入Trap。完成同步后,主/從核進行線程操作,代碼示意如下:

(七)空閑線程時間片設置
本文修改了空閑線程的默認時間片,由默認的32tick修改為10個tick,目的:保證調度的準確性。為什么這樣改?暫時未細查,留給未來。

(八)確認線程是否在目標Core運行

如果想確認線程是否在目標Core運行,在目標線程設置一個斷點(Breakpoint)即可,如下所示:

2、RTThread任務調度

本文Core0創建了一個主線程main_thread(周期:50ms),一個空閑線程idle[0];Core1創建了兩個線程led_thread_thread(周期:20ms)、core1_thread_1(周期:30ms),以及一個空閑線程idle[1]。
(一)main_thread運行周期

(二)led_thread_thread運行周期

(三)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往期精彩文章匯總:1~70
Autosar往期精彩文章匯總:71~100
Autosar往期精彩文章匯總:101~150

Autosar往期精彩文章匯總:151~200

Autosar往期精彩文章匯總:201~251

CAN通信:Busoff問題知多少

NVM基礎:解讀"切頁"的頭部信息

診斷基礎:Event內存管理

Autosar通信模塊COM:Update-Bits詳解

Lin總線基礎:為什么Master節點需要外接上拉電阻


點擊下方關注,一起聊聊Autosar/嵌入式,如果需要,聯系作者進群,給你更專業的解答


———————End——————



點擊閱讀原文報名


原文標題:基于Tricore架構的RTThread多核實現

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RT-Thread
    +關注

    關注

    31

    文章

    1332

    瀏覽量

    41113

原文標題:基于Tricore架構的RTThread多核實現

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    請問移植rtthread nano版時官網里面系統時鐘函數在哪里實現的?

    我在已有的華大HC32開發板的LED例程里我找不到官網移植教程里的這三個函數,文檔也沒說明這三個函數的移植步驟?到底在哪里找的?是rtthread里的實現還是需要用戶自己找函數實現
    發表于 03-10 06:16

    QorIQ?T1042多核處理器

    QorIQ?T1042多核處理器T1042 QorIQ高級多核處理器綜合了數據網絡、電信/數據通訊、無線網絡基礎設施和國防軍事/航天工程應用所需要的性能卓越數據線路加速及網絡和外圍總線接口
    發表于 01-10 08:48

    如何更新rtthread studio自帶的默認庫?

    我用rtthread studio創建了一個RTThread工程后,再用STM32CubeMAX配置外設,并生成代碼。但我發現工程使用的HAL庫并不是STM32CubeMAX提供的庫,而是
    發表于 09-27 07:02

    請問AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省算力?

    AURIX TC3xx tricore架構下浮點運算和將浮點數小數點去掉變成整數來計算哪種方式更加節省算力? 比如一個浮點數12.89V,如果將其寫成12890mV,再參與計算,哪種方式更加節省算力
    發表于 08-26 06:54

    請問rtthread的外設驅動為什么不實現posix接口?

    外設驅動想支持posix接口,如select\\poll、read、write、ioctl,希望能支持異步通知、輪詢、batch設置功能。但是rtthread在通過
    發表于 07-15 06:34

    rtthread 5.20安裝systemview 2.52a出錯的原因?

    在 SEGGER_SYSVIEW_RTThread.c中 Info.sName = thread->name; 提示 packages/SystemView-v2.52a
    發表于 07-12 09:36

    Tricore MCU是否只能在特定時序下識別連接了OCDS?

    我使用的是 Tricore TC37x 和 TC36x。 據我所知,當連接 OCDS 調試器時,Tricore 會暫停其看門狗定時器。 我想知道的是,Tricore MCU 是否只能在特定時序下識別
    發表于 07-05 07:48

    求助,關于ESP32多核使用問題求解答

    關于esp32的多核使用,除了使用xTaskCreatePinnedToCore函數來控制線程跑的核心外能否有其他的實現比如: 現在有兩個bin文件,每個核心同時跑不同的bin文件,這種是否能夠實現
    發表于 06-17 06:28

    Tricore Tc397 SPI能否發送超過32位的幀呢?

    我正在研究 Tricore Tc397 SPI。 看起來,datawith 是 2-32 位。 是否有辦法在一個幀中通過 SPI 發送超過 32 位(例如 64 位)的數據? 這里的一幀是指 CS 保持低電平,SCLK 持續。
    發表于 05-28 07:16

    使用AURIX studio開發帶有FreeRTOS的MCU TC387-QP TriCore,如何實現GPIO ISR功能?

    我正在使用 AURIX studio 開發帶有 FreeRTOS 的 MCU TC387-QP TriCore。 誰能指導我們如何實現 GPIO ISR 功能?
    發表于 05-28 06:19

    TC3x多核使用與TC2x多核使用相比是否有任何限制?

    大家好,TC3x 多核使用與 TC2x 多核使用相比是否有任何限制? 舉例說明:TC3x 是否不允許在不同內核運行的代碼之間進行多內核共享數據交換?
    發表于 05-22 07:32

    Tricore TC37x和TC36x是否只有在Tricore MCU啟動時連接了調試器,看門狗定時器才會停止?

    我使用的是 Tricore TC37x 和 TC36x。 據我所知,當連接 OCDS 調試器時,Tricore 會暫停其看門狗定時器。 我想知道的是,Tricore MCU 是否只能在特定時序下識別
    發表于 05-21 07:29

    微內核實時操作系統的介紹

    微內核實時操作系統(Microkernel Real-Time Operating System, μRTOS)是一種專為實時設計的操作系統。它采用微內核架構,以提高系統的可靠性、安全性和可擴展性。以下是關于微內核實時操作系統的
    的頭像 發表于 05-11 17:13 ?670次閱讀

    risc-v多核芯片在AI方面的應用

    RISC-V多核芯片在AI方面的應用主要體現在其低功耗、低成本、靈活可擴展以及能夠更好地適應AI算法的不同需求等特點上。 首先,RISC-V適合用于高效設計實現,其內核面積更小,功耗更低,使得它能
    發表于 04-28 09:20

    多核架構高性能電機控制芯片

    基于傳統單核架構的電機控制芯片已無法應對新出現的嚴峻挑戰,多核架構的控制芯片應運而生。雙核架構芯片已在許多領域成功應用,并顯示出其獨特的優勢,可以利用無傳感器技術
    的頭像 發表于 04-19 14:46 ?8622次閱讀
    <b class='flag-5'>多核</b><b class='flag-5'>架構</b>高性能電機控制芯片

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 亚洲蜜芽在线观看精品一区 | 久久re热线视频精品99 | 亚洲欧美一区二区三区九九九 | 欧美激情精品久久久久久不卡 | 久久99r66热这里有精品 | 97国产露脸精品国产麻豆 | 果冻传媒视频在线观看完整版免费 | 一二三四在线视频社区8 | 特大黑人娇小亚洲女mp4 | 午夜伦午夜伦锂电影 | 国产精品久久久久久久久久久 | 亚洲国产精麻豆 | 色橹橹欧美在线观看视频高清 | 中国女人精69xxxxxx视频 | tube日本护士 | 牲高潮99爽久久久久777 | 亚洲AV无码专区国产精品麻豆 | 亚洲精品免费视频 | V8成品人视频 | 456亚洲人成在线播放网站 | 欧美精品色婷婷五月综合 | 果冻传媒视频在线播放 | 女人被躁到高潮嗷嗷叫69 | 国产99在线视频 | 婷婷亚洲AV色香蕉蜜桃 | 成人五级毛片免费播放 | 蜜芽手机在线观看 | 亚洲天堂一区二区三区 | 午夜伦伦电影理论片大片 | 老司机亚洲精品影院 | 成人国内精品久久久久影 | 成人性生交片无码免费看 | 小伙无套内射老女人 | 99精品久久精品一区二区 | 国产色综合久久无码有码 | 囯产精品久久久久免费蜜桃 | 国产精品久久久久一区二区三区 | 在线亚洲国产日韩欧洲专区 | 国内精品久久影视免费 | 丰满饥渴老太性hd | 色欲国产麻豆一精品一AV一免费 |