<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>协议 on 豆腐的小站</title>
        <link>https://esswz.top/tags/%E5%8D%8F%E8%AE%AE/</link>
        <description>Recent content in 协议 on 豆腐的小站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>Example Person</copyright>
        <lastBuildDate>Thu, 27 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://esswz.top/tags/%E5%8D%8F%E8%AE%AE/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>EMMC协议之CMD请求与应答格式详解</title>
        <link>https://esswz.top/p/emmc-cmd-format/</link>
        <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://esswz.top/p/emmc-cmd-format/</guid>
        <description>&lt;h2 id=&#34;1-概述&#34;&gt;1. 概述
&lt;/h2&gt;&lt;p&gt;eMMC（embedded Multi Media Card）是 JEDEC 制定的嵌入式存储标准（JESD84 系列，目前常见 eMMC 5.1）。主机与 eMMC 之间通过以下信号通信：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;信号&lt;/th&gt;
          &lt;th&gt;方向&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CLK&lt;/td&gt;
          &lt;td&gt;主机 → 设备&lt;/td&gt;
          &lt;td&gt;时钟信号，命令和数据都在其上升沿被采样&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD&lt;/td&gt;
          &lt;td&gt;双向（半双工）&lt;/td&gt;
          &lt;td&gt;用于传输命令和应答，同一时刻只能有一个方向发送&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DAT0 ~ DAT7&lt;/td&gt;
          &lt;td&gt;双向&lt;/td&gt;
          &lt;td&gt;数据线，可工作于 x1 / x4 / x8 模式&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所有命令与应答都通过 CMD 线以&lt;strong&gt;位流&lt;/strong&gt;形式传输：主机发命令（主机 → 设备），设备回应答（设备 → 主机）。命令格式和应答格式本质上都是 48 位的一帧，唯一的方向标志就是&lt;strong&gt;传输位&lt;/strong&gt;。下面逐一拆解每一帧里每一位的作用。&lt;/p&gt;
&lt;h2 id=&#34;2-命令请求格式48-位&#34;&gt;2. 命令请求格式（48 位）
&lt;/h2&gt;&lt;p&gt;主机发往设备的命令固定为 48 位，&lt;strong&gt;高位先发&lt;/strong&gt;（MSB first），位布局如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bit47      bit46      bit45            bit40   bit39                        bit8  bit7      bit1  bit0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────┬─────────┬─────────────────┬─────────────────────────────────────────┬──────────────┬──────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Start   │  Trans  │  Command Index  │                Argument                 │     CRC7     │ End  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Bit     │  Bit    │      [5:0]      │                [31:0]                   │     [6:0]    │ Bit  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────┴─────────┴─────────────────┴─────────────────────────────────────────┴──────────────┴──────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    0          1          6 bits                      32 bits                       7 bits        1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;各字段作用：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;位&lt;/th&gt;
          &lt;th&gt;宽度&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;起始位 Start Bit&lt;/td&gt;
          &lt;td&gt;bit47&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;固定为 &lt;code&gt;0&lt;/code&gt;，标志一帧的开始，接收方靠它识别帧边界&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;传输位 Transmission Bit&lt;/td&gt;
          &lt;td&gt;bit46&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;1&lt;/code&gt; 表示主机 → 设备（命令方向）；应答时此位为 &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;命令索引 Command Index&lt;/td&gt;
          &lt;td&gt;bit45 ~ bit40&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;命令号，范围 0 ~ 63（6 位可表示 64 个命令，如 CMD8 的二进制为 &lt;code&gt;001000&lt;/code&gt;）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;参数 Argument&lt;/td&gt;
          &lt;td&gt;bit39 ~ bit8&lt;/td&gt;
          &lt;td&gt;32&lt;/td&gt;
          &lt;td&gt;命令携带的参数，具体含义随命令而定（见第 7 节）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CRC7&lt;/td&gt;
          &lt;td&gt;bit7 ~ bit1&lt;/td&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;对&amp;quot;命令索引 + 参数&amp;quot;共 38 位计算的 CRC 校验值（见第 8 节）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;结束位 End Bit&lt;/td&gt;
          &lt;td&gt;bit0&lt;/td&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;固定为 &lt;code&gt;1&lt;/code&gt;，标志一帧的结束&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;3-应答格式48-位&#34;&gt;3. 应答格式（48 位）
&lt;/h2&gt;&lt;p&gt;设备对大部分命令会返回 48 位应答，其结构与命令格式几乎一样，唯一区别是&lt;strong&gt;传输位为 &lt;code&gt;0&lt;/code&gt;&lt;/strong&gt;（设备 → 主机），且 bit39 ~ bit8 不再是参数，而是&lt;strong&gt;应答内容&lt;/strong&gt;（随应答类型解释，如 Card Status、OCR、RCA 等）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bit47      bit46      bit45            bit40   bit39                        bit8  bit7      bit1  bit0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────┬─────────┬─────────────────┬─────────────────────────────────────────┬──────────────┬──────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Start   │  Trans  │  Command Index  │            Card Status /                │     CRC7     │ End  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Bit     │  Bit    │      [5:0]      │       OCR / RCA / 其他内容 [31:0]        │     [6:0]    │ Bit  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────┴─────────┴─────────────────┴─────────────────────────────────────────┴──────────────┴──────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    0          0          6 bits                      32 bits                       7 bits        1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;位&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;起始位&lt;/td&gt;
          &lt;td&gt;bit47&lt;/td&gt;
          &lt;td&gt;固定 &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;传输位&lt;/td&gt;
          &lt;td&gt;bit46&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;0&lt;/code&gt; = 设备 → 主机（应答方向）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;命令索引&lt;/td&gt;
          &lt;td&gt;bit45 ~ bit40&lt;/td&gt;
          &lt;td&gt;回显本次应答对应的是哪条命令&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;应答内容&lt;/td&gt;
          &lt;td&gt;bit39 ~ bit8&lt;/td&gt;
          &lt;td&gt;32 位，按应答类型解释（R1/R3/R6/R7 等）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CRC7&lt;/td&gt;
          &lt;td&gt;bit7 ~ bit1&lt;/td&gt;
          &lt;td&gt;对&amp;quot;索引 + 应答内容&amp;quot;38 位的校验值&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;结束位&lt;/td&gt;
          &lt;td&gt;bit0&lt;/td&gt;
          &lt;td&gt;固定 &lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;4-r2-长应答136-位&#34;&gt;4. R2 长应答（136 位）
&lt;/h2&gt;&lt;p&gt;CID（CMD2 / CMD10 返回）和 CSD（CMD9 返回）寄存器本身是 128 位，装不进 48 位应答，因此 R2 应答是 &lt;strong&gt;136 位&lt;/strong&gt;的长格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bit135   bit134  bit133         bit128  bit127                           bit8  bit7      bit1  bit0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌────────┬────────┬──────────────────┬──────────────────────────────────────────┬──────────────┬──────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Start  │ Trans  │     Reserved     │      CID / CSD 内容 [127:8]               │     CRC7     │ End  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ Bit    │ Bit    │     (6 bits)     │            120 bits                      │     [6:0]    │ Bit  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└────────┴────────┴──────────────────┴──────────────────────────────────────────┴──────────────┴──────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   0        0          全 0                                                           7 bits        1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;位&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;起始位 + 传输位&lt;/td&gt;
          &lt;td&gt;bit135 ~ bit134&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;00&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;保留位&lt;/td&gt;
          &lt;td&gt;bit133 ~ bit128&lt;/td&gt;
          &lt;td&gt;6 位，全部为 &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CID / CSD 内容&lt;/td&gt;
          &lt;td&gt;bit127 ~ bit8&lt;/td&gt;
          &lt;td&gt;120 位。寄存器低 8 位（bit7 ~ bit0）是寄存器自身的 CRC7 和结束位，不随应答传出，所以只传 [127:8]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CRC7&lt;/td&gt;
          &lt;td&gt;bit7 ~ bit1&lt;/td&gt;
          &lt;td&gt;对上面 120 位内容计算的校验值&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;结束位&lt;/td&gt;
          &lt;td&gt;bit0&lt;/td&gt;
          &lt;td&gt;固定 &lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;5-响应类型r1--r7&#34;&gt;5. 响应类型（R1 ~ R7）
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;长度&lt;/th&gt;
          &lt;th&gt;应答内容&lt;/th&gt;
          &lt;th&gt;典型命令&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;R1&lt;/td&gt;
          &lt;td&gt;48 位&lt;/td&gt;
          &lt;td&gt;32 位 Card Status（卡状态寄存器）&lt;/td&gt;
          &lt;td&gt;CMD13、CMD55 等&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;R1b&lt;/td&gt;
          &lt;td&gt;48 位 + busy&lt;/td&gt;
          &lt;td&gt;同 R1，应答后 DAT0 拉低表示忙&lt;/td&gt;
          &lt;td&gt;CMD6、CMD12、CMD38&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;R2&lt;/td&gt;
          &lt;td&gt;136 位&lt;/td&gt;
          &lt;td&gt;CID 或 CSD 寄存器内容&lt;/td&gt;
          &lt;td&gt;CMD2、CMD9、CMD10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;R3&lt;/td&gt;
          &lt;td&gt;48 位&lt;/td&gt;
          &lt;td&gt;OCR 寄存器（操作条件）&lt;/td&gt;
          &lt;td&gt;CMD1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;R6&lt;/td&gt;
          &lt;td&gt;48 位&lt;/td&gt;
          &lt;td&gt;RCA[31:16] + 卡状态[15:0]&lt;/td&gt;
          &lt;td&gt;CMD3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;R7&lt;/td&gt;
          &lt;td&gt;48 位&lt;/td&gt;
          &lt;td&gt;回显接口条件（电压 + 校验模式）&lt;/td&gt;
          &lt;td&gt;CMD8&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关于 R1b 的忙信号&lt;/strong&gt;：R1b 应答之后，设备会在 DAT0 上持续输出低电平表示&amp;quot;忙&amp;quot;，主机必须等待忙信号结束才能发起下一条命令。实际驱动中常用 CMD13（SEND_STATUS）轮询设备状态，直到 &lt;code&gt;READY_FOR_DATA&lt;/code&gt; 置位或设备进入目标状态。&lt;/p&gt;
&lt;h2 id=&#34;6-r1-应答card-status-字段详解&#34;&gt;6. R1 应答：Card Status 字段详解
&lt;/h2&gt;&lt;p&gt;R1 应答的 32 位内容就是卡的&lt;strong&gt;状态寄存器&lt;/strong&gt;，是调试时最常解析的字段：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;位&lt;/th&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;31&lt;/td&gt;
          &lt;td&gt;OUT_OF_RANGE&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;命令参数超出设备支持范围（如地址越界）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;30&lt;/td&gt;
          &lt;td&gt;ADDRESS_ERROR&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;地址未对齐（例如不是块边界对齐）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;29&lt;/td&gt;
          &lt;td&gt;BLOCK_LEN_ERROR&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;块长度不支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;28&lt;/td&gt;
          &lt;td&gt;ERASE_SEQ_ERROR&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;擦除序列错误&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;27&lt;/td&gt;
          &lt;td&gt;ERASE_PARAM&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;擦除参数无效&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;26&lt;/td&gt;
          &lt;td&gt;WP_VIOLATION&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;尝试写入写保护区域&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;25&lt;/td&gt;
          &lt;td&gt;CARD_IS_LOCKED&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;卡处于锁定状态&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24&lt;/td&gt;
          &lt;td&gt;LOCK_UNLOCK_FAILED&lt;/td&gt;
          &lt;td&gt;R&lt;/td&gt;
          &lt;td&gt;锁定/解锁操作失败&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;23&lt;/td&gt;
          &lt;td&gt;COM_CRC_ERROR&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;上一次命令 CRC 校验失败（总线传输错误）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;22&lt;/td&gt;
          &lt;td&gt;ILLEGAL_COMMAND&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;命令非法（设备不支持或当前状态下不允许）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;21&lt;/td&gt;
          &lt;td&gt;DEVICE_ECC_FAILED&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;设备内部 ECC 纠错失败&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;20&lt;/td&gt;
          &lt;td&gt;CC_ERROR&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;内部控制电路错误&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;19&lt;/td&gt;
          &lt;td&gt;ERROR&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;一般性错误&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;18&lt;/td&gt;
          &lt;td&gt;UNDERRUN&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;数据下溢（多块读时数据供应不及时）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;17&lt;/td&gt;
          &lt;td&gt;OVERRUN&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;数据上溢（多块写时数据接收不及时）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16&lt;/td&gt;
          &lt;td&gt;CID/CSD_OVERWRITE&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;CID/CSD 寄存器被改写&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;15&lt;/td&gt;
          &lt;td&gt;WP_ERASE_SKIP&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;因写保护跳过部分擦除区域&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;14&lt;/td&gt;
          &lt;td&gt;CARD_ECC_DISABLED&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;ECC 被禁用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;13&lt;/td&gt;
          &lt;td&gt;ERASE_RESET&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;擦除序列被重置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12:9&lt;/td&gt;
          &lt;td&gt;CURRENT_STATE&lt;/td&gt;
          &lt;td&gt;X&lt;/td&gt;
          &lt;td&gt;设备当前状态（见下表）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8&lt;/td&gt;
          &lt;td&gt;READY_FOR_DATA&lt;/td&gt;
          &lt;td&gt;X&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;1&lt;/code&gt; 表示设备可收发数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;SWITCH_ERROR&lt;/td&gt;
          &lt;td&gt;E&lt;/td&gt;
          &lt;td&gt;模式切换（CMD6）失败&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;EXCEPTION_EVENT&lt;/td&gt;
          &lt;td&gt;X&lt;/td&gt;
          &lt;td&gt;异常事件标志，配合 EXT_CSD 的 EXCEPTION_EVENTS_STATUS 使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;APP_CMD&lt;/td&gt;
          &lt;td&gt;X&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;1&lt;/code&gt; 表示下一条命令将按 ACMD（应用命令）解释&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4:0&lt;/td&gt;
          &lt;td&gt;Reserved&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;保留&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;类型说明：&lt;strong&gt;R&lt;/strong&gt; 类错误位在命令执行时更新；&lt;strong&gt;E&lt;/strong&gt; 类错误位在主机读取后清除；&lt;strong&gt;X&lt;/strong&gt; 类为状态位，实时反映当前状态。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;CURRENT_STATE&lt;/code&gt;（bit12:9）取值：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;值&lt;/th&gt;
          &lt;th&gt;状态&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;0&lt;/td&gt;
          &lt;td&gt;idle&lt;/td&gt;
          &lt;td&gt;空闲（上电或 CMD0 复位后）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;ready&lt;/td&gt;
          &lt;td&gt;就绪，等待识别&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;ident&lt;/td&gt;
          &lt;td&gt;识别中（CMD2/CMD3 阶段）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;stby&lt;/td&gt;
          &lt;td&gt;待机，已分配 RCA&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;tran&lt;/td&gt;
          &lt;td&gt;数据传输状态（读写命令都在此状态下发出）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;data&lt;/td&gt;
          &lt;td&gt;数据接收中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;rcv&lt;/td&gt;
          &lt;td&gt;数据发送中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;prg&lt;/td&gt;
          &lt;td&gt;编程中（写入/擦除进行中）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8&lt;/td&gt;
          &lt;td&gt;dis&lt;/td&gt;
          &lt;td&gt;断开（CMD7 取消选中）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9 ~ 15&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;保留&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;驱动调试时最常见的场景：发完 CMD24（写）后卡停留在 &lt;code&gt;prg&lt;/code&gt; 状态，说明上一次写操作还没完成；发命令后返回 &lt;code&gt;ILLEGAL_COMMAND&lt;/code&gt;，则要检查命令是否在正确状态下发出（例如未完成初始化就发读写命令）。&lt;/p&gt;
&lt;h2 id=&#34;7-常见命令-argument-参数作用&#34;&gt;7. 常见命令 Argument 参数作用
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;命令&lt;/th&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;Argument 作用&lt;/th&gt;
          &lt;th&gt;应答&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD0&lt;/td&gt;
          &lt;td&gt;GO_IDLE_STATE&lt;/td&gt;
          &lt;td&gt;无参数（全 0），复位设备到 idle 状态&lt;/td&gt;
          &lt;td&gt;无&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD1&lt;/td&gt;
          &lt;td&gt;SEND_OP_COND&lt;/td&gt;
          &lt;td&gt;主机 OCR：bit30 = HCS（高容量支持），bit29:24 = 电压窗口；设备在 R3 应答中回传自己的 OCR&lt;/td&gt;
          &lt;td&gt;R3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD2&lt;/td&gt;
          &lt;td&gt;ALL_SEND_CID&lt;/td&gt;
          &lt;td&gt;无参数&lt;/td&gt;
          &lt;td&gt;R2（CID）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD3&lt;/td&gt;
          &lt;td&gt;SEND_RELATIVE_ADDR&lt;/td&gt;
          &lt;td&gt;无参数；设备在 R6 应答中分配并返回自己的 RCA&lt;/td&gt;
          &lt;td&gt;R6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD6&lt;/td&gt;
          &lt;td&gt;SWITCH&lt;/td&gt;
          &lt;td&gt;模式切换 / EXT_CSD 字节读写（见下方展开）&lt;/td&gt;
          &lt;td&gt;R1b&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD7&lt;/td&gt;
          &lt;td&gt;SELECT_CARD&lt;/td&gt;
          &lt;td&gt;RCA[15:0]：选中该 RCA 的设备进入 tran 状态；RCA 为 0 表示取消选中&lt;/td&gt;
          &lt;td&gt;R1b&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD8&lt;/td&gt;
          &lt;td&gt;SEND_EXT_CSD&lt;/td&gt;
          &lt;td&gt;无参数；应答后 DAT 上再传输 512 字节 EXT_CSD&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD9&lt;/td&gt;
          &lt;td&gt;SEND_CSD&lt;/td&gt;
          &lt;td&gt;RCA[15:0]：指定要读 CSD 的设备&lt;/td&gt;
          &lt;td&gt;R2（CSD）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD10&lt;/td&gt;
          &lt;td&gt;SEND_CID&lt;/td&gt;
          &lt;td&gt;RCA[15:0]：指定要读 CID 的设备&lt;/td&gt;
          &lt;td&gt;R2（CID）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD12&lt;/td&gt;
          &lt;td&gt;STOP_TRANSMISSION&lt;/td&gt;
          &lt;td&gt;无参数，中止正在进行的多块读写&lt;/td&gt;
          &lt;td&gt;R1b&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD13&lt;/td&gt;
          &lt;td&gt;SEND_STATUS&lt;/td&gt;
          &lt;td&gt;RCA[15:0]：查询指定设备的状态&lt;/td&gt;
          &lt;td&gt;R1（Card Status）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD16&lt;/td&gt;
          &lt;td&gt;SET_BLOCKLEN&lt;/td&gt;
          &lt;td&gt;块长度（如 512）&lt;/td&gt;
          &lt;td&gt;R1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD17&lt;/td&gt;
          &lt;td&gt;READ_SINGLE_BLOCK&lt;/td&gt;
          &lt;td&gt;数据起始字节地址[31:0]（须块对齐）&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD18&lt;/td&gt;
          &lt;td&gt;READ_MULTIPLE_BLOCK&lt;/td&gt;
          &lt;td&gt;数据起始字节地址[31:0]&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD23&lt;/td&gt;
          &lt;td&gt;SET_BLOCK_COUNT&lt;/td&gt;
          &lt;td&gt;块数[31:0]（bit31 必须为 0），限定后续 CMD18/CMD25 传输的块数&lt;/td&gt;
          &lt;td&gt;R1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD24&lt;/td&gt;
          &lt;td&gt;WRITE_BLOCK&lt;/td&gt;
          &lt;td&gt;数据起始字节地址[31:0]&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD25&lt;/td&gt;
          &lt;td&gt;WRITE_MULTIPLE_BLOCK&lt;/td&gt;
          &lt;td&gt;数据起始字节地址[31:0]&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD38&lt;/td&gt;
          &lt;td&gt;ERASE&lt;/td&gt;
          &lt;td&gt;无参数（擦除范围由 CMD35/CMD36 的起始/结束地址设定）&lt;/td&gt;
          &lt;td&gt;R1b&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD55&lt;/td&gt;
          &lt;td&gt;APP_CMD&lt;/td&gt;
          &lt;td&gt;RCA[15:0]；执行成功后设备状态寄存器 APP_CMD 位置 1，下一条命令按 ACMD 解释&lt;/td&gt;
          &lt;td&gt;R1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CMD56&lt;/td&gt;
          &lt;td&gt;GEN_CMD&lt;/td&gt;
          &lt;td&gt;bit0：1 = 读、0 = 写；bit25:1 = 块偏移（块内传输，不经过地址映射）&lt;/td&gt;
          &lt;td&gt;R1 + 数据&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;几个需要展开的关键参数：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMD1 的 OCR 参数&lt;/strong&gt;：bit30 = HCS（Host Capacity Support，高容量支持，1 表示主机支持块寻址）；bit29:24 = 电压窗口（如 &lt;code&gt;110000&lt;/code&gt; 表示支持 2.7V ~ 3.6V）。设备在 R3 应答中返回自己的 OCR，其中 bit31 表示设备是否完成上电（busy 标志），初始化代码通常循环发 CMD1 直到该位置 1 且电压窗口匹配。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMD6 的 SWITCH 参数&lt;/strong&gt;（eMMC 5.1，Linux 内核 &lt;code&gt;mmc_switch()&lt;/code&gt; 即按此编码）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bit31      bit26  bit25    bit24  bit23         bit16  bit15        bit8  bit7  bit3  bit2      bit0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌──────────┬──────┬─────────┬──────┬─────────────────┬──────────────────┬───────────┬──────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  Reserved │      │ Access  │      │      Index      │      Value       │ Reserved  │   Cmd Set    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│ (全 0)    │      │ [25:24] │      │     [23:16]     │     [15:8]       │ (全 0)    │    [2:0]     │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└──────────┴──────┴─────────┴──────┴─────────────────┴──────────────────┴───────────┴──────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;位&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Access（访问模式）&lt;/td&gt;
          &lt;td&gt;bit25:24&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;00&lt;/code&gt; = Command Set（按 Cmd Set 切换命令集）；&lt;code&gt;01&lt;/code&gt; = Set Bits（按 Value 中为 1 的位置位）；&lt;code&gt;10&lt;/code&gt; = Clear Bits（按 Value 中为 1 的位清零）；&lt;code&gt;11&lt;/code&gt; = Write Byte（把 Value 写入指定字节）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Index&lt;/td&gt;
          &lt;td&gt;bit23:16&lt;/td&gt;
          &lt;td&gt;EXT_CSD 字节偏移（0 ~ 191 有效；192 ~ 255 非法，设备不改写并置 SWITCH_ERROR）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Value&lt;/td&gt;
          &lt;td&gt;bit15:8&lt;/td&gt;
          &lt;td&gt;要写入/设置的 8 位值&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cmd Set&lt;/td&gt;
          &lt;td&gt;bit2:0&lt;/td&gt;
          &lt;td&gt;命令集编号，默认 0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;例如切换 HS400 模式（写 EXT_CSD byte 197）就是：&lt;code&gt;arg = (0b11 &amp;lt;&amp;lt; 24) | (197 &amp;lt;&amp;lt; 16) | (value &amp;lt;&amp;lt; 8)&lt;/code&gt;，即 Write Byte 模式写偏移 197 的字节。CMD6 的应答是 R1b，写完后需等待忙结束，再用 CMD13 轮询确认 &lt;code&gt;SWITCH_ERROR&lt;/code&gt; 没有置位。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMD55 与 ACMD 机制&lt;/strong&gt;：eMMC 很多功能命令（如 CMD6 的扩展、CMD22 等）以 ACMD 形式出现。发送 CMD55 后，设备状态寄存器的 APP_CMD 位置 1，此时紧接着发的下一条命令就按 ACMD 解释，并且这条命令的索引可以大于 63（因为 ACMD 用 CMD6/CMD56 等通道复用）。ACMD 结束后 APP_CMD 位自动清零。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RCA（相对卡地址）&lt;/strong&gt;：CMD3 应答（R6）的 bit31:16 就是设备被分配的 RCA（1 ~ 65535 范围内的某个值，0 表示未分配/取消）。之后 CMD7/CMD9/CMD13 等命令都靠 RCA[15:0] 指定目标设备——eMMC 是单设备总线，但规范保留了多设备编址能力。&lt;/p&gt;
&lt;h2 id=&#34;8-crc7-校验&#34;&gt;8. CRC7 校验
&lt;/h2&gt;&lt;p&gt;命令与应答帧中的 CRC7 字段用于检测总线传输错误：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多项式&lt;/strong&gt;：x⁷ + x³ + 1（即 0x89），初始值为 0，MSB 先出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;覆盖范围&lt;/strong&gt;：命令帧覆盖&amp;quot;索引 + 参数&amp;quot;共 38 位；R2 长应答覆盖 120 位 CID/CSD 内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;校验失败&lt;/strong&gt;：设备认为命令无效并丢弃；主机侧则由控制器硬件校验应答，若失败会在状态寄存器置 &lt;code&gt;COM_CRC_ERROR&lt;/code&gt;（bit23）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要注意的是，这个 CRC7 只保护 CMD 线上的命令/应答帧，&lt;strong&gt;不保护 DAT 线上的数据&lt;/strong&gt;——数据块的完整性由数据 CRC16 单独保证（x16 + x12 + x5 + 1，即 0x1021）。&lt;/p&gt;
&lt;h2 id=&#34;9-参考&#34;&gt;9. 参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;JEDEC JESD84-B51（eMMC 5.1 规范），命令格式见 §6.10，响应格式与 Card Status 见 §6.12/§6.13&lt;/li&gt;
&lt;li&gt;Linux 内核：&lt;code&gt;include/linux/mmc/mmc.h&lt;/code&gt;（R1 状态位定义）、&lt;code&gt;drivers/mmc/core/mmc_ops.c&lt;/code&gt;（CMD6 参数编码 &lt;code&gt;mmc_switch()&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;SD/MMC 协议相关参考手册（如 GD32、NXP 系列控制器手册中的命令定义表）&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
