0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RISC-V内核单片机移植RTOS实时操作系统(三)

CHANBAEK 来源:CSDN-借过风景 作者:CSDN-借过风景 2023-01-31 13:52 次阅读

接着以WCH沁恒微电子的赤菟V103(CH32V103)和赤菟V307(CH32V307)两款RISC-V内核单片机来详细说下针对RISC-V平台,移植实时操作系统的注意点。

今天聊下移植RTOS时RISC-V内核时单片机切换至第一个任务。

RT-Thread为例,rt-thread和其他RTOS有点区别的是其gcc下的入口函数定义为entry,而main函数则可以被初始化为线程之一,图1为rt-thread的详细的启动流程。rt-thread定义一个rt_thread类型的全局指针rt_current_thread,用于实时获取当前运行的线程。从图9可知,硬件启动后进rtthread_startup,其开始进行了必要的初始化,如系统滴答定时器、堆、串口、调度器、定时器、main线程、空闲idle线程等等,最后执行了rt_system_scheduler_start后转交调度器执行。其内容如下图2所示。

poYBAGECCgiAaInbAAEs3dd2mrs534.png

图1 rt_thread启动流程

pYYBAGPYrEuAWC6IAADViZVU80o027.png

图2 调度器启动

由图2可知,其会查找优先级较高的就绪组优先级,并根据该优先级查找就绪链表,获取优先级较高的任务并得到控制块to_thread,然后调用rt_hw_context_switch_to切换至该任务。其是一段汇编实现的代码,传入的参数为该任务的sp指针。由前文可知,我们可以根据to_thread->sp得到该任务的堆栈位置,该堆栈的顶部空间存储了执行该任务时cpu寄存器的值,由此也可推测该部分汇编代码主要完成的就是从sp处恢复cpu寄存器值,并转而执行该任务。其代码如下图3所示,详见注释。

poYBAGPYrEuAa2jJAAEViOd45Vo522.png

poYBAGPYrEuAcgnxAABtrxtHDbE317.png

图3 切换至第一个任务

由上注释分析可知,rt_hw_context_switch_to通过传入的sp,恢复cpu寄存器,其中mepc寄存器任务初始化时设置为任务的入口地址,ra寄存器设置为返回地址,其指向公用函数_rt_thread_exit。 当mret返回后,pc更新为mepc值,即转向执行任务函数,若其不是一个持续执行的[while(1)]函数,那么其返回至_rt_thread_exit,删除该任务,并切换至其他任务。 由此也可理解图2中,最后一句注释“never

come back”的含义了,一旦开始执行任务,pc值被改变,再不会回到调用的地方。

其他RTOS中也有和此汇编函数类似的汇编实现,例如liteOS_M中的HalStartToRun,TencentOS_Tiny中的port_sched_start等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44558

    浏览量

    635349
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28134
  • RTOS
    +关注

    关注

    22

    文章

    813

    浏览量

    119643
  • 实时操作系统

    关注

    1

    文章

    198

    浏览量

    30758
  • RISC-V
    +关注

    关注

    45

    文章

    2277

    浏览量

    46159
收藏 人收藏

    评论

    相关推荐

    什么是实时操作系统(RTOS)

    实时操作系统RTOS)是一种专为实时应用程序设计的操作系统实时应用程序需要在特定时间内做出预
    的头像 发表于 11-23 17:14 6009次阅读

    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 7870次阅读
    关于<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 6265次阅读

    转载: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 2278次阅读

    基于RISC-V内核单片机移植RTOS实时操作系统(一)

      ARM上移植实时操作系统大家可能比较熟悉,且例程较多,对于RISC-V内核单片机,可能相对
    的头像 发表于 01-31 12:08 2709次阅读
    基于<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 1647次阅读
    基于<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 1496次阅读
    基于<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 565次阅读
    Green Hills Software 为 Imagination <b class='flag-5'>RISC-V</b> CPU 增加量产就绪的 <b class='flag-5'>RTOS</b> 和工具支持

    单片机操作系统有哪些

    单片机操作系统RTOS)是一种专门设计用于单片机操作系统,它可以提供任务调度、内存管理、设备驱动等功能,帮助程序员更高效地开发嵌入式
    的头像 发表于 12-08 16:18 5275次阅读