Skip to content

项目计划 — 2026年5月至8月

一、当前状态

1.1 任务清单

  • [x] 核心调度器
  • [x] PriorityBitmap
  • [x] Executor / Spawner
  • [x] 过程宏 (#[task] #[main] #[interrupt])
  • [x] 平台抽象 (QEMU virt)
  • [x] Timer / TimerQueue
  • [x] 集成测试 (12 个)
  • [ ] 同步原语 (Mutex / Semaphore / Channel / EventGroup)
  • [ ] JoinHandle / CancellationToken
  • [ ] 周期定时器 / 超时包装
  • [ ] 多平台 (ARM / VF2)

1.2 与 embassy_preempt 的关系

embassy_preempt_VisionFive2 是本项目的前身,已在 VF2 上验证了:

  • 抢占式调度 + 共享栈的可行性
  • AMP 异构多核架构(S7 实时核 + U74 通用核)
  • 核间通信(IPI + 共享内存)

rt-async 在此基础上重新设计了调度内核,目标是更简洁的架构和更好的可移植性。


二、八月目标

一个可用的实时内核,具备完整的同步、通信和任务管理能力:

                  ┌──────────────────────────────────┐
                  │         应用层 (apps/)            │
                  │       Rust async task             │
                  ├──────────────────────────────────┤
                  │         系统服务层                 │
                  │  Mutex / Sem / Channel / EventGrp │
                  │  Timer / Timeout / Periodic       │
                  │  JoinHandle / CancellationToken   │
                  ├──────────────────────────────────┤
                  │         调度内核                   │
                  │  Spawner + Executor + Bitmap      │
                  │  共享栈 + 优先级抢占               │
                  ├──────────────────────────────────┤
                  │         HAL / 驱动层              │
                  │  QEMU virt / JH7110 / ARM Cortex-M│
                  └──────────────────────────────────┘

三、开发计划

原则:每个功能完成后立即补充对应测试,不做集中测试阶段。

阶段一:同步原语

补齐内核最基本的同步和通信机制。

  • [ ] Mutex<T> — 支持优先级继承的异步互斥锁
    • [ ] MutexGuard RAII 自动释放
    • [ ] 等待队列按优先级排序
    • [ ] 释放时恢复原始优先级并唤醒等待者
    • [ ] 测试:mutex.rs
    • [ ] 测试:priority_inversion.rs(验证优先级继承)
  • [ ] Semaphore — 计数信号量
    • [ ] acquire().await / release(n)
    • [ ] SemaphorePermit RAII 守卫
    • [ ] 测试:semaphore.rs
  • [ ] Channel — MPSC 通道
    • [ ] intrusive linked list,零堆分配
    • [ ] 容量 0 = rendezvous 模式
    • [ ] 测试:channel.rs
  • [ ] EventGroup — 32-bit 事件位
    • [ ] wait(mask, Any|All).await / set(bits)
    • [ ] 测试:event_group.rs

交付物:modules/executor/src/sync/


阶段二:平台扩展

  • [ ] HAL 层重构
    • [ ] 拆分 Chip trait 为 Console / Interrupt / Timer / InterruptController
    • [ ] 新建 modules/hal/ + modules/drivers/
    • [ ] RISC-V 公共层:CLINT / CSR / trap 处理
    • [ ] 回归测试:现有 QEMU 测试全部通过
  • [ ] VisionFive2 (JH7110) 驱动
    • [ ] CLINT 定时器 + 软件中断
    • [ ] UART 控制台
    • [ ] GPIO 基本读写
    • [ ] PLIC 外部中断
    • [ ] 链接脚本 + M-mode 启动代码
    • [ ] 测试:VF2 上运行 demo 验证

阶段三:任务与时间管理

完善 task 生命周期和定时器能力。

  • [ ] JoinHandle<T> — spawn 返回可 await 的句柄
    • [ ] TaskStorage 增加 result slot + join waker
    • [ ] JoinHandle 实现 Future<Output = T>
    • [ ] 测试:join_handle.rs
  • [ ] CancellationToken — 协作式任务取消
    • [ ] cancel() 请求取消(Queued/Waiting 立即生效,Running 等 await 点生效)
    • [ ] cancelled().await task 内主动检查
    • [ ] TaskInfo 增加 cancel flag
    • [ ] 测试:cancel_token.rs
  • [ ] PeriodicTimerevery(duration) 周期触发
    • [ ] 测试:periodic_timer.rs
  • [ ] with_timeout(dur, future) / with_deadline(instant, future)
    • [ ] 测试:timeout.rs
  • [ ] TimerQueue 改进:支持取消已注册定时器
  • [ ] Instant / Duration 类型完善

交付物:modules/futures/src/{cancel, timeout, timer}.rs