调试GPU时,遇到的死锁问题,具体的序列如下: cpu0上某线程T1调用了系统含有__KERNEL_ENTER的接口 __KERNEL_ENTER中会获得内核锁,然后使能中断,这时内核锁是归T1线程持...
揭开SylixOS VMM子系统的神秘面纱
SylixOS的VMM子系统共有三个功能:物理地址的管理、虚拟地址的管理、映射虚拟地址和物理地址。SylixOS下对物理地址空间和虚拟地址空间是通过页面来管理,单个页面的大小是4KB。 1. Syli...
SimpleOS开发(9)添加中断控制器和定时器
1. 中断控制器 1.1 基础接口 中断控制器PLIC需要封装出标准接口使用: void os_int_init(void); void os_int_en(unsigned int vector, ...
Wayland窗口系统(二)
4. Wayland协议实现浅析 4.1 几个重要的数据结构 4.1.1 wl_object wl_object是一个很重要的数据结构,在客户端和服务端都有此数据结构的封装,是wl_proxy、wl_...
RealEvo-IDE使用小技巧
1. 显示特殊字符 1.1 快捷按钮 1.2 编辑要显示的特殊字符 2. 将tab键换成4个空格 第一步: 第二步: 第三步: 3. 在固定的列显示竖线 4. 按列编辑 5. 高亮变量 6. 解决单个...
SylixOS字符设备驱动开发(六)
SylixOS驱动统计打开次数 在上一节我们说驱动被打开的次数是由驱动开发者维护的,其实在设备实例数据结构中就有一个成员表示设备被打开的次数: typedef struct { LW_LIST_LIN...
(三)SylixOS开发环境
最近在学习riscv版本的xv6,加上工作上的一些事情,所以SylixOS入门系列处于停更状态。我发现如果不一直坚持学习或者写文章的话,一段时间后就会松懈下来,到周末能躺床上刷一天的手机==所以做任何...
Xv6内核分析(一)
Bootloader引导 Bootloader部分的代码主要负责主核的启动,保护模式的设置等。代码主要在bootasm.S、bootmain.c中。 1.bootasm.S bootasm.S主要工作...
SylixOS PCIe控制器驱动开发(七)
SylixOS申请PCIe设备中断 本来这篇文章是想和读写配置空间放一起讲的,但是梳理了下发现PCIe的中断方面的知识还是比较重要的,因为现在一般的PCIe设备都需要配合中断来进行工作,而PCIe中断...
SylixOS字符设备驱动开发(七)
SylixOS驱动创建多个设备文件 在前面几节教程中我们在驱动中是直接定义一个设备实例的全局变量,但是实际项目中我们有时候需要定义自己的数据结构,用来将一些私有数据保存在其中,这时就可以按如下方式定义...
SylixOS块设备驱动开发(二)
分区和格式化 1. 查看分区信息 块设备要想被使用首先需要进行分区,然后将分区格式化为具体的文件系统格式才能使用,分区信息是以分区表的形式保存在设备的第一个扇区末尾中: 在x86平台的磁盘上,上图中紫...
SylixOS BSP开发(十三)
实现系统TICK初始化 通常情况下我们会选择一个定时器用于产生系统所需要的TICK中断,在全志R16平台上有两个24bit硬件定时器,使用时用户设置一个初始值,启动后定时器进行递减,如果减到0则可以产...