1. 中断控制器 1.1 基础接口 中断控制器PLIC需要封装出标准接口使用: void os_int_init(void); void os_int_en(unsigned int vector, ...
SimpleOS开发(8)改进进程调度
1. 系统接口名称修改 为了方便使用系统接口以及辨识系统接口,需要将系统接口的命名进行规范。这里的系统接口是指通用功能接口,比如开关中断、申请释放内存等等,simpleos采用简单的"os_"前缀来命...
SimpleOS开发(7)添加进程支持
1. 进程相关数据结构定义 首先定义进程的状态,这里参考xv6将进程定义为6个状态: PROC_UNUSED:进程控制块未使用处于空闲状态。 PROC_USED:进程控制块已经被使用状态。 PROC_...
SimpleOS开发(6)添加VMM支持
0. 启动代码修复 之前在entry.S处理时遗漏了两个功能:BSS段清零和进入Trap时原有栈地址保存。BSS段清零工作比较简单,就是将kernel.ld链接脚本中定义的BSS段起始和结尾地址之间循...
SimpleOS开发(5)添加内核物理页管理器
1. 实现互斥锁雏形 内核的各个功能组件后续都有申请释放内存的需求,所以需要实现内存管理。在实现内存管理之前我们需要先实现互斥锁,因为通过下面我们看出内存管理时通过链表实现的,操作链表时需要加锁,所以...
SimpleOS开发(4)切换到S模式
1. 设置trap入口 1.1 设置M模式trap入口 RISCV架构发生中断和异常时不会像arm那样自动切换栈指针,所以在trap入口需要先设置好栈地址,我们将__stack_start加上第九个页...
SimpleOS开发(3)添加Cache操作接口
1. 实现Cache操作接口 在系统启动过程中需要使能icache和dcache来提高系统整体性能,并且后续别的系统模块也需要操作cache比如回写cache、失效cache等等,所以需要封装出cac...
SimpleOS开发(2)简单打印
1. 设计思路 全志D1芯片fel模式下会初始化好串口为115200波特率,所以我们的思路是封装好串口发送数据接口来使用即可,而无需再去设置串口的波特率等寄存器,从而简化代码。 1.1 启动文件 启动...
SimpleOS开发(1)环境准备
1. 项目简介 基于全志D1开发板开发一个类UNIX系统来学习操作系统开发相关知识,设计上会参考xv6和SylixOS,并且是从最底层开发,也即不使用uboot或者opensbi之类的引导程序,而是直...
SylixOSPSV开源项目
1. PSV简介 PlayStation®VITA,简称PSV,是索尼发售的第二代掌机,采用前后双面触控操作,前面为5英寸OLED电容屏,分辨率960×544,后面板为多点触控板(电容式),配备有基于...
Apple史诗级DFU漏洞分析
1. 概述 国外黑客通过研究苹果更新的补丁发现了一个史诗级的漏洞,该漏洞存在于从A5到A11的大部分iPhone、iPad等苹果设备中。这些设备的BootROM在设备DFU模式时处理USB数据流程方面...
SylixOSIP7开源项目
1. iPhone7简介 iPhone 7是Apple(苹果公司)的第10代手机,北京时间2016年9月8日凌晨1点在美国旧金山比尔·格雷厄姆市政礼堂2016年苹果秋季新品发布会上发布。 2. Syl...