SylixOS

SylixOS字符设备驱动开发(三)

SylixOS字符设备操作之open和close 在第一节我们学习过在应用层如何操作普通的文件,就是通过open、close、read、write这些接口,普通文件是存放在具体的存储设备上的,所以从某...
阅读全文
SylixOS

SylixOS BSP开发(九)

实现串口SIO驱动(一) 在SylixOS中,不管是调试串口还是通信串口都是以TTY设备的形式注册到内核中使用,每一个串口设备都在/dev/ 目录下有一个对应的ttyS* 设备名的设备: BSP在启动...
阅读全文
SylixOS

RISCV基础开发(一)

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

Xv6内核分析(三.7)

main函数之consoleinit devsw用来表示一个设备,xv6下最多有10个设备。其中console是第1个设备: consoleinit函数很简单,就是初始化了devsw中的读写操作函数指...
阅读全文
SylixOSIP7

Apple史诗级DFU漏洞分析

1. 概述 国外黑客通过研究苹果更新的补丁发现了一个史诗级的漏洞,该漏洞存在于从A5到A11的大部分iPhone、iPad等苹果设备中。这些设备的BootROM在设备DFU模式时处理USB数据流程方面...
阅读全文
SylixOS

SylixOS 多核SMP BSP开发(二十)

多核唤醒简介 在开始多核BSP开发之前,我们需要思考两个问题:第一个是各个cpu核不管是主核还是从核是如何开始执行指令的,也就是如何唤醒它们让其开始工作;第二个问题是各个cpu核怎么知道它要执行的第一...
阅读全文
SylixOS

RISCV基础开发(十一)

QEMU裸机开发之M模式定时器中断 定时器相关的寄存器也是定义在clint中的,再来看下寄存器映射,如下所示。 同样的我们只关心第一个核的寄存器,和定时器相关的总共就两个寄存器,“mtime”寄存器相...
阅读全文
SimpleOS

SimpleOS开发(8)改进进程调度

1. 系统接口名称修改 为了方便使用系统接口以及辨识系统接口,需要将系统接口的命名进行规范。这里的系统接口是指通用功能接口,比如开关中断、申请释放内存等等,simpleos采用简单的"os_"前缀来命...
阅读全文
Xv6

Xv6内核分析(十)

spinlock分析 1. initlock spinlock分析spinlock: 主要是初始化锁的状态为0,并记录锁的名字用于调试分析。 2. pushcli和popcli 在xv6中,用spin...
阅读全文