嵌入式
01
RTOS内核开发实战(4):Cortex-M3端口层,初始栈帧、PendSV与首任务启动
当链表、TCB、ready queue 和调度器基本站稳之后,RTOS 才真正来到一个分水岭:前面的代码都还在“决定谁该运行”,而 port 层要解决的是另一件更硬的问题,怎么让 CPU 真的切到那个任务去执行。 当前仓库里,这部分工...
从最近发布的内容开始看,遇到感兴趣的标题就点进去。
嵌入式
01
当链表、TCB、ready queue 和调度器基本站稳之后,RTOS 才真正来到一个分水岭:前面的代码都还在“决定谁该运行”,而 port 层要解决的是另一件更硬的问题,怎么让 CPU 真的切到那个任务去执行。 当前仓库里,这部分工...
嵌入式
02
有了 "tcb_t" 和 "ready_queue_t",调度器就已经“能存东西”了,但还不等于“能工作”。 真正让内核运转起来的,是三个关键动作: 1. 创建任务时把它合法地放进 runnable 集合。 2. 调度器只负责决定“下...
嵌入式
03
把链表打好之后,下一步不是立刻写 PendSV,而是先定义“调度器眼里的任务”到底长什么样。 当前这版代码里,这个问题的答案落在 "tcb_t" 和 "ready_queue_t" 两个结构上。 先回答一个问题:调度器看到的任务是什么...
嵌入式
04
做 RTOS,最先落地的往往不是调度算法,而是数据结构。 任务要进 ready list,延时任务要进 sleep list,后续做信号量、消息队列时还会有等待链表。如果底层链表设计得不稳,后面的调度、阻塞、超时唤醒都会跟着变脆。 这...
嵌入式
05
在学完异常模型、PendSV 任务切换、Ready/Blocked 状态管理之后,RTOS 的骨架已经搭起来了。 但一个真正可用的 RTOS,不能只会“切任务”,还必须解决三个更实际的问题: - 任务之间怎么同步 - 多个任务访问共享...
嵌入式
06
在学完 Cortex-M 异常模型、PendSV 任务切换之后,很容易产生一种错觉: «RTOS 不就是“保存一下现场,再恢复另一个任务的现场”吗?» 其实不是。 上下文切换只是执行层面的动作,RTOS 更本质的能力是:管理任务状态。...