QEMU裸机开发之S模式定时器中断 在本章节中我们来学习如何在s模式下使用定时器中断,我们首先将上一章节中的ecall调用定义为更新定时器比较寄存器的调用,因为在s模式我们是不能访问定时器比较寄存器的...
Xv6内核分析(十五)
block 分配器 文件和目录的内容存在磁盘块中,磁盘块都从一个空闲块池中分配出来。xv6 的块分配器包含一个磁盘上的空闲块位图,每个块占一个位。引导区,超级块,i 节点块和位图块的位永远都被置为有效...
SylixOS网络开发(五)
1. 发送零拷贝问题 某SOC是四核A9平台,网络控制器是dw,不使用发送零拷贝的tcp发送带宽是93M/s,使用发送零拷贝之后的发送带宽竟然降低到了20M/s。最后查出的原因是用发送零拷贝时需要ca...
SylixOS BSP开发(四)
修改内核入口文件 SylixOS内核入口文件是startup.S,这个文件是用汇编写的,在这个文件中会做一些必要的初始化工作,然后跳转到C语言编写的代码中继续执行。创建BSP工程时会自动生成start...
全志D1开发(七)SD驱动之创建SD适配器
1. SD适配器简介 由于SylixOS的SD协议栈设计最开始是借鉴内核中的I2C和SPI框架的,具体的历史可以参见曾老师的博客http://blog.chinaunix.net/uid-302963...
Xv6内核分析(三.2)
main函数之kvmalloc 1. kvmalloc函数 这个函数主要就是分配一个页表给内核进程用于调度: kpgdir是一个全局变量,用于记录内核进程的页目录基址,kvmalloc获得页目录后,调...
VxWorks内核分析八(转)
原文:http://www.prtos.org/vxworks-wind-reader-faq/。 本文概述:本网站自2016年2月份建站以来,陆续发布了一系列关于VxWorks Wind内核运行机制...
SylixOS BSP开发(十五)
验证中断系统 上一章节我们已经完成了BSP中的中断系统接口实现,现在该验证下中断控制器是否能正常工作了。我们可以在系统TICK的中断处理函数中添加一个打印信息: 如果中断系统正常工作的话,当TICK产...
RISCV基础开发(六)
QEMU裸机开发之打印字符 1.文件结构总览 先整体看下本章节裸机程序的工程文件组成,如下图所示。 address.h:主要定义了一些外设寄存器的基址还有内存基址等。 entry.S:入口文件,主要设...
SimpleOS开发(3)添加Cache操作接口
1. 实现Cache操作接口 在系统启动过程中需要使能icache和dcache来提高系统整体性能,并且后续别的系统模块也需要操作cache比如回写cache、失效cache等等,所以需要封装出cac...
SylixOS字符设备驱动开发(二)
SylixOS驱动模块加载和卸载 通过IDE新建SylixOS Kernel Module工程,这种方式将驱动编译为xxx.ko模块的方式使用,ko就是kernel object的缩写,在系统启动后通...
Xv6内核分析(五)
mian函数之kinit2 kinit2函数的作用是将之间的物理内存页添加到空间页链表之中: 在调用kinit2函数之后,物理内存页的申请释放就启用了锁机制。