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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    1285

    瀏覽量

    40088

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

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

收藏 人收藏

    評論

    相關推薦

    請問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

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

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

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

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

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

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

    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 ?495次閱讀

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

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

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

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

    多核異構通信框架(RPMsg-Lite)

    ,還優化了能耗,為眾多領域帶來了革命性的變革。 異構多核系統是指在一個芯片上集成多種不同類型的處理器核心,這些核心可能采用不同的指令集架構(ISA),具備不同的性能特性和功耗要求。這些核心可以是高性能的通用處理
    的頭像 發表于 03-08 18:20 ?5418次閱讀
    <b class='flag-5'>多核</b>異構通信框架(RPMsg-Lite)

    下載的free_tricore_entry_tool_chain里的Compiler安裝包時出現閃退,安裝不了是為什么?

    為什么我打開我下載的free_tricore_entry_tool_chain里的Compiler安裝包時出現閃退,安裝不了啊?求助
    發表于 02-20 07:13

    DAS能顯示TriCore,UDE或Memtool無法連接的原因?

    打開DAS Device Scanner,列表里顯示了TriCore-Family(點擊其右邊的Start Client,顯示DAS Error:DEVICE_LOCKED),用UDE或Memtool連接卻提示Can\'t connect target。大家有知道為什么嗎
    發表于 02-19 07:19

    hightec新建工程的向導頁面沒有TriCore板可選,是否安裝失敗了?

    hightec新建工程的向導頁面沒有TriCore板可選,是否安裝失敗了(已添加license)
    發表于 02-06 07:05

    求助,在TASKING軟件里如何建立多核工程并能實現3個核運行?

    論壇里看到有基于BaseFramework框架的多核工程,但是怎么在TASKING里直接創建工程?我在TASKING里新建多核工程,并通過SoftwarePlatform插件代碼生成來生成完整的各種
    發表于 02-05 09:09

    “tc1.3”編譯報錯不允許使用向量表編號TriCore?怎么解決?

    “tc1.3” TriCore? 不允許使用矢量表編號
    發表于 01-22 08:33
    主站蜘蛛池模板: 久久精品国产福利电影网| 噜妇插内射精品| 四虎影视国产精品亚洲精品hd| 中国少妇内射XXXHD免费| 激情内射亚洲一区二区三区| 午夜一个人在线观看完整版 | 色综合久久88一加勒比| av天堂网2017avtt| 嗯 用力啊 嗯 c我 啊哈老师| 中文字幕一区在线观看视频| 九九国产精品成人AV麻豆| 亚洲精品一线二线三线无人区| 国产精品久久久久一区二区三区 | 三级视频黄色| 囯产愉拍亚洲精品一区| 日本一卡2卡3卡四卡精品网站| www.x日本| 天天干夜夜曰| 国产九九熟女在线视频| 亚洲国产欧美在线人成aaaa20| 国产婷婷色一区二区三区在线| 亚洲国产精品99久久久久久| 国语大学生自产拍在线观看| 亚洲国产在线2o20| 啦啦啦 中文 中国 免费 高清在线 | 国产亚洲精品久久久久久禁果TV | 色欲档案之麻雀台上淫| 国产强奷伦奷片| 一个人在线观看免费中文www| 么么哒日本影院| 超污视频带污疼免费视频| 无码AV精品一区二区三区| 精品一品国产午夜福利视频| 中文字幕专区高清在线观看 | 麻豆高潮AV久久久久久久| xxx暴力xxx| 亚洲国产中文字幕在线视频| 美女诱点第6季| 国产精品人妻系列21P| 中文字幕本庄优花喂奶| 日本无卡无吗在线|