一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒ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 12:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ARM上移植實(shí)時(shí)操作系統(tǒng)大家可能比較熟悉,且例程較多,對于RISC-V內(nèi)核的單片機(jī),可能相對比較陌生。下面結(jié)合WCH沁恒微電子的赤菟V103(CH32V103)和赤菟V307(CH32V307)兩款RISC-V內(nèi)核芯片來詳細(xì)說下針對RISC-V平臺(tái),移植實(shí)時(shí)操作系統(tǒng)的注意點(diǎn)。

之所以選擇赤菟V103和赤菟V307兩個(gè)芯片主要是其極具代表性:首先,直觀上其外設(shè)的使用方法和我們之前熟悉的F103,F(xiàn)107等是兼容的,這樣降低了我們使用和移植時(shí)的難度,基于WCH提供的外設(shè)庫,我們以前上層的代碼甚至于不用修改可直接使用。其次,赤菟V103是WCH RISC-V青稞內(nèi)核家族中的青稞V3A內(nèi)核,V307為青稞V4F內(nèi)核,青稞V3內(nèi)核支持RV32IMAC指令集,即除支持RISC-V基本的32位整數(shù)指令集外,還支持硬件乘除法,原子指令,壓縮指令。青稞V4F在青稞V3A的基礎(chǔ)上增加了單精度硬件浮點(diǎn),并且其性能也比青稞V3A高。除此所有的青稞V4內(nèi)核還支持自定義壓縮指令-XW擴(kuò)展,包括以下指令c.lbu/c.lhu/c.sb/c.sh/c.lbusp/c.lhusp/c.sbsp/c.shsp。

這里需要注意的是一般情況下,移植RTOS的時(shí)需要關(guān)閉硬件壓棧,因?yàn)樵谇袚Q任務(wù)時(shí),我們希望自己控制出棧入棧的內(nèi)容。但是針對青稞V4F核,CSR 0x804中有增加控制位(bit5)GIHWSTKNEN(全局中斷和硬件壓棧關(guān)閉使能),可以進(jìn)中斷時(shí)置位該位,關(guān)閉中斷和硬件壓棧,我們手動(dòng)保存當(dāng)前線程棧,恢復(fù)新線程棧,中斷mret返回后,硬件自動(dòng)清除該位,恢復(fù)中斷和硬件壓棧使能。這樣即可保證RTOS下,硬件壓??烧J褂?,保證RTOS下的中斷響應(yīng)速度。

今天聊下需要移植RTOS時(shí)RISC-V內(nèi)核單片機(jī) 需要保存的寄存器 。

RISC-V寄存器如下圖1所示,其中x0-x31為整形寄存器,f0-f31為浮點(diǎn)寄存器(青稞V3沒有浮點(diǎn)寄存器)。 所有帶caller的寄存器,當(dāng)發(fā)生中斷時(shí)需要保存,值得注意的是,WCH的硬件壓棧保存的寄存器僅僅保存整數(shù)的16個(gè)caller saved 寄存器。 正常一個(gè)中斷函數(shù)的寄存器保存我們不用關(guān)心,編譯器會(huì)幫我們做的很好。 但是當(dāng)我們從一個(gè)匯編入口進(jìn)中斷函數(shù)的時(shí)候這些過程就不得不由我們自己來實(shí)現(xiàn)。 寄存器中幾個(gè)相對特殊的x0恒為0,x1是返回地址寄存器ra,函數(shù)調(diào)用時(shí)用來存放返回地址,x2為堆棧指針sp,x3為gp全局指針,用來尋址全局變量。

poYBAGPYk3eAFTd8AAHqW9qrr3s910.png

圖1 RISC-V寄存器

RISC-V內(nèi)核進(jìn)中斷需要保存caller saved(顧名思義,調(diào)用者需要保存)的寄存器。 當(dāng)不開啟硬件浮點(diǎn)時(shí),編譯器會(huì)把16個(gè)寄存器在中斷函數(shù)開始時(shí)存入堆棧,中斷返回前恢復(fù),如下圖2和圖3所示。 我們內(nèi)核支持硬件壓棧,硬件保存和恢復(fù)的也正是這16個(gè)寄存器。 使用硬件壓棧時(shí)需要使能硬件功能,即硬件壓棧使能(不同芯片配置位置不同,詳見手冊中斷章節(jié)),同時(shí)也需要通知編譯器不自動(dòng)生成圖2和圖3中的軟件出入棧的代碼,即在MRS聲明中斷函數(shù)時(shí)由__attribute__((interrupt("WCH-Interrupt-fast")))方式定義編譯器不自動(dòng)添加軟件出入棧代碼, 由__attribute__((interrupt()))方式定義編譯器添加軟件出入棧的代碼。

pYYBAGPYk3eAEDR6AACf8EMfqRk260.png

圖2 整形寄存器入棧

pYYBAGPYk3eADGk3AACGkj2mKOw060.png

圖3 整形寄存器出棧

當(dāng)開啟硬件壓棧并且編譯器中聲明使用硬件壓棧后,中斷函數(shù)匯編代碼如下圖4所示。 可見進(jìn)入中斷后直接執(zhí)行的中斷代碼,形如圖2和圖3中的16個(gè)寄存器的入棧和出棧由硬件在中斷開始和結(jié)束時(shí)自動(dòng)完成。 同時(shí)也可以看出整個(gè)中斷函數(shù)可以減少34條指令。

pYYBAGPYk3eAJYPPAAC03o1uPqQ012.png

圖4 開啟硬件壓棧后中斷函數(shù)匯編代碼

由此也可知道前文說的一般中斷切換上下文時(shí)不開啟硬件壓棧的原因:開啟后中斷返回時(shí)硬件會(huì)復(fù)寫16個(gè)caller saved寄存器。

當(dāng)開啟硬件浮點(diǎn)時(shí),除了上述16個(gè)整形還會(huì)增加20個(gè)浮點(diǎn)寄存器,如下圖5所示。 由此也可以看出,硬件壓棧只對整形的寄存器生效。

poYBAGPYk3eAeIhtAACn65lMYK4894.png

pYYBAGPYk3eAJu4zAACii2XralM873.png

圖5 浮點(diǎn)寄存器出入棧

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

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650502
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9353

    瀏覽量

    377566
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    851

    瀏覽量

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

    關(guān)注

    1

    文章

    202

    瀏覽量

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

    關(guān)注

    46

    文章

    2572

    瀏覽量

    48830
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    RISC-V的MCU對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ī)。
    發(fā)表于 06-03 16:26

    RISC-V MCU開發(fā) ():集成開發(fā)環(huán)境

    RISC-V系列單片機(jī)中斷硬件自動(dòng)保存上下文功能的支持。在包含通用RISC-V/ARM項(xiàng)目開發(fā)功能的基礎(chǔ)上,MRS還集成了跨內(nèi)核單片機(jī)工程
    發(fā)表于 09-22 14:44

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

    處理時(shí)鐘節(jié)拍Cache (可選)libcpu 移植相關(guān) API 介紹RISC-V 內(nèi)核移植RT-Thread RISC-V 內(nèi)核架構(gòu)介紹在
    發(fā)表于 03-25 10:11

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

    ,例如 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ī)控制的電子存包柜,簡要介紹了移植small RTOS51 及通過消息隊(duì)
    發(fā)表于 01-06 16:21 ?51次下載

    RISC-V會(huì)是道曙光嗎?RISC-V與RUST相遇引發(fā)操作系統(tǒng)教學(xué)新嘗試

    身為研究操作系統(tǒng)的老師,陳渝認(rèn)為,RISC-V精簡指令集聽起來屬于硬件范疇,但是其實(shí)RISC-V與軟件有很大的相關(guān)性,因?yàn)樽鳛橹匾?b class='flag-5'>系統(tǒng)軟件的操作系統(tǒng)
    的頭像 發(fā)表于 04-28 18:57 ?1.6w次閱讀

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

    這篇文章我們就來聊下關(guān)于單片機(jī)與嵌入式、操作系統(tǒng)RTOS 之間的那些事!通過這篇文章,讓你操作系統(tǒng)
    的頭像 發(fā)表于 03-29 14:20 ?8657次閱讀
    關(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ù)
    發(fā)表于 06-21 14:30 ?6728次閱讀

    轉(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>!

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

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

    基于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 ?1977次閱讀
    基于<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 ?2246次閱讀
    基于<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:54 ?1990次閱讀
    基于<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 ?839次閱讀
    Green Hills Software 為 Imagination <b class='flag-5'>RISC-V</b> CPU 增加量產(chǎn)就緒的 <b class='flag-5'>RTOS</b> 和工具支持