SylixOS

自旋锁引起的死锁问题

调试GPU时,遇到的死锁问题,具体的序列如下: cpu0上某线程T1调用了系统含有__KERNEL_ENTER的接口 __KERNEL_ENTER中会获得内核锁,然后使能中断,这时内核锁是归T1线程持...
阅读全文
SylixOS

SylixOS PCIe开发(四)

1. 动态映射ECAM空间 我们在《SylixOS PCIe开发(二)》文章中介绍了使用ECAM方式来访问PCI设备的配置空间,这种方式的缺点就是如果想访问所有总线上的设备,一共需要256MB的地址空...
阅读全文
SylixOS

SylixOS PCIe开发(三)

1. SylixOS主控驱动支持多个控制器 SylixOS中的pci框架目前只支持单个控制器,如果需要在主控驱动中支持多个控制器,就需要将多个控制器虚拟成一个控制器给SylixOS。 在vx下用户的p...
阅读全文
SylixOS

SylixOS PCIe开发(二)

1. 概述 本篇文章主要介绍不同平台下pci设备配置空间的访问方法,总的来说,pci设备的配置空间有两种访问方式: 配置寄存器访问 ECAM访问 2. 配置空间寄存器 pci配置空间寄存器大小为256...
阅读全文
SylixOS

SylixOS PCIe开发(一)

本文章致力于对PCI相关知识做一个普及。 另外推荐一个PCIe讲解的不错的系列博客:http://blog.chinaaet.com/justlxy/p/5100061871 1. x86处理器系统初...
阅读全文
SylixOS

SylixOS网络开发(五)

1. 发送零拷贝问题 某SOC是四核A9平台,网络控制器是dw,不使用发送零拷贝的tcp发送带宽是93M/s,使用发送零拷贝之后的发送带宽竟然降低到了20M/s。最后查出的原因是用发送零拷贝时需要ca...
阅读全文
SylixOS

SylixOS网络开发(四)

1. 概述 本章节讲述网络零拷贝技术的基本原理,需要知道的一个前提条件是,零拷贝可能不会提升网络驱动收发数据的速度,对不同的平台需要具体的分析,不能一概而论。 2. 发送零拷贝 我们来看看上一章节中的...
阅读全文
SylixOS

SylixOS网络开发(三)

1. 概述 本篇章节介绍SylixOS网络驱动不使用零拷贝时的数据是如何传递的。在阅读本篇文章的时候,大家脑海里一定要记住以下这张图: 这张图只是对上一章节中的网络数据流图做了一点小修改。 2. 发送...
阅读全文
SylixOS

SylixOS网络开发(二)

1.概述 最近调网卡驱动,调的身心俱疲,这里记录一下在调试过程中学习到的网卡驱动相关知识。这个系列文章只关注在SylixOS系统下要让网卡收发数据,需要做什么,会涉及到网络控制器的一些基本硬件知识、驱...
阅读全文
SylixOS

SylixOS网络开发(一)

1. 网络硬件组成一览 1.1总体概览 网络硬件上主要有以下几部分组成: CPU:为MAC控制器提供描述符,以及负责在网络协议栈和网络驱动之间传送数据 MAC:通过描述符来控制DMA发送和接收数据 D...
阅读全文
SylixOS

浅谈编译(四)

OpenCL 1. OpenCL简介 OpenCL 是由 Khronos Group 针对异构计算设备(heterogeneous device)进行并行运算所设计的标准 API 以及程式语言。 Op...
阅读全文
SylixOS

浅谈编译(三)

Vulkan 1. Vulkan简介 Vulkan是Khronos组织制定的“下一代”开放的图形显示API,是与DirectX12能够匹敌的GPU API标准。 这里我们仅仅讨论Vulkan着色器相关...
阅读全文