1. 选择系统tick定时器 在riscv架构中已经定义了定时器,但是如果要使用这个定时器就必须配合OpenSBI提供的接口来设置定时器的新值,在这里为了和之前的BSP教程统一,我们选择使用全志提供的...
Apple史诗级DFU漏洞分析
1. 概述 国外黑客通过研究苹果更新的补丁发现了一个史诗级的漏洞,该漏洞存在于从A5到A11的大部分iPhone、iPad等苹果设备中。这些设备的BootROM在设备DFU模式时处理USB数据流程方面...
(五)SylixOS同步互斥之二进制信号量
1. 基本作用 上一章节我们介绍了互斥锁,用于“共享资源”的互斥访问,在驱动开发中我们有时候需要等待某种资源准备好之后才能继续执行代码,这就需要使用同步机制来实现这个目的。比如某个应用想要读取AD转换...
浅谈编译(四)
OpenCL 1. OpenCL简介 OpenCL 是由 Khronos Group 针对异构计算设备(heterogeneous device)进行并行运算所设计的标准 API 以及程式语言。 Op...
SimpleOS开发(4)切换到S模式
1. 设置trap入口 1.1 设置M模式trap入口 RISCV架构发生中断和异常时不会像arm那样自动切换栈指针,所以在trap入口需要先设置好栈地址,我们将__stack_start加上第九个页...
Xv6内核分析(十三)
buffer cache分析 1. buffer cache概述 Buffer cache是一个双向循环链表,用于缓存磁盘上的数据以提高性能。使用bread从磁盘上读取数据,使用bwrite将修改的数...
SylixOS之BSD红黑树
1. 设计数据结构 使用红黑树的主要目的是为了加速查找数据,我们先来看一看使用链表而不是红黑树方式组织数据时该如何设计数据结构。 1.1 平常的链表方式 我们能想到一种很简单的数据结构: struct...
SimpleOS开发(6)添加VMM支持
0. 启动代码修复 之前在entry.S处理时遗漏了两个功能:BSS段清零和进入Trap时原有栈地址保存。BSS段清零工作比较简单,就是将kernel.ld链接脚本中定义的BSS段起始和结尾地址之间循...
VxWorks内核分析四(转)
原文:http://www.prtos.org/wind-interrupt/。 接下来我们讨论一下Wind内核的中断处理模块,中断是操作系统内核设计中非常重要的部分。由于周期性和非周期性任务的按时执...
Xv6内核分析(二)
启动Xv6 1. Xv6入口代码 内核的入口代码在entry.S中,Xv6的内核是支持用grub引导的,grub引导的知识见此博客:https://blog.csdn.net/xiaolanmysel...
(七)SylixOS同步互斥之原子操作
1. 基本作用 在各类操作系统提供的接口中,除了我们之前学习的互斥锁和信号量类接口用于实现互斥或者同步的目的外,也基本都会提供一类原子操作的接口,一般接口都带有atomic_xxx字样。原子操作类接口...
VxWorks内核分析二(转)
原文:http://www.prtos.org/vxworks-wind-kernel/。 本文讨论Wind内核的设计思想,正如前文所述,VxWorks的Wind内核采用可裁剪的微内核设计,具有多任务...