当前位置: 首页 > news >正文

《MODEM HOST INTERFACE》,第6章,MHl register interface

该内存映射的I/O寄存器空间(MMIO)由设备硬件中的一组寄存器组成,该空间被映射到主机内存空间中。PCIe BAR-0将MMIO寄存器空间映射到主机地址空间。
该寄存器集包括配置寄存器、控制寄存器和状态寄存器、指向其他数据结构的指针,以及门铃阵列。

1. 寄存器约定

1.1 32位和64位支持
若主机支持64位寻址,软件必须使用64位访问来读写64位寄存器。
若主机仅支持32位寻址,软件必须通过两次32位访问来读写64位寄存器:
  • 先访问最高有效32位
  • 后访问最低有效32位
1.2 字节序(Endianness)
多字节寄存器字段遵循小端序:
  • 较低地址包含字段的最低有效部分
  • 字段内的字节或字符必须按小端序排列

2. MHl registers

3. 引导主机接口寄存器 (Boot host interface registers)

引导主机接口寄存器列于参见 PCIe 引导主机接口规范中。

4. 通道门铃阵列 (Channel doorbell array)

通道门铃阵列是一个最多包含 256 个门铃寄存器的阵列,每个寄存器 64 位。设备支持的每个通道在阵列中都有一个对应的门铃寄存器,通过通道 ID (channel ID) 索引。
主机使用门铃寄存器来通知设备,其在与该通道关联的传输环 (transfer ring) 中有新的工作项 (work items)。
设备支持的通道门铃寄存器数量对应于最大通道数(NCH 字段)。
通道门铃偏移寄存器 (CHDBOFF) 指向此门铃阵列。门铃阵列的基地址 (base address) 通过将 CHDBOFF 中的值加到 MMIO 基地址 (MMIO base address) 上来计算得出。

5. 事件环门铃阵列 (Event ring doorbell array)

事件环门铃阵列是一个最多包含 256 个门铃寄存器的阵列,每个寄存器 64 位。为设备支持的每个事件环定义一个门铃寄存器,通过事件环索引 (event ring index) 索引。
主机使用门铃寄存器来通知设备,其已为设备在事件环 (event ring) 中分配了新的可用元素 (available elements),供设备排队新事件 (queue new events)。
设备支持的事件环门铃寄存器数量对应于最大事件环数 (NER)。
事件环门铃偏移寄存器 (ERDBOFF) 指向此门铃阵列。门铃阵列的基地址 (base address) 通过将 ERDBOFF 中的值加到 MMIO 基地址 (MMIO base address) 上来计算得出。

6. 杂项寄存器 (Miscellaneous registers)

杂项寄存器是一组可选寄存器,用于实现不属于核心 MHI 功能的各种功能。这包括:
  • 传统中断控制 (INTx)
  • 时间同步 (Time synchronization) 和时间服务 (Time services)
  • 其他实现定义的功能 (Other implementation defined functionality)
这组寄存器位于 ERDB 阵列之后。该寄存器组的位置由 MISCOFF 寄存器指示。
注意:设备可能不支持本节中的所有寄存器。主机必须读取寄存器的能力 ID (capability ID) 才能确定支持哪些功能。每个能力 (capability) 将指向设备支持的下一个能力。
6.1 传统中断控制 (INTx) (Legacy interrupt control (INTx))
INTx 控制寄存器包括一个 INTx 配置寄存器和一个控制寄存器阵列。控制寄存器阵列的规模从 0 个寄存器(不支持 INTx)到八个寄存器 * NSUBVEC 不等(支持 INTA、B、C 和 D)。
例如,32 位 OFFSET 寄存器(ID = 8,24 位偏移位)。
6.2 时间同步 (Time synchronization)
时间同步寄存器由主机用于将其本地时钟 (local clock) 与设备的时钟同步。以下寄存器集提供了两种时间同步机制。第一种机制是基于读取 (read based) 的;主机读取一个从设备内部参考时钟源 (internal reference clock source) 运行的自由运行时间滴答计数器 (free running time tick counter)。第二种是一个投递式命令寄存器 (posted command register),向其写入会导致设备生成一个时间同步事件 (time synchronization event),该事件包含命令接收时设备的本地时间 (local device time)。

相关文章:

  • VBA之Word应用第三章第十节:文档Document对象的方法(三)
  • R语言AI模型部署方案:精准离线运行详解
  • 机器学习监督学习实战五:六种算法对声呐回波信号进行分类
  • 【Linux shell】shell中的变量——构建脚本逻辑的基石
  • Linux(生产消费者模型/线程池)
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
  • Linux(13)——Ext系列文件系统
  • 1.5 Node.js 的 HTTP
  • 纳米AI搜索与百度AI搜、豆包的核心差异解析
  • Faiss向量数据库全面解析:从原理到实战
  • Linux(14)——库的制作与原理
  • ASTRA论文总结
  • 【Linux】系统部分——进程控制
  • npm安装electron下载太慢,导致报错
  • Spark 之 AQE
  • 关于脏读,幻读,可重复读的学习
  • SDC命令详解:使用set_port_fanout_number命令进行约束
  • Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(上)
  • pycharm 中文字体报错
  • PyCharm集成Conda环境
  • 江苏省建设厅网站证件查询/河北百度seo
  • 网站的下载链接怎么做/怎样做网站的优化、排名
  • 微管家平台/武汉seo关键词排名优化
  • 网站导航条/上海网站建设费用
  • 迅睿cms建站/爱站网关键字挖掘
  • b2b2c平台网站建设/站长资源平台