# riscv_os **Repository Path**: xialyl/riscv_os ## Basic Information - **Project Name**: riscv_os - **Description**: 一个RISC-V上的简易操作系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-04-08 - **Last Updated**: 2025-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # riscv_os #### 介绍 一个RISC-V上的简易操作系统,与本人的另外一个仓库[《一个基于RISC-V指令集的CPU实现》](https://gitee.com/lizhanpeng2022/cpu_prj)相配套,目前正在开发中。 **此项目是运行在本人的另外一个仓库[《一个基于RISC-V指令集的CPU实现》](https://gitee.com/lizhanpeng2022/cpu_prj)实现的RISC-V处理器上的,先确保你的开发板上已经跑起来该RISC-V处理器** 参考教程: [[完结] 循序渐进,学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春 ](https://www.bilibili.com/video/BV1Q5411w7z5?p=1) [开放课程《循序渐进,学习开发一个 RISC-V 上的操作系统》配套教材代码仓库](https://gitee.com/unicornx/riscv-operating-system-mooc) #### 运行环境 使用的开发环境如下: ``` $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal $ uname -r 5.15.0-76-generic ``` 安装Ubuntu 20.04官方提供的 GNU工具链和 QEMU 模拟器: ``` sudo apt update sudo apt install build-essential gcc make perl dkms git gcc-riscv64-unknown-elf gdb-multiarch qemu-system-misc ``` #### 使用说明 cd 到指定目录下,使用 ``make`` 指令生成 ``os.bin`` 文件,将 ``os.bin`` 文件复制到 ``cpu_prj\serial_utils`` 目录下,然后打开 ``cpu_prj\serial_utils\serial_send.py`` 脚本,先按下key1键不动,然后运行脚本,显示 ``send over, the number of byte: xxx`` 即为烧录完毕,打开串口调试助手,按下板子的复位键即可看到对应现象。(如果没有出现现象或者现象不正确可以重新烧录) 1. make:编译构建 2. make code:反汇编查看二进制代码 3. make clean:清理 **目录结构** * **00_START**:使用启动文件在板子上引导启动一个流水灯程序 * **01_UART**:开发串口驱动程序 * **02_MEM_M**:内存的管理与分配 * **03_MUTI_TASK**:协作式多任务 * **04_Traps**:中断和异常 * **05_HW_TIMER**:硬件定时器 * **06_Preemptive_Muti_Task**:抢占式多任务 * **07_LOCK**:实现一个自旋锁 * **08_SW_TIMER**:软件定时器 * **09_SYSCALL**:实现系统调用 博客地址: [开发一个RISC-V上的操作系统(一)—— 环境搭建](https://blog.csdn.net/qq_51103378/article/details/131498891?spm=1001.2014.3001.5501) [开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)](https://blog.csdn.net/qq_51103378/article/details/131873548?spm=1001.2014.3001.5501) [开发一个RISC-V上的操作系统(三)—— 串口驱动程序(UART)](https://blog.csdn.net/qq_51103378/article/details/131881330?spm=1001.2014.3001.5501) [开发一个RISC-V上的操作系统(四)—— 内存管理](https://blog.csdn.net/qq_51103378/article/details/131991535?spm=1001.2014.3001.5502) [开发一个RISC-V上的操作系统(五)—— 协作式多任务](https://blog.csdn.net/qq_51103378/article/details/132003445?spm=1001.2014.3001.5502) [开发一个RISC-V上的操作系统(六)—— 中断(interrupt)和异常(exception)](https://blog.csdn.net/qq_51103378/article/details/132181282?spm=1001.2014.3001.5502)