从零开始手写RTOS
在这个专栏里面,我将记录自己从零开始与一个RTOS的全过程。
不缪
这个作者很懒,什么都没留下…
展开
-
手写RTOS-使用PendSV进行压栈与出栈操作
学会使用PendSV中断进行压栈和出栈操作,是实现任务调度的关键。今天我们就来学习一下如何使用不超过20行的汇编实现压栈和出栈操作。我们现在来实现这么一个例子:先把R4-R11通用寄存器的值保存到一个缓冲区里面,然后再把缓冲区里面的值恢复到R4-R11。实现这个功能的意义在于,在切换一下个任务之前,要先把当前任务的状态先保存起来,然后把要下面要执行的任务状态从缓冲区里面恢复出来。下面我...原创 2019-02-02 01:24:36 · 1319 阅读 · 1 评论 -
手写RTOS-PendSV中断
今天这一篇,我们说一下操作系统都要用到的PendSV中断,整个操作系统中,要自己写的的汇编代码不超过20行,全部都在PendSV中断里。以下是《Cotex-M3权威指南》里对PendSV的描述:它是可以像普通的中断一样被悬起的。 OS 可以利用它“缓期执行” 一个异常——直到其它重要的任务完成后才执行动作。 悬起 PendSV 的方法是: 手工往 NVIC 的 PendSV 悬起寄存器中...原创 2019-02-01 10:16:25 · 2080 阅读 · 1 评论 -
手写RTOS-创建工程
今天开始我手写RTOS的第一步,创建一个工程。这个工程要能够在MDK环境中能够进行编译和仿真,不用借助任何的开发板和仿真器,完全基于Cotex-M3内核进行实验。现在我们开始创建这一个工程,首先打开MDK,我使用的版本是MDK525,大家的编译环境不必和我一样,自己到Keil的官网上去下载,这里就不作描述。我们需要用到CMSIS的标准库和启动文件,选择这两个即可。如下图所示:...原创 2019-01-29 22:41:46 · 983 阅读 · 0 评论