前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单实现了DragonOS的块设备驱动模型以及AHCI驱动程序

简单实现了DragonOS的块设备驱动模型以及AHCI驱动程序

作者头像
灯珑LoGin
发布2022-10-31 15:25:32
6780
发布2022-10-31 15:25:32
举报
文章被收录于专栏:龙进的专栏

上周写好了DragonOS的AHCI驱动程序,能够通过DMA读写SATA硬盘,在这里简单记录一下。

源代码:https://github.com/fslongjin/DragonOS/tree/cc39911d4db00b9e3890f35ca46f1579e44d5be4/kernel/driver/disk

块设备驱动程序模型

块设备定义

(以下内容来自维基百科)

块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘、CD-ROM和内存区域。块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。

在DragonOS中,采用与Linux类似的块设备驱动程序模型。如下图所示:

块设备数据结构及操作

块设备驱动包含了以下数据结构:

名称

功能

说明

block_device_operation

块设备的操作接口

对外统一提供该接口

block_device_request_packet

块设备请求包

block_device_request_queue

块设备请求队列

AHCI驱动程序

AHCI驱动程序用于操作SATA硬盘设备。暂时只支持1个AHCI控制器。

初始化操作

其流程如下所示

  • 从pci总线获取AHCI控制器结构体,并在内存中映射ABAR
  • 为每个AHCI控制器创建ahci_device_t结构体
  • 映射第0个AHCI控制器的端口
  • 初始化请求队列

处理I/O请求

转载请注明来源:https://longjin666.cn/?p=1385

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月7日20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 块设备驱动程序模型
    • 块设备定义
      • 块设备数据结构及操作
      • AHCI驱动程序
        • 初始化操作
          • 处理I/O请求
          相关产品与服务
          对象存储
          对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档