一、LTPI 是什么?
LTPI(Low-pin-count Transport Protocol Interface)可以理解为:
👉 一种“用很少引脚,承载多种协议数据的高速复用接口”
设计目标:
- 比 LPC 更高速
- 比 eSPI 更灵活
- 支持多协议复用
- 面向新一代 BMC(如 AST2700)
二、为什么需要 LTPI?
在服务器架构中,BMC 需要和 Host CPU 进行大量通信,例如:
- IPMI(KCS / BT)
- BIOS/UEFI 交互
- Debug Console(UART)
- 传感器数据
- GPIO / 控制信号
传统接口的问题
1. LPC(Low Pin Count)
- 带宽低
- 已逐渐淘汰
2. eSPI
- 带宽有限
- 扩展性一般
- 功能划分固定
👉结论:需要一种更现代的低引脚 + 高带宽 + 可扩展接口 → LTPI
三、LTPI 的核心设计思想
LTPI 本质做了三件事:
1️⃣ 串行化 + 高速化
- 使用高速 SerDes
- 少量引脚实现高带宽
👉 类似 PCIe 的物理思想
2️⃣ 多通道复用(核心)
一条物理链路承载多个逻辑通道(channel)
例如:
| 功能 | 对应 channel |
|---|---|
| IPMI | channel A |
| UART | channel B |
| I2C | channel C |
| GPIO | channel D |
3️⃣ 面向 BMC 场景设计
LTPI 天然支持:
- 管理流量
- 控制信号
- 多主机架构
- 优先级调度
四、LTPI 架构理解
可以抽象为:
物理层(SerDes) ↓ 链路层(封包 / 流控) ↓ 多通道复用(Channel) ↓ 上层协议(IPMI / UART / I2C / GPIO)五、LTPI 中 Channel 的本质
准确定义
👉Channel 是“逻辑传输通道(transport queue)”
特点:
- 用于数据隔离
- 支持优先级
- 支持调度
- 不强绑定协议
Channel0→ 控制流(高优先级) Channel1→ IPMI Channel2→ UART Channel3→ OEM数据👉甚至:一个 channel 里可以承载多个协议
六、LTPI 的核心机制:不只是复用,还有调度
LTPI 不只是简单“拼数据”,还包含:
✔ 调度(Scheduling)
- 高优先级 channel 优先发送
- 低优先级延后
✔ QoS 能力
- 控制流优先
- 数据流限速
类比理解
LTPI = 多车道 + 有红绿灯调度的高速公路
- Channel = 车道
- 调度器 = 红绿灯
- 高优先级 = 救护车通道
七、LTPI 在 AST2700 中的作用
在 AST2700 中:
👉 LTPI 是 BMC ↔ Host 的核心通信链路
典型用途
- IPMI over LTPI
- UART Console
- Host-BMC 控制通道
- 多主机管理
八、LTPI vs eSPI
eSPI 的 Channel 本质
| Channel | 功能 |
|---|---|
| Peripheral | 寄存器访问 |
| Virtual Wire | GPIO |
| OOB | 管理数据 |
| Flash | Flash访问 |
👉 特点:
Channel = 固定功能
LTPI 的 Channel 本质
👉 特点:
- 不绑定协议
- 可扩展
- 可调度
- 抽象层更高
本质差异总结
| 维度 | LTPI | eSPI |
|---|---|---|
| Channel 含义 | 传输资源 | 功能分区 |
| 是否绑定协议 | ❌ 否 | ✅ 是 |
| 扩展性 | ✅ 高 | ❌ 低 |
| 调度能力 | ✅ 强 | ⚠️ 有限 |
| 抽象层级 | 高(Transport) | 低(Functional) |
直观对比
eSPI
Channel0=Peripheral(固定) Channel1=Virtual Wire(固定) Channel2=OOB(固定) Channel3=Flash(固定)👉 类似“固定房间”
LTPI
Channel0=控制流 Channel1=IPMI Channel2=UART Channel3=OEM数据 Channel N=可扩展👉 类似“可自由分配空间”
九、从 OpenBMC 软件角度理解
eSPI 架构
- 每个 channel 对应一个 driver
- 强绑定 subsystem
LTPI 架构
更像:
LTPI Controller(Transport层) ↓ Channel(逻辑队列) ↓ Client(IPMI / UART / OEM)👉 类似:
- socket
- message bus
- virtio
十、完整数据流
无 LTPI:
BMC ↔ Host: eSPI → IPMI UART → Console I2C → Sensors有 LTPI:
一条 LTPI Link: Channel0→ IPMI Channel1→ UART Channel2→ I2C Channel3→ GPIO👉所有数据统一封包传输
十一、进阶学习
1️⃣ Device Tree
- ltpi 节点定义
- channel 配置方式
2️⃣ Driver
- channel 创建机制
- 数据收发路径
3️⃣ 数据封包格式
- header 是否包含 channel id
- framing 方式
4️⃣ 调度机制
- priority
- flow control
- credit 机制
5️⃣ 与 IPMI 的关系
- 是否独立 channel
- 如何映射 KCS / BT