# RT_Ker_Pr **Repository Path**: gogolj/rt_ker_pr ## Basic Information - **Project Name**: RT_Ker_Pr - **Description**: 从零编写一个RTOS内核的工程实践项目 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-14 - **Last Updated**: 2026-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RT_Ker_Pr #### 介绍 从零构建一个 RISC-V 架构的最小操作系统内核。 本项目基于 QEMU 模拟器作为硬件平台,参考 [RT-Thread Nano](https://www.rt-thread.org/) 的架构设计,旨在通过实践帮助 C 语言初学者理解操作系统与硬件底层知识。 **学习目标**: - 复习 C 语言(指针、结构体、位操作) - 理解操作系统核心概念(线程切换、调度、时钟中断) - 掌握硬件底层知识(寄存器、汇编、链接脚本) #### 软件架构 ``` riscv-kernel-learning/ ├── Makefile # 编译构建文件 ├── linker.ld # 链接脚本 ├── start.S # RISC-V 启动汇编 ├── main.c # 用户入口 ├── rtconfig.h # 内核配置 ├── rttypes.h # 基础类型定义 ├── rtservice.h # 链表操作宏 ├── rtdef.h # 内核对象定义 ├── object.c # 对象管理 ├── thread.c # 线程管理 ├── scheduler.c # 调度器 ├── clock.c # 时钟管理 ├── context_gcc.S # 上下文切换(汇编) ├── cpuport.h # CPU 移植接口 └── interrupt_gcc.S # 中断入口 ``` **内核模块**: - 线程管理:线程创建、切换、调度 - 调度器:优先级抢占式调度 - 时钟管理:系统 tick、延时 - 对象系统:内核对象抽象 #### 硬件平台 - **模拟器**:QEMU virt board (RISC-V 64-bit) - **工具链**:riscv64-unknown-elf-gcc - **参考源码**:RT-Thread Nano (`/home/deepin/rt-thread/`) #### 学习阶段 | 阶段 | 内容 | 产出文件 | 状态 | |------|------|----------|------| | 1 | 搭建最简工程 | Makefile, linker.ld, start.S, main.c | ✅ 已完成 | | 2 | 内核配置与类型定义 | rtconfig.h, rttypes.h | ✅ 已完成 | | 3 | 内核对象与链表 | rtservice.h, rtdef.h, object.c | 进行中 | | 4 | 线程控制块与栈初始化 | thread.c, cpuport.c | 待开始 | | 5 | 上下文切换 | context_gcc.S, cpuport.h | 待开始 | | 6 | 调度器 | scheduler.c, rthw.h | 待开始 | | 7 | 时钟中断与 tick | clock.c, tick.c, interrupt_gcc.S | 待开始 | | 8 | 多线程演示 | main.c(更新) | 待开始 | #### 编码规范 本项目遵循 **Linux 内核编码规范**: - 缩进:8 个空格 - 大括号:K&R 风格 - 命名:小写下划线分隔,常量全大写 - 注释:`/* comment */` 风格 - 行长度:不超过 80 字符 #### 使用说明 **1. 检查工具链** ```bash riscv64-unknown-elf-gcc --version qemu-system-riscv32 --version ``` **2. 编译** ```bash make ``` **3. 运行** ```bash make run ``` **4. 代码风格检查** ```bash make checkpatch ``` **5. 查看反汇编** ```bash make disasm ``` **6. 清理** ```bash make clean ``` **退出 QEMU**:按 `Ctrl+A` 然后按 `x` 键 #### 源码参考 - RT-Thread Nano 内核源码:`/home/deepin/rt-thread/` - RISC-V 上下文切换:[context_gcc.S](file:///home/deepin/rt-thread/libcpu/risc-v/common/context_gcc.S) - 线程管理:[thread.c](file:///home/deepin/rt-thread/src/thread.c) - 调度器:[scheduler_up.c](file:///home/deepin/rt-thread/src/scheduler_up.c) #### 参与贡献 本项目为个人学习项目,欢迎交流讨论。