最近工作涉及到做一些MI 协议测试用例编写。 看起来MI 协议很繁杂,看了两个多月了,想边学习理解,边进行总结。

MI 协议主要涉及物理层smbus/I2C, 中间传输层的MCTP,和最上层封装起来的MI 层。

这里主要着重在out of band, in band 后期深入在总结。

先总结下MI协议大致的执行过程:

  1. Host 发MI报文消息给 device(slave)
  2. 先将MI 报文封装成MCTP报文
  3. 将完整MCTP报文通过I2C/smbus 链路发给device
  4. device 收到MCTP报文,解封MCTP报文得到MI报文
  5. 解析MI 报文发送消息,slave device 会回复的消息数据以MI 格式封装成MI 报文
  6. 再将MI报文封装成MCTP数据封装
  7. 再将MCTP报文通过I2C链路发给host
  8. Host 解封chengMCTP,再回到step 1,形成闭环。

写到这里,好像之前搞混了一个知识点,又混论吞枣了, 到底MI 格式和MCTP 格式,谁封装了谁,谁被解封,谁被解析。
两个报文消息格式有啥不一样来着。 我们仔细探究下协议吧。


从MI 协议这句话,我们可以看出MI 消息报文payload 是MCTP 消息组包的过程,MI消息报文长度不能超过4224 bytes,即MDTS。

从上述协议解析就可以看出来,MCTP报文格式和MI 报文格式差别,及MI 报文怎么组包MCTP packets。

从二者header也可以看出来,tag owner bit 可以设置为1 或0, 用来区别消息request和response互换。

Nvme-MI 协议理解-overview相关推荐

  1. Socket编程、协议理解

    Socket编程.协议理解 简单说明 Socket编程 Socket 常用接口 Socket服务端业务编码 代码说明 文件服务(fileServe) 消息服务(msgServe) 消息写会(write ...

  2. 深入理解 gRPC 协议--理解protobuf/.proto/http2

    RPC 无非是做两件事情:一是数据编码,二是请求映射. 1. 数据编码–protobuf vs json 数据编码顾名思义就是在将请求的内存对像转化成可以传输的字节流发给服务端,并将收到的字节流再转化 ...

  3. 系统监控之SNMP协议理解

    使用Mycat分布式数据库中间件时需要对各个性能指标进行监控,官方已经提供了一个监控软件,于是讨论起来监控是怎么具体可能有哪些实现,虽然知道已经有很多的监控软件可以使用,比如zabbix,但是今天听同 ...

  4. 270 扩展固态硬盘_新款macbook扩展坞,内置固态硬盘盒,支持NVME M2协议,一秒传输1GB...

    能内装SSD固态硬盘的扩展坞你用过吗? PX大通新款扩展坞,可装SSD固态硬盘,而且支持固态硬盘NVME协议. NVME固态硬盘扩展坞 PX大通typec扩展坞NVME固态移动硬盘盒M.2苹果笔记本m ...

  5. HTTP协议理解与应用总结

    2019独角兽企业重金招聘Python工程师标准>>> HTTP 工作原理 HTTP 协议采用请求/响应模型.客户端向服务器发送一个请求报文,服务器以一个状态作为响应. 以下是 HT ...

  6. python鸭子类型与协议理解

    鸭子类型 定义 在维基百科中的准确定义是'是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定' 个人理 ...

  7. JESD204协议理解

    目录 1.参数理解 2.数据传输 3.链路建立 3.1代码组同步 3.2特殊字符 3.3初始化多帧序列 4.时钟要求 1.参数理解 jesd204b主要参数及含义如下 参数 含义 M 每个器件的转换数 ...

  8. http协议:http协议理解

    HTTP协议 定义 超文本传输语言 工作原理 1.客户端与服务器建立链接, 2.并向服务器发送请求(点击http连接),携带信息有URL 协议版本号 其他内容 3.服务器接收到请求后给予响应信息,其中 ...

  9. GPL,MIT, Apache 等协议理解

    转载:http://www.cnblogs.com/likebeta/archive/2012/06/21/2558180.html 看开源社区里的开源项目除了项目简介和项目的官方网址以外,还都会有一 ...

最新文章

  1. IDEA配置java代码规范
  2. Intel x710万兆 SR-IOV 网卡驱动升级
  3. 昨天,JetBrains 推出“下一代 IDE”,快看看有哪些值得期待的功能!
  4. 速卖通开店条件和流程最新版
  5. java comparator_Java 中如何指定集合元素的排序策略
  6. mysql主节点1593从节点正常_mysqlmha高可用架构的安装_MySQL
  7. 循序渐进DB2(第2版)——DBA系统管理、运维与应用案例
  8. 生命很短,我用tldr
  9. iOS里面MVC模式详解
  10. 桁和 / Digit Sum(AtCoder-2038)
  11. 国产数据库丨国产数据库发展十策(一):开发一个数据库到底需要多少人?...
  12. 为什么选择Netty作为基础通信框架?
  13. 动态列之函数实现动态列
  14. kali Linux渗透测试教程.pdf
  15. 科大讯飞语音合成Vue版教程
  16. 下方点击出项上方对应的插件_魔兽世界MiDKP3.0插件使用说明
  17. 阿里云小蜜PHP实例代码
  18. qt介绍06——QMAKESPEC
  19. 赛舟-体验版 α测试调试方法
  20. Java 9 模块化开发:核心原则与实践

热门文章

  1. 电大c语言形考作业4,国开电大C语言程序设计形考任务4答案
  2. 松木ME6980ED(替代)NCE8205B 双N沟道20V(D-S)增强模式Mosfet,ESD保护方案
  3. 中国自主芯片厂商君正科技物联网IoT平台Halley2上的二维码识别
  4. 杂记 - 逃离北京的路上
  5. 你承认电子计算机是天之骄子改句子,改写句子:肯定句.doc
  6. SAP ABAP 报告编程-08
  7. c语言 求2到100的素数,2是素数吗(c语言输出100以内素数)
  8. JSX/TSX的知识介绍
  9. 武汉大学计算机学院自主招生考试内容,大学自主招生考试主要考哪些科目
  10. 基于springboot+vue的积分兑换系统