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

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

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

3天內不再提示

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

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

今天聊下移植RTOSRISC-V內核時單片機任務棧保存哪些內容。

上一章中列舉了所有的寄存器,當需要切換任務時刻的寄存器值,除x0恒為0,其他的寄存器無法預知其值,切換時均需要保存(gp寄存器編譯好后,固定不變,理論上可以不操作,為保持一致性和完整性,一并保存),如果使用浮點,還應該包括浮點寄存器。 每個RTOS均會定義一個和上下文保存相關的結構體,以rt-thread為例,可以看到如下圖1的數據結構定義。

pYYBAGPYq96ARIbwAAOAjPNk5hg719.png

圖1 上下文保存結構體

可以看到除了通用寄存器外,還有兩個前文提到的成員mepc、mstatus,其中mstatus中含有中斷的使能控制位,而mepc為機器模式下異常程序指針寄存器,其值會在執行mret后更新給pc,我們正式通過設置該寄存器的值來控制程序運行的切換。

當我們新建一個線程,初始化線程時,會為其開辟一個線程棧(程序中通常設置一個數組),即對上述結構體做初始化,在rt-thread中的代碼如下圖2所示。

poYBAGPYq96AEg1zAAHMQmxj6UA843.png

圖2 線程堆棧初始化

由程序可知,堆棧初始化在線程初始化中被調用,線程初始化程序中首先將整個堆棧空間設成“#”,然后根據堆棧的增長方向設置不同參數,以紅框中的向下增長為例,將線程的入口位置,線程可以帶一個參數,返回地址,堆棧頂部地址。從堆棧初始化程序*rt_hw_stack_init中可以看出,其先將堆棧頂部地址對齊,然后向下偏移一個rt_hw_stack_frame結構體的大小,用于存儲圖1中需要存儲的寄存器,并對該部分空間進行了初始化。其中把線程的入口地址給了mepc,線程輸入參數給a0,mstatus初始值(MPP、MPIE、FS、MIE),即強制機器模式,使能浮點,MPIE為1,MIE為0。如果不帶硬件浮點,可將該值設置為0x1880。另外設置ra為線程的返回地址,一般情況下一個線程我們希望一直運行的,當需要返回時說明該線程不再需要運行,所以返回地址一般是一段將該線程從線程列表中刪除并切換至下一個線程的一段程序,即圖2紅框的中調用的函數_rt_thread_exit。

初始化線程時會定義一個rt_thread結構的全局變量,線程的操作即依靠該結構體。其內部內容如下圖3所示,其內部可以看到一個sp成員,初始化好的堆棧指針即傳給該成員。

poYBAGPYq96AaRzyAADJ3FDL9FI924.png

pYYBAGPYq96Aaa7DAADoOMLOp2w772.png

圖3 rt_thread結構體詳情

綜上可以看出有每個線程一個rt_thread結構體,由rt_thread->sp可獲得該線程的堆棧位置,堆棧的棧頂的sizeof(rt_hw_stack_frame)空間存放了該線程運行需要的CPU寄存器值,剩余空間用于該線程運行時變量的出入棧。

以上的內容在其他RTOS中也能看到,例如上下文保存結構體rt_hw_stack_frame在華為鴻蒙LiteOS_M中有TaskContext,TencentOS_Tiny中有cpu_context_t,而線程管理的結構體rt_thread,LiteOS_M中LosTaskCB,TencentOS_Tiny中有k_task_st等。

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

    關注

    6043

    文章

    44617

    瀏覽量

    638194
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121083
  • 內核
    +關注

    關注

    3

    文章

    1382

    瀏覽量

    40405
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119870
  • RISC-V
    +關注

    關注

    45

    文章

    2322

    瀏覽量

    46528
收藏 人收藏

    評論

    相關推薦

    RISC-V 跑大模型():LLaMA零基礎移植教程

    這是RISC-V跑大模型系列的第篇文章,主要教大家如何將LLaMA移植RISC-V環境里。
    的頭像 發表于 07-17 16:16 ?1447次閱讀
    <b class='flag-5'>RISC-V</b> 跑大模型(<b class='flag-5'>二</b>):LLaMA零基礎<b class='flag-5'>移植</b>教程

    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內核架構的芯片移植工作

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

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

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

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

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

    關于單片機與嵌入式、操作系統RTOS之間的關系詳解

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

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

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

    轉載: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內核單片機

    RISC-V就不必多說了,詳細大家都了解。它是一個基于精簡指令集的開源指令集架構。與主流的主流的架構為x86與ARM架構不同,其特點就是完全開源。今天跟大家一起盤點一下國產RISC-V內核
    的頭像 發表于 10-17 16:49 ?2333次閱讀

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

      ARM上移植實時操作系統大家可能比較熟悉,且例程較多,對于RISC-V內核單片機,可能相對
    的頭像 發表于 01-31 12:08 ?2814次閱讀
    基于<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
    的頭像 發表于 01-31 13:52 ?1896次閱讀
    基于<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
    的頭像 發表于 01-31 13:54 ?1572次閱讀
    基于<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>(四)

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

    認證的實時操作系統RTOS)以增強生態系統支持。該合作將繼續擴展到 ImaginationCatapult CPU 系列的未來產品上。 μ- veloSity
    的頭像 發表于 07-06 10:15 ?599次閱讀
    Green Hills Software 為 Imagination <b class='flag-5'>RISC-V</b> CPU 增加量產就緒的 <b class='flag-5'>RTOS</b> 和工具支持

    RISC-V跑大模型():LLaMA零基礎移植教程

    這是RISC-V跑大模型系列的第篇文章,主要教大家如何將LLaMA移植RISC-V環境里。
    的頭像 發表于 07-10 10:10 ?1126次閱讀
    <b class='flag-5'>RISC-V</b>跑大模型(<b class='flag-5'>二</b>):LLaMA零基礎<b class='flag-5'>移植</b>教程
    主站蜘蛛池模板: 国产色婷婷亚洲99麻豆 | 大肥女ass樱桃 | 国产成人欧美日韩在线电影 | 日日做夜夜欢狠狠免费软件 | 海量激情文学 | 亚洲人成无码久久久AAA片 | 学生无码AV一区二区三区 | 视频一区二区三区蜜桃麻豆 | 热热久久超碰精品中文字幕 | hdxxxx58丝袜连裤袜 | 一区二区三区无码被窝影院 | 国产亚洲精品免费视频 | 高清一区二区亚洲欧美日韩 | jj插入bb| 精精国产www视频在线观看免费 | 黑人干日本美女 | 99久久免费只有精品 | 野花日本韩国视频免费高清观看 | 香蕉久久夜色精品国产小说 | 成年女人色毛片免费 | 亚洲2023无矿砖码砖区 | 国产九九九九九九九A片 | 久久人妻AV一区二区软件 | 色欲天天天综合网免费 | 日本色高清 | 激情女人花 | 女子初尝黑人巨嗷嗷叫 | 处破女免费播放 | 狠狠色综合7777久夜色撩人 | 亚洲理论在线a中文字幕 | 亚洲影院在线播放 | 香蕉久久夜色精品国产小优 | 99精品在线播放 | 暖暖免费观看日本在线视频 | 视频一区视频二区ae86 | 亚洲精品国产拍在线观看 | 亚洲日本一区二区三区在线不卡 | free高跟丝袜秘书hd | 伊人久久中文字幕久久cm | 久久久精品久久久久久 | 少妇的肉体AA片免费 |