软件平台:MounRiver Studio( MRS);
硬件平台: CH32V307开发板;
源码获取:https://gitee.com/openharmony/kernel_liteos_m
(4)如何进行任务切换。
了解了如何切换至第一个任务,那么如何实现不同任务之间的切换呢,在这之前我们应该都有了解,RTOS是根据任务的优先级和时间片进行轮转的,每个任务执行一段时间,然后切换至下一个任务执行。每次切换前我们需要把当前任务的运行状态进行保存,然后切换至新任务,对其运行状态进行恢复,如此循环反复,实现任务调度。时间片实现使用的是内核的SysTick定时器,LiteOS_M是在los_timer.c中实现的,这个只需要根据实际硬件的进行初始化就行。其他操作系统也是类似,像RT-Thread源码中我们根据硬件完成board.c。对于任务切换,我们利用内核的软中断,只要使能该中断,并且当需要切换任务时,把中断控制器的对应的pendset位置1,即可触发该中断进行任务切换。下图是liteOS_M切换过程:
图14 图15其他操作系统也是大同小异,具体的区别仅仅是在切换新任务时,新任务如何获取的问题,上图可以看到LiteOS_M是通过g_losTask来管理,RT-Thread中定义了from_thread,to_thread,顾名思义从一个线程切换至另外一个线程。
弄清楚以上的问题,对于某一个RTOS的基本移植来说应该就比较明了。
最后移植好的鸿蒙os,RT-Thread等实时操作系统的代码均已在MRS上线,可以直接创建,开发相关应用
原文标题:RISC-V MCU开发实战 (三):移植鸿蒙OS项目
文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !