# MCU 接口测试报告 (Interface Test Report)

> 生成时间: 2026-07-XX
> 测试工具链: `mcu_interface_test.c` (逐步演进为 .so 共享库)
> 设备: 192.168.0.66:5555 (RTD1861 Android 14)
> 串口: /dev/ttyS7 @ 460800 8N1
> MCU 固件: E112C069XZA0120015 (SW: 0302_20260512)

---

## 已测试接口 (22 条)

### Public A2M (7 条通过)

| Cmd | 接口名 | 发送帧 (HEX) | ACK | M2A 回复 | 结果 |
|-----|--------|-------------|-----|---------|------|
| 0x81 | REQ_INIT_INFO | `FF AA 00 09 02 06 01 81 6C` | ✅ | SYS_STATUS, LINE_DETECT, KEY_PWR | ✅ PASS |
| 0x82 | REQ_MUTE | `FF AA 00 0A 03 06 01 82 00 69` | ✅ | BP_PWR_ABNORMAL, VERSION_STRING | ✅ PASS |
| 0x83 | TIME_INFO | `FF AA 00 10 04 06 01 83 00...61` | ✅ | VERSION_STRING, TIME_INFO, TFT_DUTY, Notify风暴 | ✅ PASS |
| 0x84 | TFT_DUTY_CYCLE | `FF AA 00 0A 05 06 01 84 00 65` | ✅ | — | ✅ PASS |
| 0x86 | REQ_TYPE_INFO(MCU_VERSION) | `FF AA 00 0A 07 06 01 86 02 5F` | ✅ | — | ✅ PASS |
| 0x86 | REQ_TYPE_INFO(LINE_DETECT) | `FF AA 00 0A 08 06 01 86 01 5F` | ✅ | — | ✅ PASS |
| 0x88 | SET_TFT_ON_OFF | `FF AA 00 0A 0A 06 01 88 00 5C` | ✅ | — | ✅ PASS |

### Update 域 (通过升级测试验证)

| Cmd | 接口名 | 结果 | 备注 |
|-----|--------|------|------|
| 0x80 | UPDATE_A2M_UPDATE_REQ | ✅ PASS | ACK 收到 |
| 0x81 | UPDATE_A2M_UPDATE_BEGIN | ✅ PASS | ACK 收到 |
| 0x82 | UPDATE_A2M_UPDATE_DATA | ❌ FAIL | **Chunk 2 开始超时，MCU 死锁** |
| 0x01 | UPDATE_M2A_UPDATE_ACK | ✅ 收到 | MCU 回复 |
| 0x02 | UPDATE_M2A_UPDATE_LEN | ✅ 收到 | pack_len=1024 |
| 0x03 | UPDATE_M2A_UPDATE_IND_AQUIRE | ✅ 收到 | index=0,1,2 |

### 通过 tty_raw 单步获取的 M2A 数据 (8 条)

| Cmd | 接口名 | 数据 |
|-----|--------|------|
| 0x01 | PUBLIC_M2A_LINE_DETECT | 线检测状态 payload |
| 0x02 | PUBLIC_M2A_MCU_VERSION | **E112C069XZA0120015** |
| 0x03 | PUBLIC_M2A_TIME_INFO | MCU 回传时间数据 |
| 0x05 | PUBLIC_M2A_SYS_STATUS | 首次上电状态 |
| 0x06 | PUBLIC_M2A_KEY_PWR_STATUS | 按键电源状态 |
| 0x07 | PUBLIC_M2A_BP_PWR_ABNORMAL | 备用电源异常状态 |
| 0x08 | PUBLIC_M2A_TFT_DUTY_CYCLE | TFT 背光 0x00 |
| 0x13 | PUBLIC_M2A_VERSION_STRING | **0302_20260512** |

---

## 关键发现

### 1. 三步握手

**必须完整执行 Setup→SetupAck→ACK 三步。** 缺最后一步则 MCU 不处理任何 DATA 帧。

### 2. MCU 推送模式

发 A2M 命令后 MCU 会在 2 秒窗口内重复推送多次：
```
REQ_INIT_INFO(0x81) → SYS_STATUS×4, LINE_DETECT×4, KEY_PWR×4
```

### 3. Notify 帧 (FT=0x07)

MCU 会自发推送 Notify 帧 (电压/数据广播)，ARM **不需要**回复 ACK。

### 4. 升级 UPDATE_DATA 死锁

前 2 块 (2KB) 传输成功，第 3 块开始 MCU 不回复 ACK，重试 4 次后失败。

---

## 待测试接口 (29 条)

### Public A2M 未测 (21 条)

```
0x8A SET_AMP_PWR_ON_OFF     0x8B SET_KEY_BACKLIGHT
0x8C SET_SUB_MUTE_ON_OFF    0x8D KEY_PWR_STATUS
0x8E SET_REVERSE            0x8F SET_SPEED_RATIO
0x91 REQ_TRIP_CLEAR         0x92 SET_SWITCH_STATUS
0x93 BT_ERROR_CODE          0x94 GPS_INFO
0x95 SET_TOT_MILES          0x95 SET_WORK_MODE
0x96 SET_FUEL_CAL           0x97 SET_VEHICLE_CFG
0x98 REQ_VEHICLE_CFG        0x99 ARM_SW_VERSION
0x9A ARM_HW_VERSION         0x9B AUTO_CLEAR_METER_TYPE
0xA0 RESPONSE_FACTORY_CMD   0xA1 RESPONSE_TEST_CMD
```

### Radio A2M 未测 (5 条)

```
0x83 SET_BAND       0x84 SET_FREQ
0x85 FREQ_RANGE     0x86 SET_ANT_PWR
0x87 SET_REG_MUTE
```

### 依赖 CAN (18 条) — 无 CAN 环境跳过

车速、电压、电池、里程、油耗、RDS 等车辆信号相关接口。

**当前状态**: MCU 被升级测试死锁，需要 JLink 恢复后继续测试。


序号                     │ 函数名                   │ 说明                     │
  │ 1                        │ `mcureqinit_info`        │ 请求初始化信息           │
  │ 2                        │ `mcureqmute`             │ 请求静音                 │
  │ 3                        │ `mcusendtime_info`       │ 发送时间同步             │
  │ 4                        │ `mcusettftdutycycle`     │ 设置背光                 │
  │ 5                        │ `mcureqtype_info`        │ 请求类型信息             │
  │ 6                        │ `mcusettftonoff`         │ TFT 开关                 │
  │ 7                        │ `mcusetamp_pwr`          │ 功放电源                 │
  │ 8                        │ `mcusetkey_backlight`    │ 按键背光                 │
  │ 9                        │ `mcusetsub_mute`         │ 副麦静音                 │
  │ 10                       │ `mcusendkeypwrstatu…     │ 按键电源状态             │
  │ 11                       │ `mcusetreverse`          │ 倒车状态                 │
  │ 12                       │ `mcusetspeed_ratio`      │ 车速系数                 │
  │ 13                       │ `mcureqtrip_clear`       │ 小计清零                 │
  │ 14                       │ `mcusetswitch_status`    │ 开关状态                 │
  │ 15                       │ `mcusendbt_error`        │ 蓝牙错误码               │
  │ 16                       │ `mcusettot_miles`        │ 总里程                   │
  │ 17                       │ `mcusetwork_mode`        │ 工作模式                 │
  │ 18                       │ `mcusetfuel_cal`         │ 燃油校准                 │
  │ 19                       │ `mcusetvehicle_cfg`      │ 车辆配置                 │
  │ 20                       │ `mcureqvehicle_cfg`      │ 请求车辆配置             │
  │ 21                       │ `mcusendarmswversio…     │ ARM 软件版本             │
  │ 22                       │ `mcusendarmhwversio…     │ ARM 硬件版本             │
  │ 23                       │ `mcuautoclearmetert…     │ 清零类型                 │
  │ 24                       │ `mcuradioset_band`       │ Radio 设置频段           │
  │ 25                       │ `mcuradioset_freq`       │ Radio 设置频率           │
  │ 26                       │ `mcuradiosetfreqran…     │ Radio 频率范围           │
  │ 27                       │ `mcuradiosetantpwr`      │ Radio 天线电源           │
  │ 28                       │ `mcuradiosetregmute`     │ Radio 收音机静音         │
  │ 29                       │ `mcusendgps_info`        │ GPS 信息（无硬件模拟）   │
  │ 30                       │ `mcuupdatereq`           │ Update 请求升级          │
  │ 31                       │ `mcuupdatebegin`         │ Update 开始升级          │
  │ 32                       │ `mcuupdateend`           │ Update 结束升级          │
  