SylixOS

SylixOS网络开发(一)

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

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

SylixOS设备操作之read和write 有些设备可能会和应用层有大量的数据进行传输,比如网卡、硬盘等等,这时候用ioctl来和应用层传输数据就显得不怎么适合了,因为ioctl一般是用来进行对设备...
阅读全文
SylixOS

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

SylixOS驱动创建多个设备文件 在前面几节教程中我们在驱动中是直接定义一个设备实例的全局变量,但是实际项目中我们有时候需要定义自己的数据结构,用来将一些私有数据保存在其中,这时就可以按如下方式定义...
阅读全文
SylixOS

SylixOS 多核SMP BSP开发(二十三)

在bspInit.c中添加多核启动功能 在本章节中,我们将添加从核启动需要的初始化代码,同样的在主核的处理过程中也需要添加代码来配合多核功能。 1. halModeInit 这个接口是主核和从核进入C...
阅读全文
SylixOS

RISCV基础开发(六)

QEMU裸机开发之打印字符 1.文件结构总览 先整体看下本章节裸机程序的工程文件组成,如下图所示。 address.h:主要定义了一些外设寄存器的基址还有内存基址等。 entry.S:入口文件,主要设...
阅读全文
SylixOS

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

SylixOS设备操作之阻塞read和write 在实际的外设驱动中,如果需要读取设备数据,设备都需要一定的准备时间,比如读硬盘扇区数据,硬盘需要一段时间准备好数据后,通过中断来通知cpu数据准备好。...
阅读全文
SylixOS

SylixOS块设备驱动开发(二)

分区和格式化 1. 查看分区信息 块设备要想被使用首先需要进行分区,然后将分区格式化为具体的文件系统格式才能使用,分区信息是以分区表的形式保存在设备的第一个扇区末尾中: 在x86平台的磁盘上,上图中紫...
阅读全文
SylixOS

SylixOS块设备驱动开发(一)

认识块设备 1. 存储设备 在嵌入式中,常见的存储设备有SD卡、eMMC、sata硬盘、U盘、NVMe盘等。其中SD卡和eMMC使用的是SD协议,sata盘使用的是sata协议(包括机械硬盘和固态硬盘...
阅读全文
SylixOS

RISCV基础开发(四)

SBI规范 1. 简介 SBI的全称为Supervisor Binary Interface,是m模式下的服务对上提供的统一接口。比如设置timer、发送核间中断等,这些服务通过SBI接口进行封装,这...
阅读全文
SylixOS

SylixOS PCIe控制器驱动开发(九)

SylixOS PCIe控制器驱动使用自动配置功能 1. 地址空间简单回顾 自动配置主要就是配置各个设备BAR空间的PCIe地址,所以我们简单回顾下PCIe地址和CPU物理地址的概念。 PCIe控制器...
阅读全文
SylixOS

RISCV基础开发(十一)

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