SylixOS

RISCV基础开发(六)

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

RISCV基础开发(八)

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

RISCV基础开发(五)

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

RISCV基础开发(二)

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

RISCV基础开发(九)

QEMU裸机开发之M模式核间中断 QEMU的virt平台基本是参考SIFIVE的U540平台设计的,所以其寄存器大部分都和U540中的一样,我们再来看下CLINT中定义的核间中断设置寄存器,如下所示。...
阅读全文
SylixOS

RISCV基础开发(三)

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

RISCV基础开发(七)

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

RISCV基础开发(一)

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

RealEvo-IDE使用小技巧

1. 显示特殊字符 1.1 快捷按钮 1.2 编辑要显示的特殊字符 2. 将tab键换成4个空格 第一步: 第二步: 第三步: 3. 在固定的列显示竖线 4. 按列编辑 5. 高亮变量 6. 解决单个...
阅读全文
SylixOS

MMU、TLB和CACHE之间不得不说的事

MMU、TLB和CACHE是计算机系统中经常用到同时又经常被忽视的部件,网上关于MMU的资料绝大部分是介绍了其页表的映射方法,但是并没有或者很少介绍计算机系统引入MMU的原因。本帖介绍了引入MMU的两...
阅读全文
HarmonyOS

Liteos-a内核分析(二)

系统初始化 这里只粗略的分析下main函数做了哪些事情,目的是了解内核初始化的基本流程。main函数在kernel\liteos_a\platform\main.c中。 1. 设置系统主任务 在lit...
阅读全文
HarmonyOS

Liteos-a内核分析(三)

系统内存管理 本篇文章主要分析OsSysMemInit这个函数,主要初始化了内核虚拟空间、vmalloc虚拟空间、还有内核堆和系统物理页初始化等等。 1. TCB内存申请 在调用OsSysMemIni...
阅读全文