1、OpenBMC简介

在说OpenBMC之前,先说一下BMC(Baseboard Manager Controller,简称BMC),BMC应用了IPMI架构的智能性,是嵌入在计算机(通常是服务器)主板上的专用的微控制器。它是负责管理系统和管理软件与服务器平台硬件之间的一个接口。

根据IPMI规范,BMC需要满足如下条件:

  • 具有IMPI命令;
  • 提供BMC访问接口(一般是网口);
  • 提供标准化的看门狗定时器接口和看门狗内部事件产生功能;
  • 提供可被其他主机组件使用的事件接收功能;
  • 提供可通过相应的IPMI必选命令访问的SDR(传感器数据记录)、SEL(系统事件记录)和FRU(现场可替换单元)等功能;

简而言之,BMC就是服务器主板上一块独立的小板卡,有自己独立的处理器,和控制系统,通过IPMB、LPC(low-pin-count-interface)、SMBus等接口与主机硬件或者主机系统进行通信,并通过网络、串行/Moderm、PCI等接口传向本地主机/远程服务器提供查询和控制等功能。

OpenBMC是BMC 的Linux发行版,旨在跨越异构系统,包括企业,高性能计算(HPC),电信和云规模数据中心等系统的管理。

2014年,四名Facebook程序员在一次Facebook 黑客马拉松活动上创建了一个名为OpenBMC的原型开源BMC固件。

2015年,IBM与Rackspace合作开发了一个开源BMC固件堆栈,也称为OpenBMC。这些项目仅在名称和概念上相似。

2018年3月,OpenBMC成为Linux Foundation项目并融合在IBM堆栈上。OpenBMC项目的创始组织是Microsoft、Intel、IBM、Google和Facebook。并且成立了一个技术指导委员会,由五家创始公司的代表来指导该项目。IBM的Brad Bishop当选为技术指导委员会主席。

2019年4月,ArmHoldings也加入了OpenBMC技术指导委员会,成为了第六名成员。

OpenBmc使用Yocto Project作为底层构建和发行的框架,并结合OpenEmbedded,systemd以及D-BusOpen等技术来轻松定制管理平台。同时,OpenBMC包含一个用于与固件堆栈进行交互的Web应用程序,并添加了Redfish对硬件管理的支持。它支持常见的主机状态查看和控制、主机固件更新等功能。

2、IPMI简介

IPMI的全称是Intelligent Platform Management Interface,智能平台管理接口。IPMI规定了很多的东西,BMC是其中最重要的一个部分,此外还有一些”模块“控制器通过IPMB与BMC相连,这些”模块“控制器一般控制特定的设备,有些支持热插拔。可以说目前IPMI是BMC的核心,BMC的远程控制基本都是通过ipmi协议实现。

IPMB全称Intelligent Platform Management Bus,是一种基于I2C的串行总线,它用于BMC与模块(主板上的子卡)控制器的通信,其上传递的是IPMI命令。

IMPI接口基于命令/响应机制,可通过网络将机箱、传感器、固件、存储、应用等主机组件的信息进行分类传递,通过软件ID对BIOS、系统管理软件、远程终端等传感器等进行分类管理,在网络、串行/Moderm接口、IPMB(I2C)、KCS、SMIC、SMBus等不同接口上传递都使用统一的格式。

IPMI1.0于1998年9月16日发布,制定了基本规范。

IPMI1.5于2001年2月21日发布,允许IPMI系统通过串口,BMC专用的带外网口,或者与主机共享的带内网口(NC-SI)与远程管理系统通讯。

IPMI2.0于2004年2月12日发布,增加了SOL(serial over LAN)、群组管理系统、身份认证(RAKP+、SHA-1等)、基于OpenSSL/RCMP+的安全增强网络接口、固件防火墙和VLAN支持等。其中,SOL支持将BIOS输出和操作系统终端重定向到与BMC相连的串口,进而通过IPMI与远程系统管理软件连接。同时,IPMI2.0兼容系统通常还提供KVM over IP(基于IP的远程键盘鼠标显示器连接)、远程桌面和页面服务器等功能,尽管这些功能并不属于IPMI协议。

IPMI2.0修订版1.1于2013年10月1日发布,修订了勘误表,说明和附录,并增加了对IPv6寻址的支持。

更多信息请参考英特尔IPMI技术资源网站、常见IPMI软件开源项目对比。

3 Yocto项目简介

Yocto项目是Linux基金会协作开源项目,其目标是生产工具和流程,使创建Linux发行版的嵌入式和物联网软件独立于嵌入式硬件的底层架构。该项目由Linux基金会于2010年宣布,并于2011年3月与22个组织(包括OpenEmbedded)合作启动。2018年10月,Arm Holdings与Intel合作,通过Yocto项目共享嵌入式系统的代码。

Yocto项目的目的和目标是尝试改善减轻ARM,MIPS,PowerPC和x86 / x86-64体系结构的定制Linux系统的开发人员的工作。其中的关键部分是OpenEmbedded构建系统,它使开发人员能够创建特定于其环境的自己的Linux发行版。Yocto Project和OpenEmbedded Project共享OpenEmbedded构建系统主要部分的维护权:构建引擎BitBake和核心元数据OpenEmbedded-Core。Yocto项目提供了一个称为Poky包含OpenEmbedded构建系统以及按层级分层系统排列的大量配方,可以用作定制嵌入式操作系统的全功能模板。

Yocto项目框架下还有其他几个子项目,包括CROPS,伪交叉预链接,Eclipse集成(已从2.7 版删除),火柴盒应用程序套件以及许多其它子项目。该项目的主要目标之一是这些工具之间的通用性和交互性。

该项目提供了从“微小”到功能齐全的图像的大小不同的系统,这些系统镜像可由最终用户配置和自定义。该项目鼓励与上游项目进行交互,并为OpenEmbedded-Core和BitBake以及包括Linux内核在内的众多上游项目做出了巨大贡献。生成的镜像通常在嵌入式Linux的系统中使用,这些系统是常用的系统或没有像台式机Linux系统相关的常规屏幕/输入设备的系统。

除了构建Linux系统外,还可以生成用于交叉编译的工具链和针对其自己的发行版量身定制的软件开发工具包(SDK),也称为应用程序开发者工具包(ADT)。该项目尝试与软件和供应商无关。因此,例如,可以选择要使用的包管理器格式(deb,rpm或ipk)。在构建中,存在用于各种构建时完整性/回归测试的选项,还具有在QEMU下引导和测试某些映像以验证构建的选项。构建流程如下图所示。

4、BMC的CPU

OpenBmc硬件平台最多的是Aspeed,其次是Xilinx 、NXP等。 aspeed是bmc管理平台的核心(请参考aspeed官网),类似internal和AMD的cpu,但是ASPEED是ARM架构,目前最新的soc型号是AST2600,它采用ARM V7架构的双核ARM Cotex A7。目前,已有国产芯片(龙芯)移植了OpenBMC,未来也会有更多的国产BMC芯片(RISC-V架构)。

AST2600 AST2500 AST2400 AST230
Embedded CPU Dual-core ARM Cortex A7
 Embedded ARM Cortex M3
800MHz ARM11 400MHz ARM926EJ 16KB/16KB Cache 400MHz ARM926EJ 16KB/16KB Cache
SDRAM Memory DDR4 SDRAM with speed grade higher than DDR4-1600Mbps
 Up to 2G Byte
 ECC option
800Mbps DDR3/1600Mbps DDR4 SDRAM
 16-bit data bus width
 Up to 1G Byte
 ECC option
 800Mbps DDR3/DDR2 SDRAM
 16-bit data bus width
 Up to 512 MB
 ECC option
800Mbps DDR3/DDR2 SDRAM
16-bit data bus width
Up to 512 MB
ECC option
Flash Memory  SPI flash memory SPI flash memory  NOR/NAND/SPI flash memory NOR/NAND/SPI flash memory
Video-Over-IP Video Redirection up to 1920x1200
 YUV444/YUV420 Video Compression
 24 bits video compression quality
Video Redirection up to 1920x1200
 YUV444/YUV420 Video Compression
 24 bits video compression quality
Video Redirection up to 1920x1200
 YUV444/YUV420 Video compression
 24 bits video compression quality
Video Redirection up to 1920x1200
YUV444/YUV420 Video compression
24 bits video compression quality
USB-Over-IP USB 2.0 virtual hub controller with 5 devices supported
 USB 1.1 HID device controller
USB 2.0 virtual hub controller with 5 devices supported
 USB 1.1 HID device controller
 USB 2.0 virtual hub controller with 5 any types devices supported
 USB 1.1 HID device controller
USB 2.0 virtual hub controller with 5 any types devices supported
USB 1.1 HID device controller
BMC  BMC controller with IPMI 2.0/1.5 compliant
 Remote Presence (iKVM)
 PCIe host capability
 eSPI/LPC
 MCTP over PCIe
 I2C/I3C/SMBus (Total 16 sets)
 Virtual UART (1 set)
 UART (13 sets and 1 set for FW debug)
 GPIO (244 sets)
 SGPIO (80 bits)
 PWM (16 sets)
 Secure boot engine
 Fan tachometer (16 sets)
 PECI 4.0
 USB1.1/2.0 Host
 SD/SDIO (2 ports)
 Embedded SRAM
 ADC (16 channels) Port 80h snoop
 Watchdog (3 sets)
 Timer (8 sets)
yes yes yes
VGA PCIe VGA/2D Controller
 1920x1200@60Hz 32bpp
PCIe VGA/2D Controller
 1920x1200@60Hz 32bpp
PCIe VGA/2D Controller
 1920x1200@60Hz 32bpp
PCIe VGA/2D controller
1920x1200@60Hz 32bpp

VGA

Drivers

RHEL
 SLES
 Solaris
 Ubuntu
 FreeBSD
 Fedora
 Windows Server 2012 R2 (WHQL logo'ed)
 Windows Server 2016 (WHQL logo'ed)
 Windows Server 2019 (WHQL logo'ed)
RHEL 
 SLES 
 Solaris
 Ubuntu
 FreeBSD
 Fedora
 Windows Server 2008 R2 (WHQL logo'ed)
 Windows Server 2012 R2 (WHQL logo'ed)
Redhat RHEL 3/4/5/6
 SUSE SLES 9/10/11
 Solaris x86
 Windows Server 2008 R2 (WHQL logo'ed)
 Windows Server 2008 x86/x64 (WHQL logo'ed)
 Windows Server 2003 x86/x64 (WHQL logo'ed)
 Windows 2000 series (WHQL logo'ed)
 Windows XP x86/x64

Redhat RHEL 3/4/5/6
SUSE SLES 9/10/11
Solaris x86
Windows Server 2008 R2 (WHQL logo'ed)
Windows Server 2008 x86/x64 (WHQL logo'ed)
Windows Server 2003 x86/x64 (WHQL logo'ed)
Windows 2000 series (WHQL logo'ed)
Windows XP x86/x64

LAN Quad 10/100/1000M bps MAC Dual 10/100/1000M bps MAC  Dual 10/100/1000M bps MAC Dual 10/100/1000M bps MAC
Technology 624-pin 21mmx21mm TFBGA package 456-pin 19mmx19mm TFBGA package 408-pin 19mmx19mm LFBGA package 408-pin 19mmx19mm TFBGA package
Pin Compatibility AST2620 AST2510, AST2520, AST2530 AST2300, AST1300, AST1050, AST1400, AST1250 AST1300, AST1050

目前,OPenBmc项目中上用的最多的芯片是AST2500系列,AST240和AST2300系列相对使用较少,并且AST2400系列已经停产。AST2600是ASPEED的第七代服务器管理处理器,也是世界上第一个采用28nm先进工艺技术的BMC SoC。AST2600采用双核ARM Cortex A7处理器,可以优化性能和计算能力。也大大降低了功耗。另外,AST2600支持Secre Boot模式和ARM Cortex A7 TrustZone,可以为客户提供出色的信息安全保护。由于AST2600系列由于上市不久,目前还在适配中。AST2600体积稍有增大,但相较于上一代增加了接近170GPIO,预示着新一代的AST可以实现更丰富的功能。

5 OpenBMC软件架构

BMC硬件本身就是一个计算机系统。与常用的计算机系统相比,BMC中的硬件资源非常有限。BMC硬件中CPU运行速度较慢,闪存(flash)一般在32 MB,RAM一般少于256 MB。因此,OpenBMC被设计为完整的Linux发行版,可以灵活地定制以支持不同的BMC SoC或板卡。

OpenBMC映像包括一个引导程序(u-boot),一个Linux内核,开源软件包和特定于主板的软件包。

引导加载程序和Linux内核:包括BMC SoC的各种硬件驱动程序,包括i2c驱动程序,USB驱动程序,LPC驱动、PWM驱动程序和SPI驱动等等。

开源软件包:一般包括常用应用程序,例如BusyBox,i2ctools,lm传感器,OpenSSH和Python等。

用户板的软件包:包括用于特定板的初始化脚本和工具。例如,一个用于从EEPROM转储资产信息的工具和一个风扇控制器守护程序,用于根据环境读数控制风扇速度。

在“ Wedge”内部的BMC上运行的“ OpenBMC”软件包如下图所示。

OpenBMC中,共有三组层:

1、通用层:包括可用于不同板卡和BMC SoC的软件包。如meta-openembedded、meta-security等。

2、SoC层:包括特定于BMC SoC的软件包,例如Aspeed对AST2300 / AST2400 SoC 基础包,引导加载程序和内核都在SoC层中定义。如meta-aspeed、meta-raspberrypi、meta-xilinx等。

3、板层:包括用于不同板的封装。应用于特定Wedge的硬件配置的初始化脚本和工具,如meta-facebook、meta-ibm等。

6 OpenBmc源码

openbmc的git仓库:openbmc仓库(https://github.com/openbmc/openbmc),源码文件如下:

matster分支下的layer所对应的soc如下表所示。

BSP目录 单板型号 SOC型号 ARM开发版
meta-evb/meta-evb-enclustra/meta-evb-zx3-pm3 evb-zx3-pm3 Xilinx Zynq-7000 arm Cortex-A9
meta-evb/meta-evb-aspeed/meta-evb-ast2500 evb-ast2500 ASPEED AST2500 arm1176jz-s
meta-evb/meta-evb-nuvoton/meta-evb-npcm750 evb-npcm750 Nuvoton NPCM7XX arm7a-novfp
meta-evb/meta-evb-raspberrypi RaspberryPi RaspberryPi arm1176jzf-s
meta-facebook/meta-tiogapass tiogapass ASPEED AST2500 arm1176jz-s

metahxt/metastardragon4800-rep2

stardragon4800-rep2 ASPEED AST2500 arm1176jz-s
meta-ibm/meta-fsp2 ibm-z fsp2 PPC476
meta-ibm/meta-palmetto palmetto ASPEED AST2400 arm926ejs
meta-ibm/meta-romulus romulus

ASPEED AST2500

arm1176jz-s
meta-ibm/meta-witherspoon witherspoon ASPEED AST2500 arm1176jz-s
meta-ingrasys/meta-zaius zaius ASPEED AST2500 arm1176jz-s
meta-inspur/meta-on5263m5 on5263m5 ASPEED AST2500 arm1176jz-s
meta-intel/meta-s2600wf s2600wf ASPEED AST2500 arm1176jz-s
meta-inventec/meta-lanyang lanyang ASPEED AST2500 arm1176jz-s
meta-mellanox/meta-msn msn

ASPEED AST2500

arm1176jz-s
meta-phosphor qemuarm arm versatile 926ejs arm926ejs
meta-portwell/meta-neptune neptune ASPEED AST2500 arm1176jz-s
meta-qualcomm/meta-centriq2400-re centriq2400-rep ASPEED AST2500 arm1176jz-s
meta-quanta/meta-f0b fob ASPEED AST2500 arm1176jz-s
meta-quanta/meta-gsj gsj Nuvoton NPCM7XX arm7a-novfp
meta-quanta/meta-runbmc-nuvoton runbmc-nuvoton Nuvoton NPCM7XX arm7a-novfp
meta-quanta/meta-q71l quanta-q71l ASPEED AST2400 arm926ejs
poky/meta-poky qemux86 i586 x86

:不同的分支下的BSP对应不同的硬件平台,有效BSP必须同时包含:local.conf.sample和bblayers.conf.sample两个文件。

OpenBmc开发1:openbmc简介相关推荐

  1. openbmc开发28:fru配置和测试

    在openbmc开发23:添加fru信息到ipmi中说明了如何将fru信息添加到ipmi中,本文将讲述如何生成fru以及fru信息获取展示以及修改等. 1 yaml配置文件转换成cpp 在软件包下有一 ...

  2. openbmc开发-->aspeed-->slave-i2c[ast2400]

    openbmc开发-->aspeed-->slave-i2c[ast2400] 前言 ast2400 内核修改启用i2c从机模拟eeprom 测试驱动 ast2400 i2c-aspeed ...

  3. 【OpenBMC 系列】1.OpenBMC 开发环境搭建

    目标: 安装Linux 系统,推荐使用Ubuntu18+,作为开发环境. 安装Qemu 作为bmc运行的虚拟机. 受众:熟悉 Linux 和 BMC 的程序员 先决条件:当前的 Linux.Mac 或 ...

  4. Clojure开发OpenCV的简介

    Clojure开发OpenCV的简介 Clojure开发OpenCV的简介 我们将在本教程中做什么 前言 安装Leiningen 安装localrepo Leiningen插件 将特定于Java的li ...

  5. 【物联网(IoT)开发】Arduino 简介

    Arduino 的开源.开放.廉价.简单.跨平台等特点使其快速发展起来,成为学习微控制器的首选,成为物联网(IoT)开发的重要组成部分,通过Arduino我们可以从各种传感器感知世界,也可以控制各种执 ...

  6. STM32F4开发板硬件简介

    参考:STM32F4开发板硬件平台简介 作者:SKY丶丿平才 发布时间: 2021-03-20 10:44:41 网址:https://blog.csdn.net/weixin_48264057/ar ...

  7. T2080 U-BOOT与OS内核移植 准备篇(一)——开发调试环境简介

    T2080 U-BOOT与OS内核移植 准备篇(一)--开发调试环境简介 1.本项目选择的工具 2.几个常用工具简介 2.1 Trace32 2.2 Code Warrior 2.3 QorIQ Li ...

  8. 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境

    树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...

  9. 品高应用开发平台:简介

    品高应用开发平台:简介 品高应用开发平台旨在提升公司的项目开发效率.积累公司的开发技术.统一公司的开发模式而提出的一个对开发.设计.运行时进行全面支撑的完整体系.我们推出该平台的目标是:每天为每位开发 ...

最新文章

  1. php mms,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...
  2. Ubuntu 14.04下java开发环境的搭建--2--Eclipse的安装
  3. 腾讯V265编码器:给用户以完备的265体验
  4. python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python
  5. python画猫和老鼠_观察者模式(猫与老鼠的故事!)
  6. react-native 异常处理 Execution failed for task ':app:mergeDebugResources'.
  7. vue 数组遍历方法forEach和map的原理解析和实际应用
  8. new Option() 创建一个option标签
  9. Android JNI 本地开发接口
  10. ANSI C、ISO C、Standard C、C89、C90、C99
  11. 华为销售用一封邮件撬走阿里云千万级客户罗振宇的《得到》
  12. python 白盒测试_白盒测试方法
  13. c语言sinx幂级数展开,求幂级数展开式的方法
  14. 【AI视野·今日CV 计算机视觉论文速览 第243期】Thu, 14 Apr 2022
  15. 利用JD-GUI寻找JAR内部依赖
  16. Java fx 变速播放音乐_QVE音频剪辑如何调整音频播放速度?音乐变速方法说明
  17. 【HTML粉色跳动爱心】效果展示+源代码
  18. 深入理解python--线程、进程与协程(1)
  19. Suzy找到实习了吗 | 字符串结束啦 今天学习kmp 题还没做!!!记得回来补!!!
  20. 应届生求职网,职位信息函数爬取!!!稳得一比

热门文章

  1. 基于网易企业邮箱的JavaMail配置
  2. 三角形加几笔能变成什么_一个圆添上几笔能出来什么形状?例如:表,太阳,向日葵.-圆形加几笔得什么事物-数学-伍靖都同学...
  3. 产品大神有张小龙,为什么运营少有大神?
  4. sketch生成android布局,让 Sketch 小部件布局如此轻松:Compo
  5. 为什么选择体育·棒球运动
  6. 整理金正昆商务礼仪讲座
  7. 应用为本 浅谈电脑硬盘日常保养与维护技巧
  8. React Native 集成极光推送 jpush-react-native
  9. 如何设置您的隐私在Facebook上防止身份盗窃
  10. Java EE 及Jess安装