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”是为异曲同工之处。通过管理操作这些变量,实现任务到任务的切换。

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

    关注

    6035

    文章

    44554

    浏览量

    634641
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40277
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28124
  • 实时操作系统

    关注

    1

    文章

    197

    浏览量

    30753
  • RISC-V
    +关注

    关注

    45

    文章

    2270

    浏览量

    46129
收藏 人收藏

    评论

    相关推荐

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

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

    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 7853次阅读
    关于<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 6249次阅读

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

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

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

    单片机操作系统有哪些

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