项目简介
本项目实现了一个基于RISC-V架构的单核32位操作系统,聚焦于抢占式多任务调度。使用C语言和RISC-V汇编语言编写,开发者可通过该项目深入了解操作系统核心功能,如硬件初始化、内存管理、中断处理、任务调度等,适合对操作系统原理和嵌入式系统开发感兴趣的开发者。
项目的主要特性和功能
- 引导部分:完成系统初始化并加载操作系统。
- UART串口设备:借助内存映射控制UART设备实现系统IO。
- 内存管理:实现内存页的分配与释放。
- 上下文切换和协作式多任务:支持任务上下文切换和协作式多任务调度。
- Trap和Exception处理:通过PLIC管理中断和异常。
- 外部设备中断:处理外部设备的中断请求。
- 硬件定时器:通过CLINT实现软硬件定时器。
- 抢占式多任务:实现抢占式多任务调度,支持任务优先级和时间片轮转。
- 任务同步和锁:实现自旋锁确保任务间同步。
- 软件定时器:支持软件定时器的创建和管理。
- 内核态切换:支持从用户态到内核态的切换。
- 命令行和简单页面:提供基本命令行界面和简单页面显示。
安装使用步骤
环境准备
- 安装RISC-V交叉编译工具链:
bash apt install gcc-riscv64-unknown-elf apt install qemu-system-misc
- 复制项目代码到本地:
bash cd riscv-os
构建并运行
- 进入项目源码目录:
bash cd src
- 编译并运行操作系统:
bash sudo make run
运行结果
成功运行后,系统启动并默认运行两个任务: 1. 命令监听任务,等待用户输入命令。 2. Task1任务,不停打印“Task 1: Running...”。
切换任务模式
- 开启单任务模式:
bash system single_task_mode on
- 关闭单任务模式:
bash system single_task_mode off
创建新任务
- 编写自定义任务函数。
- 注册新任务命令:
bash create task0
清除构建
bash
make clean
更多关于本系统的详细介绍和实现细节,请参阅项目文档 /doc/RISCV-OS综合课程设计报告书- - 副本.pdf
。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】