avatar
文章
67
标签
87
分类
14
主页
项目列表
友链
  • 半方池水半方田
  • 小音理
Reglucis' Blog
搜索
主页
项目列表
友链
  • 半方池水半方田
  • 小音理

Reglucis' Blog

基于异或实现的单方向双链表
发表于2026-01-11|YueOS 开发日志|YueOS•数据结构•链表
基于异或运算的单向双链表:利用 a ⊕ b 替代双指针,实现空间高效的单向遍历链表。
YueOS 重构日志 - 内存管理
发表于2026-01-11|YueOS 开发日志|YueOS•RTOS•内存管理
YueOS 重构篇:内存管理器的重新设计,支持多进程场景下的虚拟内存与物理页帧管理。
YueOS 重构日志 (0) - 序言
发表于2026-01-10|YueOS 重构日志|YueOS•RTOS•重构
YueOS 重构序言:回顾初始设计的问题与局限,阐述重构的目标架构与设计原则。
YueOS 开发日志 (5) - 内核篇:调度器的具体实现
发表于2026-01-08|YueOS 开发日志|YueOS•RTOS•调度器
调度器的具体实现 调度器将是整个系统中最核心的功能。调度器操作的实例对象为任务,向上拓展为进程间同步模块。可以说调度器封装设计的优秀与否将成为影响整个系统性能关键。 整个时间轴由无数个任务片构成,两个重要/次要任务之间的缝隙被调度任务填充。因此必须尽可能减小调度任务的长度。 本系统的核心需求依然是将重要任务之外的时间合理高效利用,并不强调实时性,因此不适用 Round-Robin(RR) 方法。 被调度任务的排序算法 关于任务的排序方法,对于 cortex-M 系列同时运行任务最多也就十余个。此时,对于时间复杂度 O(n) 与 O(log(n)) 无明显差距。因此,不使用 AVL 及红黑树类的排序方法,仅使用其退化的最简单模型 —— 有序链表。 定义:按某种方式排序的任务链表称为任务链。 就绪任务链:按照执行顺序排序的待执行任务。 包含重要任务链(静态调度表)与次要任务链(优先度表)。 延时任务链:按照恢复时间顺序排序的被阻塞任务。 挂起任务链:按照时间顺序排序的被挂起任务链。(其实就是无序的🤐。。。凑个定义好处理,嘿嘿嘿嘿) 调度的排序特点 考虑所有发生当...
YueOS 开发日志 (4) - 内核篇:任务的具体实现
发表于2026-01-08|YueOS 开发日志|YueOS•RTOS•任务•API
任务的具体实现 任务的数据结构是一切的基础。 任务管理器 调度器可调度的任务都需要先使用任务管理器向内核注册。注册后的任务,任务管理器自身会维护一个链表,该链表保存着全部任务。 任务注册 任务注册时,用户需要使用结构 ‘Task_InitConfig_t’ 提供任务的基础信息。 12345678910111213typedef struct { /* 不允许为空 */ Task_Handle_t entryPoint; // 任务的入口点 Kernal_TaskType_e type; // 任务类型,即前文中的四种,用户只关心重要和次要任务即可 uint8_t priority; // 任务的优先级,被次要任务使用 uint32_t* stackAddr; // 堆栈起始地址(最大栈顶) 栈底需要 8 byte 对齐 uint32_t stackSize; // 单位: byte 推荐 4 的倍数 /* 可选 */ void* argv; // 在入口点传入的参数 const ch...
YueOS 开发日志 (6) - 内核篇:时钟与阻塞
发表于2026-01-08|YueOS 开发日志|YueOS•RTOS•时钟
YueOS 内核篇:SysTick 时钟中断与任务延时阻塞机制的实现,包括延时链表与时钟节拍管理。
YueOS 开发日志 (3) - 内核篇:OS API
发表于2026-01-05|YueOS 开发日志|YueOS•RTOS•API
操作系统函数的调用接口 约定:非特权级称为用户态,特权级称为内核态。且为了安全性保证,系统初始化之后一定是使用 PSP 的用户态。 OS API 的调用 由于种种原因,用户很多时候无法执行 OS API。因此在用户态下试图访问某些系统功能,就需要使用 SVC 来向内核提出申请,并在 SVC_Handler 中实现要求。 嗯,挺好的。但是,理想很丰满,现实很骨感。这里有些细节需要考虑。 如何完成 SVC 到系统具体服务的映射? 如何实现一个统一、易于阅读且简洁优雅的 SVC 封装?(不会有人想挨个手撸汇编吧?写几行性能关键语句就得了) 如何保证 OS API 调用是可靠的?用户在中断中调用 SVC 那不炸了吗? SVC 调用下的 OS API 当发起 SVC 请求时,一共存在 256 个被内核忽略的立即数。简单的方式是为每一个 SVC 服务分配一个立即数,但这略麻烦,我懒。 所以使用指针传递的方式。由 ARM ABI 约定易知,应该使用 R0-R3 完成实参传递且使用 R0 传回返回值,同时使用 R12 传递实调函数。 我们使用 0 号 SVC 服务作为内核调用入口,余下...
YueOS 开发日志 (2) - 内核篇:任务与调度
发表于2026-01-04|YueOS 开发日志|YueOS•RTOS•任务•调度
YueOS 内核篇:任务控制块(TCB)数据结构设计、任务状态机与协作式调度器的基础实现。
命名约定
发表于2026-01-03|YueOS•编程规范•命名约定
YueOS 代码风格指南:C 语言命名规范,涵盖结构体、全局变量、局部变量和函数的命名规则。
YueOS 开发日志 (1) - 内核篇:基础概念
发表于2026-01-02|YueOS 开发日志|YueOS•RTOS•内核
YueOS 内核篇开篇:HAL 库启动流程分析、异常向量表初始化与首任务启动的完整路径。
1234…7
avatar
Reglucis
一只努力学习的菜猪
文章
67
标签
87
分类
14
Follow Me
公告
欢迎来访我的博客。这里记录着菜猪的学习日志。
最新文章
米勒电容2026-07-22
FOC 学习笔记()2026-07-19
FOC 学习笔记(2) - 直流电机建模2026-07-07
AI 使用入门2026-06-28
FOC 学习笔记(1) - Clarke 变换2026-06-27
分类
  • ESP-DAP1
  • FOC 学习笔记2
  • MOSFET1
  • USB 学习笔记1
  • YueOS 开发日志9
  • YueOS 重构日志2
  • python1
  • 博客3
标签
CMSIS-DAP FOC Clarke变换 随笔 磁元件 USB2_0 硬件仿真 CAD 重构 进程 反相放电电路 任务 USBIP 机械设计 python YueOS SPICE Boost Ozone 字符编码 内核 权限管理 LLVM 坐标变换 嵌入式 信号处理 JTAG WSL CLI ESP32 LTspice html 测试平台 Unicode NVIC API 链表 USB 调试 调度
归档
  • 七月 2026 3
  • 六月 2026 8
  • 五月 2026 6
  • 二月 2026 1
  • 一月 2026 12
  • 十二月 2025 7
  • 九月 2025 26
  • 八月 2025 4
网站信息
文章数目 :
67
本站总字数 :
71.8k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By Reglucis框架 Hexo 7.3.0|主题 Butterfly 5.5.0
搜索
数据加载中