RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RISC-V內(nèi)核單片機(jī)移植RTOS實(shí)時(shí)操作系統(tǒng)(四)

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

接著以WCH沁恒微電子的赤菟V103(CH32V103)和赤菟V307(CH32V307)兩款RISC-V內(nèi)核單片機(jī)來詳細(xì)說下針對(duì)RISC-V平臺(tái),移植實(shí)時(shí)操作系統(tǒng)的注意點(diǎn)。

今天聊下移植RTOS時(shí)RISC-V內(nèi)核時(shí)單片機(jī)任務(wù)之間的切換。

了解了如何切換至第一個(gè)任務(wù),如何實(shí)現(xiàn)不同任務(wù)之間的切換呢。在這之前想必對(duì)“任務(wù)優(yōu)先級(jí)”,“時(shí)間片輪轉(zhuǎn)”等概念有一定的了解。rt-thread正常運(yùn)行也需要個(gè)定時(shí)器為其提供時(shí)鐘,且任務(wù)初始化時(shí)設(shè)置了任務(wù)優(yōu)先級(jí)。調(diào)度器在就緒的任務(wù)列表中尋找優(yōu)先級(jí)較高的任務(wù)切換執(zhí)行,當(dāng)優(yōu)先級(jí)相同時(shí),調(diào)度器會(huì)按照設(shè)置的時(shí)間片大小來輪流調(diào)度線程,用時(shí)間片來約束任務(wù)的單次執(zhí)行時(shí)長(zhǎng)。不管因優(yōu)先級(jí)還是時(shí)間片耗盡,從當(dāng)前任務(wù)切換至新任務(wù)時(shí)均需要保存當(dāng)前任務(wù)的上下文至當(dāng)前任務(wù)的堆棧區(qū),獲取新任務(wù)的堆棧,并從新任務(wù)堆棧區(qū)恢復(fù)上下文,切換并執(zhí)行。

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

poYBAGPYrKSAZiuGAABE-NeiilA166.png

圖1 中斷切換上下文

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

pYYBAGPYrKSAUQ0IAADXExXVYe8165.png

pYYBAGPYrKSAO2twAADWwU_WUEw289.png

poYBAGPYrKSAdsYgAADfNG-MR6Y703.png

pYYBAGPYrKSAE_HWAABU5HjQY-Y047.png

poYBAGPYrKSAAqmUAADocBEAGP0756.png

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634614
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40275
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    379

    瀏覽量

    28124
  • 實(shí)時(shí)操作系統(tǒng)

    關(guān)注

    1

    文章

    197

    瀏覽量

    30753
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2270

    瀏覽量

    46125
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是實(shí)時(shí)操作系統(tǒng)(RTOS)

    實(shí)時(shí)操作系統(tǒng)RTOS)是一種專為實(shí)時(shí)應(yīng)用程序設(shè)計(jì)的操作系統(tǒng)。實(shí)時(shí)應(yīng)用程序需要在特定時(shí)間內(nèi)做出預(yù)
    的頭像 發(fā)表于 11-23 17:14 ?5941次閱讀

    risc-v的mcu對(duì)RTOS兼容性如何

    RISC-V的MCU對(duì)RTOS實(shí)時(shí)操作系統(tǒng))的兼容性主要取決于多個(gè)因素,包括RTOS的版本、RISC-
    發(fā)表于 05-27 16:26

    RISC-V中***會(huì)子活動(dòng)之一:基于RISC-V的鴻蒙開發(fā)板設(shè)計(jì)

    的新一代物聯(lián)網(wǎng)操作系統(tǒng)系統(tǒng)RISC-V單片機(jī)不同于ARM架構(gòu)的單片機(jī)。 RISC-V+鴻蒙,目
    發(fā)表于 06-03 16:26

    如何實(shí)現(xiàn)一個(gè)RISC-V內(nèi)核架構(gòu)的芯片移植工作

    取決于 RTOS 如何實(shí)現(xiàn)當(dāng)然,也可以使用 Software interrupt 來做任務(wù)切換, libcpu/risc-v/nuclei 這里的內(nèi)核移植,就是使用了 Software interrupt
    發(fā)表于 03-25 10:11

    基于RT-Thread操作系統(tǒng)衍生rt-smart實(shí)時(shí)操作系統(tǒng)簡(jiǎn)介

    ,例如 ARM Cortex-A 系列芯片,MIPS 芯片,帶 MMU 的 RISC-V 芯片等。rt-smart 在 RT-Thread 操作系統(tǒng)的基礎(chǔ)上啟用獨(dú)立、完整的進(jìn)程方式,同時(shí)以混合微內(nèi)核模式
    發(fā)表于 06-22 17:56

    基于實(shí)時(shí)操作系統(tǒng)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)

    介紹了Small RTOS 51 多任務(wù)操作系統(tǒng)的基本原理,結(jié)合單片機(jī)控制的電子存包柜,簡(jiǎn)要介紹了移植small RTOS51 及通過消息隊(duì)
    發(fā)表于 01-06 16:21 ?51次下載

    關(guān)于單片機(jī)與嵌入式、操作系統(tǒng)RTOS之間的關(guān)系詳解

    這篇文章我們就來聊一下關(guān)于單片機(jī)與嵌入式、操作系統(tǒng)RTOS 之間的那些事!通過這篇文章,讓你操作系統(tǒng)實(shí)時(shí)性有一個(gè)
    的頭像 發(fā)表于 03-29 14:20 ?7844次閱讀
    關(guān)于<b class='flag-5'>單片機(jī)</b>與嵌入式、<b class='flag-5'>操作系統(tǒng)</b>與 <b class='flag-5'>RTOS</b>之間的關(guān)系詳解

    實(shí)時(shí)操作系統(tǒng)Free RTOS的詳細(xì)介紹

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

    轉(zhuǎn)載:DIY:給單片機(jī)寫個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核!

    轉(zhuǎn)載:DIY:給單片機(jī)寫個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核!
    發(fā)表于 11-13 19:36 ?1次下載
    轉(zhuǎn)載:DIY:給<b class='flag-5'>單片機(jī)</b>寫個(gè)<b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>內(nèi)核</b>!

    基于精簡(jiǎn)指令集的RISC-V內(nèi)核單片機(jī)

    RISC-V就不必多說了,詳細(xì)大家都了解。它是一個(gè)基于精簡(jiǎn)指令集的開源指令集架構(gòu)。與主流的主流的架構(gòu)為x86與ARM架構(gòu)不同,其特點(diǎn)就是完全開源。今天跟大家一起盤點(diǎn)一下國(guó)產(chǎn)RISC-V內(nèi)核
    的頭像 發(fā)表于 10-17 16:49 ?2252次閱讀

    基于RISC-V內(nèi)核單片機(jī)移植RTOS實(shí)時(shí)操作系統(tǒng)(一)

      ARM上移植實(shí)時(shí)操作系統(tǒng)大家可能比較熟悉,且例程較多,對(duì)于RISC-V內(nèi)核單片機(jī),可能相對(duì)
    的頭像 發(fā)表于 01-31 12:08 ?2676次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>(一)

    基于RISC-V內(nèi)核單片機(jī)移植RTOS實(shí)時(shí)操作系統(tǒng)(二)

      今天聊下移植RTOS時(shí)RISC-V內(nèi)核時(shí)單片機(jī)任務(wù)棧保存哪些內(nèi)容。
    的頭像 發(fā)表于 01-31 13:50 ?1641次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>(二)

    基于RISC-V內(nèi)核單片機(jī)移植RTOS實(shí)時(shí)操作系統(tǒng)(三)

      接著以WCH沁恒微電子的赤菟V103(CH32V103)和赤菟V307(CH32V307)兩款RISC-V
    的頭像 發(fā)表于 01-31 13:52 ?1831次閱讀
    基于<b class='flag-5'>RISC-V</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>移植</b><b class='flag-5'>RTOS</b><b class='flag-5'>實(shí)時(shí)</b><b class='flag-5'>操作系統(tǒng)</b>(三)

    Green Hills Software 為 Imagination RISC-V CPU 增加量產(chǎn)就緒的 RTOS 和工具支持

    認(rèn)證的實(shí)時(shí)操作系統(tǒng)RTOS)以增強(qiáng)生態(tài)系統(tǒng)支持。該合作將繼續(xù)擴(kuò)展到 ImaginationCatapult CPU 系列的未來產(chǎn)品上。 μ- veloSity
    的頭像 發(fā)表于 07-06 10:15 ?557次閱讀
    Green Hills Software 為 Imagination <b class='flag-5'>RISC-V</b> CPU 增加量產(chǎn)就緒的 <b class='flag-5'>RTOS</b> 和工具支持

    單片機(jī)操作系統(tǒng)有哪些

    單片機(jī)操作系統(tǒng)RTOS)是一種專門設(shè)計(jì)用于單片機(jī)操作系統(tǒng),它可以提供任務(wù)調(diào)度、內(nèi)存管理、設(shè)備驅(qū)動(dòng)等功能,幫助程序員更高效地開發(fā)嵌入式
    的頭像 發(fā)表于 12-08 16:18 ?5187次閱讀
    RM新时代网站-首页