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

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

3天內不再提示

基于RISC-V內核單片機移植RTOS實時操作系統(四)

CHANBAEK ? 來源:CSDN-借過風景 ? 作者:CSDN-借過風景 ? 2023-01-31 13:54 ? 次閱讀

接著以WCH沁恒微電子的赤菟V103(CH32V103)和赤菟V307(CH32V307)兩款RISC-V內核單片機來詳細說下針對RISC-V平臺,移植實時操作系統的注意點。

今天聊下移植RTOS時RISC-V內核時單片機任務之間的切換。

了解了如何切換至第一個任務,如何實現不同任務之間的切換呢。在這之前想必對“任務優先級”,“時間片輪轉”等概念有一定的了解。rt-thread正常運行也需要個定時器為其提供時鐘,且任務初始化時設置了任務優先級。調度器在就緒的任務列表中尋找優先級較高的任務切換執行,當優先級相同時,調度器會按照設置的時間片大小來輪流調度線程,用時間片來約束任務的單次執行時長。不管因優先級還是時間片耗盡,從當前任務切換至新任務時均需要保存當前任務的上下文至當前任務的堆棧區,獲取新任務的堆棧,并從新任務堆棧區恢復上下文,切換并執行。

ARM中,系統的滴答時鐘由內核定時器Systick提供,并且在pendSV中進行任務切換。類比RISC-V我們內核提供了一個64bit
Systick定時器,同時也有軟中斷SW_handler(其實整個切換也不一定要在某個中斷中切換,只要做好上下文保存即可),需要切換時,置位其相應的pend位,即可觸發進中斷,實現切換。rt-thread中用了三個全局變量,用于中斷切換上下文rt_interrupt_from_thread、rt_interrupt_to_thread、rt_thread_switch_interrupt_flag,前兩個分別用來存儲“from”線程sp指針和“to”線程的sp指針,當需要切換時,flag被函數rt_hw_context_switch_interrupt置位,并觸發進軟中斷如圖1所示。在中斷中實現“from”到“to”線程的切換,并將flag清零。

poYBAGPYrKSAZiuGAABE-NeiilA166.png

圖1 中斷切換上下文

SW中斷函數同樣是一段匯編實現的代碼,內容如下圖2所示,其中重點代碼已經給出注釋,注意查看。從注釋可以看出,其相較于啟動第一個任務多了開頭的就任務保存的過程。值得注意的是赤菟V307支持進中斷后將硬件壓棧臨時關閉,這樣在上下文切換的時候可以手動恢復我們想要的寄存器值,而當中斷返回后,硬件壓棧自動打開,不影響其他外設中斷使用硬件壓棧。而對于沒有此功能的赤菟V103來說,移植操作系統時不能打開硬件壓棧。

pYYBAGPYrKSAUQ0IAADXExXVYe8165.png

pYYBAGPYrKSAO2twAADWwU_WUEw289.png

poYBAGPYrKSAdsYgAADfNG-MR6Y703.png

pYYBAGPYrKSAE_HWAABU5HjQY-Y047.png

poYBAGPYrKSAAqmUAADocBEAGP0756.png

圖2 軟中斷切換上下文過程

對于其他的RTOS也是大同小異,例如鴻蒙LiteOS_M中有個g_losTask全局變量,其是個結構體,內部為兩個任務控制塊類型的指針,分別為*runTask指向當前運行的任務,newTask指向要切換的新任務,騰訊的TencentOS_Tiny中亦有兩個任務控制塊類型的指針k_curr_task指向當前任務,*k_next_task指向下一個要切換任務。這和rt-thread中的“from”和“to”是為異曲同工之處。通過管理操作這些變量,實現任務到任務的切換。

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

    關注

    6008

    文章

    44062

    瀏覽量

    622631
  • 內核
    +關注

    關注

    3

    文章

    1313

    瀏覽量

    39905
  • 移植
    +關注

    關注

    1

    文章

    369

    瀏覽量

    27882
  • 實時操作系統

    關注

    1

    文章

    184

    瀏覽量

    30573
  • RISC-V
    +關注

    關注

    42

    文章

    1962

    瀏覽量

    45258
收藏 人收藏

    評論

    相關推薦

    risc-v的mcu對RTOS兼容性如何

    RISC-V的MCU對RTOS實時操作系統)的兼容性主要取決于多個因素,包括RTOS的版本、RISC-
    發表于 05-27 16:26

    RISC-V中***會子活動之一:基于RISC-V的鴻蒙開發板設計

    的新一代物聯網操作系統系統,RISC-V單片機不同于ARM架構的單片機。 RISC-V+鴻蒙,目
    發表于 06-03 16:26

    RISC-V單片機快速入門01-開發環境搭建 相關資料下載

    前言:從今天開始,我們學習使用RT_Thread國產實時操作系統開發兆易公司推出的RISC-V芯片-GD32VF103CB,IDE使用芯來科技推出的Nuclei Studio IDE,本節我們先完成
    發表于 07-01 08:26

    RISC-V MCU開發 (一):集成開發環境

    RISC-V系列單片機中斷硬件自動保存上下文功能的支持。在包含通用RISC-V/ARM項目開發功能的基礎上,MRS還集成了跨內核單片機工程
    發表于 09-22 14:44

    如何實現一個RISC-V內核架構的芯片移植工作

    取決于 RTOS 如何實現當然,也可以使用 Software interrupt 來做任務切換, libcpu/risc-v/nuclei 這里的內核移植,就是使用了 Software interrupt
    發表于 03-25 10:11

    RT-thread移植教程(FreeRTOS、STM32、RISC-V

    1、單片機移植FreeRTOS實時操作系統移植FreeRTOS比較簡單。僅需要注意以下幾點:1.系統
    發表于 06-16 14:49

    基于RT-Thread操作系統衍生rt-smart實時操作系統簡介

    ,例如 ARM Cortex-A 系列芯片,MIPS 芯片,帶 MMU 的 RISC-V 芯片等。rt-smart 在 RT-Thread 操作系統的基礎上啟用獨立、完整的進程方式,同時以混合微內核模式
    發表于 06-22 17:56

    51單片機能否移植free RTOS操作系統?

    用的是stc8a8k64s單片機,能否在里面移植RTOS操作系統?
    發表于 11-03 06:39

    基于實時操作系統單片機應用系統設計

    介紹了Small RTOS 51 多任務操作系統的基本原理,結合單片機控制的電子存包柜,簡要介紹了移植small RTOS51 及通過消息隊
    發表于 01-06 16:21 ?51次下載

    實時操作系統Free RTOS的詳細介紹

    、協程等,可基本滿足較小系統的需要。 由于RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時
    發表于 06-21 14:30 ?5470次閱讀

    轉載:DIY:給單片機寫個實時操作系統內核!

    轉載:DIY:給單片機寫個實時操作系統內核!
    發表于 11-13 19:36 ?1次下載
    轉載:DIY:給<b class='flag-5'>單片機</b>寫個<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b><b class='flag-5'>內核</b>!

    基于RISC-V內核單片機移植RTOS實時操作系統(一)

      ARM上移植實時操作系統大家可能比較熟悉,且例程較多,對于RISC-V內核單片機,可能相對
    的頭像 發表于 01-31 12:08 ?2148次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內核</b><b class='flag-5'>單片機</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>(一)

    基于RISC-V內核單片機移植RTOS實時操作系統(二)

      今天聊下移植RTOSRISC-V內核單片機任務棧保存哪些內容。
    的頭像 發表于 01-31 13:50 ?1384次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內核</b><b class='flag-5'>單片機</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>(二)

    基于RISC-V內核單片機移植RTOS實時操作系統(三)

      接著以WCH沁恒微電子的赤菟V103(CH32V103)和赤菟V307(CH32V307)兩款RISC-V內核單片機來詳細說下針對RISC-V平臺,
    的頭像 發表于 01-31 13:52 ?1562次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內核</b><b class='flag-5'>單片機</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實時</b><b class='flag-5'>操作系統</b>(三)

    FreeRTOS:一個迷你的實時操作系統內核

    、協程等,可基本滿足較小系統的需要。由于RTOS需占用一定的系統資源(尤其是RAM資源),只有μC/OS-II、embOS、salvo、FreeRTOS等少數實時
    的頭像 發表于 06-29 17:15 ?591次閱讀
    FreeRTOS:一個迷你的<b class='flag-5'>實時</b><b class='flag-5'>操作系統</b><b class='flag-5'>內核</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>