QSOE Development Blog

RSS: https://qsoe-dev.blogspot.com/feeds/posts/default?alt=rss
QSOE Dev,关于软件开发、编程与技术项目的博客。

HFI BIOS:从想法到 K3 支持

HFI BIOS 项目六周内从第一个 commit 跑到支持两款不同 RISC-V 主板。最初尝试在 RISC-V 上模拟 x86 VBIOS 来驱动 NVIDIA GK208 显卡,发现是在用庞大机器避免写驱动,于是改为原生驱动。关键转折是把视频接口变成契约——VideoBIOS Module,BIOS 只负责加载,不关心具体硬件。K3 板子上没有字符发生器,模块直接借一个 CPU hart 跑字体渲染,抽象依然成立。三个 bug 都是同一类问题:冷启动时某个硬件引脚处于默认功能 0,导致显示、PCIe 复位、以太网 PHY 全部失效。
评论点赞收藏1 天前

jmcc:在 RISC-V 64 上运行的便携式 C 编译器

jmcc(Johnson-Magnusson C Compiler)成功编译整个 QSOE/N 微内核并在真实 RISC-V 64 硬件上启动,整个工具链不含 GCC。作者用 Claude Code 辅助将 pcc 移植到 RISC-V 64,解决了 MIPS 遗留指令、原子操作、64 位 ABI 等一系列问题。 pcc 由 Bell Labs 的 Stephen Johnson 在 1970 年代中期编写,是 C 和 Unix 早期传播的关键工具。Anders Magnusson 在 2000 年代中期重写了一半以上代码,使其可移植到现代架构。作者的新工作是在此基础上添加 RISC-V 64 后端,最终实现全系统无 GCC 编译并启动到 root shell。
评论点赞收藏5 天前

QSOE/N v0.18:新增第二块开发板和第二套编译器

QSOE/N 操作系统 v0.18 新增 SpacemiT K3 芯片支持和 jmcc 编译器,修复了多处底层 bug。K3 的 DRAM 从 4 GiB 起始、16 核异构(8 个 X100 + 8 个 A100 AI 核),中断几何与 QEMU virt 完全不同。jmcc 编译器不依赖 GCC 的 PIE 和 GOT 便利,暴露了 loader 跳过 R_RISCV_COPY relocation、线程 gp 设置错误等隐藏 bug。
评论点赞收藏5 天前

一个免费的类QNX操作系统(2003)

作者回顾2003年发起的RadiOS项目,这是一个兼容QNX的微内核操作系统。如今该理念演变为QSOE,支持64位RISC-V架构,可在真实硬件上运行。 文章展示了从汇编语言到现代RISC-V架构的技术演进历程,体现了长期技术追求的延续性。
评论点赞收藏55 天前

QSOE/L:首次从真实存储启动引发的死锁排查

作者在将 QSOE/L 移植到真实 NVMe 存储时遇到启动死锁。通过对比 QEMU 和另一版本 QSOE/N 的行为差异,排除了常见的指令缓存一致性 Bug。 最终定位到 taskman 进程在等待文件系统响应时,因同步机制循环依赖导致死锁。文章详细展示了利用硬件差异进行故障排除的工程思路。
评论点赞收藏58 天前

QSOE/L:在 seL4 上运行相同的用户空间

作者展示了如何在 seL4 微内核上构建兼容 QNX 的用户空间,重点解决了 IPC 限制、能力泄漏和 SMP 同步等底层工程难题。 通过重构任务管理器和内存回收机制,实现了进程的稳定创建与销毁,并在 QEMU 中完成了从启动到 Shell 交互的全流程验证。
评论点赞收藏65 天前

QSOE/N 第三部分:在 HiFive Unmatched 真机上首次启动

作者记录了将自研微内核 QSOE/N 从 QEMU 模拟器移植到 SiFive HiFive Unmatched 真机的过程。文章详细分析了五个主要障碍,包括镜像头格式、PCI 兼容性、物理内存管理及 CPU 拓扑识别等问题。 重点解决了 RISC-V 架构特有的指令缓存一致性(fence.i)和线程调度问题。最终成功在真机上获得交互式 Shell,并提到开发过程中使用了 Claude Code 辅助。
评论点赞收藏70 天前

QSOE/N 第二部分:从微内核到完整操作系统

作者详细记录了将 Skimmer 微内核扩展为完整操作系统 QSOE/N 的过程,实现了进程管理、C 库及驱动。核心创新在于将 POSIX 文件描述符直接映射为内核连接 ID,使读写操作无需经过 taskman 系统进程,从而优化了性能。 文章还深入剖析了多进程地址空间切换、同步对象 Bug 修复以及 POSIX 兼容性测试套件的实现细节。这是系列文章的第二部分,展示了在 QEMU 环境下构建类 QNX 系统的工程实践。
评论点赞收藏72 天前

QSOE/N 第一部分:证明核心(Skimmer v0.1–v0.5)

作者从零开始为64位RISC-V编写微内核Skimmer,结合DragonFly BSD并发模型与QNX IPC设计。通过v0.1到v0.5迭代,解决了SMP竞争、中断处理和同步IPC等核心问题。 文章详细记录了从基础引导到复杂压力测试的全过程,包括具体的Bug修复和调试方法论,证明了内核核心的稳定性。
评论点赞收藏73 天前

QSOE操作系统的诞生始末

作者讲述开发类QNX操作系统QSOE的起源。因争取QNX源码开源未果,决定基于形式化验证微内核seL4进行移植,并随后开发了自定义内核Skimmer以支持多核并发。 项目采用双内核架构,用户态代码完全共享。文中详细记录了从构思、命名到技术选型及早期实现的完整过程,包含大量底层系统设计细节。
评论点赞收藏81 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。