SylixOS

RISCV基础开发(十六)

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

Xv6内核分析(十五)

block 分配器 文件和目录的内容存在磁盘块中,磁盘块都从一个空闲块池中分配出来。xv6 的块分配器包含一个磁盘上的空闲块位图,每个块占一个位。引导区,超级块,i 节点块和位图块的位永远都被置为有效...
阅读全文
SylixOS

SylixOS网络开发(五)

1. 发送零拷贝问题 某SOC是四核A9平台,网络控制器是dw,不使用发送零拷贝的tcp发送带宽是93M/s,使用发送零拷贝之后的发送带宽竟然降低到了20M/s。最后查出的原因是用发送零拷贝时需要ca...
阅读全文
SylixOS

SylixOS BSP开发(四)

修改内核入口文件 SylixOS内核入口文件是startup.S,这个文件是用汇编写的,在这个文件中会做一些必要的初始化工作,然后跳转到C语言编写的代码中继续执行。创建BSP工程时会自动生成start...
阅读全文
Xv6

Xv6内核分析(三.2)

main函数之kvmalloc 1. kvmalloc函数 这个函数主要就是分配一个页表给内核进程用于调度: kpgdir是一个全局变量,用于记录内核进程的页目录基址,kvmalloc获得页目录后,调...
阅读全文
SylixOS

SylixOS BSP开发(十五)

验证中断系统 上一章节我们已经完成了BSP中的中断系统接口实现,现在该验证下中断控制器是否能正常工作了。我们可以在系统TICK的中断处理函数中添加一个打印信息: 如果中断系统正常工作的话,当TICK产...
阅读全文
SylixOS

RISCV基础开发(六)

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

Xv6内核分析(五)

mian函数之kinit2 kinit2函数的作用是将之间的物理内存页添加到空间页链表之中: 在调用kinit2函数之后,物理内存页的申请释放就启用了锁机制。
阅读全文