1

我是一名硬件开发人员,正在为嵌入式系统创建 AHCI 接口。我想知道 PRD DMA 数据是在哪里创建并分配给 PRD 的。由于 SATA 使用 DWORDS,我假设数据将对齐为 4 个字节的倍数。我对Linux没有太多经验,所以如果有人能指出我正确的方向,我将不胜感激。

谢谢

4

1 回答 1

1

ahci 控制器充当系统内存和 SATA 设备之间的数据移动引擎。以读操作为例,大致顺序如下:

  • 软件在内存中“构建”命令(命令头、命令表和相应的 PRD)
  • 软件通过配置端口寄存器 PxCI(如果 NCQ 则为 PxSACT)发出此命令
  • AHCI 控制器获取并处理此命令(包括数据传输...)
  • 调用软件中断服务来处理命令完成
  • 软件读取 PRD 以获取设备内容

PRD条目由软件(驱动程序)创建/分配,可以通过命令表定位/检索,即硬件可以定位命令表,然后检索所有PRD条目。此外,ahci 规范将 PRD 地址和字节数都定义为 WORD-aligned(minimum)

于 2014-04-07T08:55:13.410 回答