SylixOS

全志D1开发(一)准备工作

1. 概述 本系列文章带领大家了解如何为全志D1芯片开发SylixOS BSP,D1芯片虽然是riscv架构的,但是其中采用的一些外设模块和我们之前为全志R16开发过的是一样的,所以驱动代码基本可以直...
阅读全文
SylixOS

揭开显卡的神秘面纱

1. 概述 本篇文章对嵌入式领域使用的显示系统做一个介绍,主要关注显示硬件组成和2D显示驱动。 2. 名词解释 2.1 显卡 显卡顾名思义最基础的功能就是显示,在上世纪80年代,显卡还不像今天显卡这样...
阅读全文
SylixOS

RISCV基础开发(十九)

QEMU OpenSBI 裸机开发之定时器中断 1. 中断处理准备 在s模式下的中断设置和处理逻辑和原来的基本一致,首先在entry.S中添加中断处理汇编入口,如下所示: # # supervisor...
阅读全文
SylixOS

RISCV基础开发(十八)

QEMU OpenSBI 裸机开发之格式化打印 格式化打印代码也跟之前的基本一样,就是将字符输出函数从原来的直接操作16550寄存器改为通过SBI接口进行字符输出,其他的都一样,将printf函数定义...
阅读全文
SylixOS

RISCV基础开发(十七)

QEMU OpenSBI 裸机开发之字符打印 1. 编译OpenSBI镜像 前面的章节我们是直接从m模式开发的裸机程序,从本章节开始我们来学习在已经有OpenSBI的基础下进行裸机开发。首先需要下载O...
阅读全文
SylixOS

RISCV基础开发(十六)

QEMU裸机开发之S模式定时器中断 在本章节中我们来学习如何在s模式下使用定时器中断,我们首先将上一章节中的ecall调用定义为更新定时器比较寄存器的调用,因为在s模式我们是不能访问定时器比较寄存器的...
阅读全文
SylixOS

RISCV基础开发(十五)

QEMU裸机开发之S模式ecall调用 我们知道有些寄存器只能在m模式下设置和访问,如果s模式想要使用某个功能,只能先回到m模式然后再进行相应的设置。OpenSBI定义了s模式和m模式之间功能调用的接...
阅读全文
SylixOS

RISCV基础开发(十四)

QEMU裸机开发之S模式软中断 S模式下的软中断我们借助m模式下的定时器中断进行触发,在m模式下设置sip中的soft位域就可以触发S模式下的软中断,如下所示。 void machine_trap(v...
阅读全文
SylixOS

RISCV基础开发(十三)

QEMU裸机开发之S模式中断设置 1. 中断初始化 S模式下的中断初始化和M模式基本类似,只不过操作的是S模式下的CSR寄存器,如下所示。 static void supervisor_trap_in...
阅读全文
SylixOS

RISCV基础开发(十二)

QEMU裸机开发之M模式切换到S模式 从m模式切换到s模式下的代码其实也不是很多,主要是设置"mstatus"和“mepc”寄存器。其实从高特权级别切换到低特权级的思路在各个架构下都差不多,从低级别到...
阅读全文