OpenBmc开发1:openbmc简介
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 |
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简介相关推荐
- openbmc开发28:fru配置和测试
在openbmc开发23:添加fru信息到ipmi中说明了如何将fru信息添加到ipmi中,本文将讲述如何生成fru以及fru信息获取展示以及修改等. 1 yaml配置文件转换成cpp 在软件包下有一 ...
- openbmc开发-->aspeed-->slave-i2c[ast2400]
openbmc开发-->aspeed-->slave-i2c[ast2400] 前言 ast2400 内核修改启用i2c从机模拟eeprom 测试驱动 ast2400 i2c-aspeed ...
- 【OpenBMC 系列】1.OpenBMC 开发环境搭建
目标: 安装Linux 系统,推荐使用Ubuntu18+,作为开发环境. 安装Qemu 作为bmc运行的虚拟机. 受众:熟悉 Linux 和 BMC 的程序员 先决条件:当前的 Linux.Mac 或 ...
- Clojure开发OpenCV的简介
Clojure开发OpenCV的简介 Clojure开发OpenCV的简介 我们将在本教程中做什么 前言 安装Leiningen 安装localrepo Leiningen插件 将特定于Java的li ...
- 【物联网(IoT)开发】Arduino 简介
Arduino 的开源.开放.廉价.简单.跨平台等特点使其快速发展起来,成为学习微控制器的首选,成为物联网(IoT)开发的重要组成部分,通过Arduino我们可以从各种传感器感知世界,也可以控制各种执 ...
- STM32F4开发板硬件简介
参考:STM32F4开发板硬件平台简介 作者:SKY丶丿平才 发布时间: 2021-03-20 10:44:41 网址:https://blog.csdn.net/weixin_48264057/ar ...
- T2080 U-BOOT与OS内核移植 准备篇(一)——开发调试环境简介
T2080 U-BOOT与OS内核移植 准备篇(一)--开发调试环境简介 1.本项目选择的工具 2.几个常用工具简介 2.1 Trace32 2.2 Code Warrior 2.3 QorIQ Li ...
- 树莓派4b入门之开发RFID系统—简介、搭建MFRC522-SPI环境
树莓派4b入门之开发RFID系统-简介.搭建MFRC522-SPI环境 一.系统简介 二.模块连接 1.引脚定义 2.接口对应关系 三.搭建接口环境 1.开启SPI 2.模块功能设计 3.安装SPI ...
- 品高应用开发平台:简介
品高应用开发平台:简介 品高应用开发平台旨在提升公司的项目开发效率.积累公司的开发技术.统一公司的开发模式而提出的一个对开发.设计.运行时进行全面支撑的完整体系.我们推出该平台的目标是:每天为每位开发 ...
最新文章
- php mms,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...
- Ubuntu 14.04下java开发环境的搭建--2--Eclipse的安装
- 腾讯V265编码器:给用户以完备的265体验
- python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python
- python画猫和老鼠_观察者模式(猫与老鼠的故事!)
- react-native 异常处理 Execution failed for task ':app:mergeDebugResources'.
- vue 数组遍历方法forEach和map的原理解析和实际应用
- new Option() 创建一个option标签
- Android JNI 本地开发接口
- ANSI C、ISO C、Standard C、C89、C90、C99
- 华为销售用一封邮件撬走阿里云千万级客户罗振宇的《得到》
- python 白盒测试_白盒测试方法
- c语言sinx幂级数展开,求幂级数展开式的方法
- 【AI视野·今日CV 计算机视觉论文速览 第243期】Thu, 14 Apr 2022
- 利用JD-GUI寻找JAR内部依赖
- Java fx 变速播放音乐_QVE音频剪辑如何调整音频播放速度?音乐变速方法说明
- 【HTML粉色跳动爱心】效果展示+源代码
- 深入理解python--线程、进程与协程(1)
- Suzy找到实习了吗 | 字符串结束啦 今天学习kmp 题还没做!!!记得回来补!!!
- 应届生求职网,职位信息函数爬取!!!稳得一比
热门文章
- 基于网易企业邮箱的JavaMail配置
- 三角形加几笔能变成什么_一个圆添上几笔能出来什么形状?例如:表,太阳,向日葵.-圆形加几笔得什么事物-数学-伍靖都同学...
- 产品大神有张小龙,为什么运营少有大神?
- sketch生成android布局,让 Sketch 小部件布局如此轻松:Compo
- 为什么选择体育·棒球运动
- 整理金正昆商务礼仪讲座
- 应用为本 浅谈电脑硬盘日常保养与维护技巧
- React Native 集成极光推送 jpush-react-native
- 如何设置您的隐私在Facebook上防止身份盗窃
- Java EE 及Jess安装