SylixOS

RISCV基础开发(八)

QEMU裸机开发之M模式中断设置 1. CSR寄存器操作 从本章节开始我们需要对CSR相关寄存器设置,所以将这些寄存器的读写访问封装成一些接口定义在“csr.h”中,这些接口基本都参考自xv6,如下所...
阅读全文
SylixOS

RISCV基础开发(七)

QEMU裸机开发之格式化打印 在前面的程序中我们实现了简单的字符串输出函数,在实际使用时,我们还需要进行格式化打印,比如打印某个变量的值,按十进制或者十六进制打印等等,本章节我们在“uart.c”中实...
阅读全文
SylixOS

RISCV基础开发(六)

QEMU裸机开发之打印字符 1.文件结构总览 先整体看下本章节裸机程序的工程文件组成,如下图所示。 address.h:主要定义了一些外设寄存器的基址还有内存基址等。 entry.S:入口文件,主要设...
阅读全文
SylixOS

RISCV基础开发(五)

QEMU裸机开发之环境搭建 1.概述 前面我们介绍了RISCV架构的一些基础知识,从本章节开始我们通过在QEMU下编写裸机程序来进一步的学习RISCV架构,旨在通过实操来掌握相关知识点。 运行环境我是...
阅读全文
SylixOS

RISCV基础开发(四)

SBI规范 1. 简介 SBI的全称为Supervisor Binary Interface,是m模式下的服务对上提供的统一接口。比如设置timer、发送核间中断等,这些服务通过SBI接口进行封装,这...
阅读全文
SylixOS

RISCV基础开发(三)

中断和异常处理 在RISCV架构设计中,有一系列的控制和状态寄存器( Control and Status Registers)简称CSR,在三种特权级别下都有其对应的CSR,比如m模式下的命名都为m...
阅读全文
SylixOS

RISCV基础开发(二)

特权架构 处理器在架构上一般都会有几种特权模式,比如x86架构有“ring0~ring3”4种级别,一般操作系统内核和驱动运行在ring0级别,也就是最高级别,而普通的应用程序运行在ring3级别,也...
阅读全文
SylixOS

RISCV基础开发(一)

指令集和寄存器 1. 写在前面的话 本系列文章旨在通过十几个裸机程序开发逐渐熟悉RISCV架构,包括其重要的系统寄存器使用方式、中断和异常处理机制等等。本系列不是RISCV汇编语言教程,不会专门的讲解...
阅读全文