BMC基本概念介紹:
BMC:基板管理控制器 (Baseboard Management Controller)
BMC(Baseboard Management Controller,基板管理控制器)支持行業標準的 IPMI 規範。該規範描述了已經內置到主板上的管理功能。這些功能包括:本地和遠程診斷、控制檯支持、配置管理、硬件管理和故障排除。
BMC 提供下列功能:
與 IPMI 1.0 的兼容性
用於風扇轉速監視的轉速計輸入
用於風扇轉速控制的脈衝寬度調節器輸出
用於前面板按鈕和開關的按鈕輸入
與服務器控制檯端口進行多路傳輸的一個串行端口
遠程訪問和 ICMB(Intelligent Chassis Management Bus,智能機箱管理總線)支持
三個 I2C 主端口和備用端口(其中一個端口用於 智能機箱管理總線 )
LPC(Low Pin Count,低針計數)總線提供對三種 KCS(Keyboard Controller Style,鍵盤控制器方式)和 BT(One-Block Transfer,單塊傳輸)接口的訪問
32 位 ARM7 處理器
160 針 LQFP(Low Profile Flat Pack,薄形扁平封裝)
NC-SI介紹
實現原理:
https://blog.csdn.net/fivedoumi/article/details/50073025
基本概念介紹:
什麼是共享網口方式?
這裏要簡單地提到NC-SI(Network Controller – Sideband Interface)技術,即網絡控制器邊帶接口技術。這一技術是用來實現BMC芯片和以太網控制器之間信息傳遞的,它使得BMC芯片能夠像使用獨立管理網口那樣使用主板上的網絡接口。以下是共享訪問模式的實現結構圖:
簡單理解:
BMC其實是一個單片機,它有自己獨立的IO設備,而獨立網口就是其中之一。將BMC芯片和網絡控制器互聯,通過NC-SI技術使得BMC芯片能夠使用網絡控制器上的接口。
爲何要使用共享網口訪問管理控制器?
1、減少物料成本:共享訪問模式能夠爲單機節省一根網線;
2、減少人力成本:如果業務網只需要接一根網線,共享方案可以減少一半的佈線人力支出;
3、減少交換機投入:獨立網口會多佔用一個交換機端口,增加交換機採購數量,使用共享模式減少了這部分的支出和額外的交換機運維成本;
Openbmc的u-boot和openbmc開發相關:
openbmc/u-boot
https://github.com/openbmc/u-boot
openbmc/openbmc
https://github.com/openbmc/openbmc
OpenBMC cheatsheet
This document is intended to provide a set of recipes for common OpenBMC customisation tasks, without having to know the full yocto build process.
Using a local kernel build
The kernel recipe is in:
meta-phosphor/common/recipes-kernel/linux/linux-obmc_X.Y.bb
To use a local git tree, change the SRC_URI
to a git:// URL without a hostname. For example:
SRC_URI = "git:///home/jk/devel/linux;protocol=git;branch=${KBRANCH}"
The SRCREV
variable can be used to set an explicit git commit. The default (${AUTOREV}
) will use the latest commit in KBRANCH
.
Building a specific machine configuration
If the system you want to build contains different machine configurations:
meta-<layer>/meta-<system>/conf/machine/machineA.conf
meta-<layer>/meta-<system>/conf/machine/machineB.conf
You can specify the machine configuration you want to build by setting the MACHINE environment variable.
$ cd openbmc
$ TEMPLATECONF=meta-<layer>/meta-<system>/conf . openbmc-env
$ export MACHINE="machineB"
$ bitbake obmc-phosphor-image
Building the OpenBMC SDK
Looking for a way to compile your programs for 'ARM' but you happen to be running on a 'PPC' or 'x86' system? You can build the sdk receive a fakeroot environment.
$ bitbake -c populate_sdk obmc-phosphor-image
$ ./tmp/deploy/sdk/openbmc-phosphor-glibc-x86_64-obmc-phosphor-image-armv5e-toolchain-2.1.sh
Follow the prompts. After it has been installed the default to setup your env will be similar to this command
. /opt/openbmc-phosphor/2.1/environment-setup-armv5e-openbmc-linux-gnueabi
Rebuilds & Reconfiguration
You can reconfigure your build by removing the build/conf dir:
rm -rf build/conf
and running openbmc-env
again (possibly with TEMPLATECONF
set).