服务器基板管理控制器固件开发:从硬件接口到系统管理
嵌入式Linux开发工程师、BIOS/BMC固件工程师、服务器系统工程师
· 精通C语言编程,熟悉数据结构与操作系统概念。
· 熟悉Linux操作系统及Shell编程。
· 了解嵌入式系统基本概念(如UART、I2C、SPI、Flash)。
· 具备基本的硬件知识(看懂原理图、数据手册)。
完成本培训后,学员将能够:
1. 系统掌握 BMC的硬件架构、核心接口规范与工作原理。
2. 深入理解 开源BMC框架(OpenBMC)的软件架构、启动流程与开发模式。
3. 熟练进行 BMC底层驱动开发、传感器监控、IPMI命令实现与Web/Redfish API开发。
4. 掌握 BMC固件的构建、集成、调试与安全加固方法。
5. 具备 独立解决BMC开发中常见问题和进行功能定制开发的能力。
1. BMC基础与行业标准
o 角色与功能:BMC在服务器中的角色,带外管理、健康监控、远程控制、日志告警。
o 核心标准解析:
§ IPMI 2.0规范深度解读:KCS、BT接口,SEL、FRU、SDR、传感器数据模型。
§ Redfish RESTful API:现代管理接口标准,与IPMI的关系与演进。
§ DMTF标准族:PLDM、MCTP、SMBIOS。
2. BMC硬件平台详解
o 核心SoC:常用方案介绍(如ASPEED AST系列、Nuvoton NPCM系列)。
o 关键硬件接口与总线:
§ LPC/eSPI:与主机(Host)通信的主通道。
§ I2C/SMBus/PMBus:连接CPLD、温度/电压传感器、电源管理芯片的生命线。
§ GPIO:控制电源序列、复位信号、LED指示灯。
§ PECI:读取CPU温度与功耗。
§ PWM/TACH:风扇转速控制与监控。
1. OpenBMC架构深度解析
o 核心组件:Linux内核、U-Boot、systemd、phosphor-xxx软件栈。
o Yocto Project构建系统:理解BitBake配方、层、镜像定制。
o D - Bus与phosphor-dbus-interfaces:BMC内部进程间通信的基石。
o IPMI与Redfish服务实现:phosphor-ipmi-hostd, phosphor-ipmi-net, bmcweb。
2. 开发环境搭建与工作流
o 搭建OpenBMC开发环境(基于QEMU或真实硬件)。
o 源代码获取、配置、编译与烧写。
o 使用bitbake命令定制镜像、添加自定义软件包。
1. 内核驱动与设备树
o 为定制硬件编写或修改设备树。
o 常用驱动模型解析:I2C驱动、GPIO驱动、硬件监控驱动。
2. 用户空间硬件访问与抽象
o phosphor-hwmon:传感器监控框架,如何添加新的I2C传感器。
o phosphor-pid-control:风扇控制算法与配置。
o phosphor-power:电源序列控制(上电、下电、复位)。
o 实体管理:phosphor-inventory-manager管理FRU信息。
1. IPMI命令实现与扩展
o IPMI消息流:从KCS/BT接口到phosphor-ipmi-hostd的处理流程。
o 如何添加一个自定义的OEM IPMI命令。
o IPMB桥接与多节点管理。
2. 现代管理接口开发:Redfish与REST API
o bmcweb架构:基于Crow的REST框架。
o 理解Redfish数据模型与Schema。
o 实战:为自定义硬件(如一块特定的PCIe卡)添加Redfish管理接口。
3. Web界面与本地人机界面
o OpenBMC WebUI框架与定制化。
o LCD/VKM本地界面的开发。
1. 固件安全
o 安全启动流程。
o 用户认证、会话管理与最小权限原则。
o 固件更新安全与回滚机制。
2. 调试、测试与日志
o 常用调试工具:busctl、ipmitool、redfishtool、curl。
o 系统日志管理:phosphor-logging与rsyslog。
o 单元测试与集成测试框架。
3. 实战案例研究
o 案例一:添加一个新型I2C温度传感器
从设备树、驱动、hwmon配置到Redfish/WebUI展示全流程。
o 案例二:实现一个自定义的电源控制策略
通过D - Bus服务与phosphor-power交互。
o 案例三:集成一个第三方管理芯片
通过PLDM over MCTP协议进行通信。