如果你尚未理解该工具在你目标机器环境中的行为,请勿使用此工具。
此工具会操作你机器的底层硬件和固件接口。特别是,探测行为意味着如果目标设备并非我们所期望的设备,则后果不确定。
使用此工具可能导致目标机器不稳定、崩溃或严重故障。
ASPEED BMC 有几种隐式的操作模式:
为支持模式1和2,BMC 在其多个从接口上暴露了功能,允许主机访问 BMC 并在其物理地址空间中执行任意操作。
这些重要接口挂接在 PCIe 和 LPC 总线上,因为在一个给定的平台设计中,两者可能都没有连接到主机 CPU。
模式3也通常被使用,但对于 AST2400 和 AST2500,硬件在冷启动时配置为模式1和2。因此,BMC 固件开发人员有责任确保所有接口在需要维护 BMC 静态数据和运行时环境的机密性、完整性和可用性时得到安全保护。
PCIe VGA P2A:一个 PCIe MMIO 接口,通过 64kiB 滑动窗口提供任意 AHB 访问
iLPC2AHB:提供任意 AHB 访问的 SuperIO 逻辑设备
调试 UART:一个硬件提供的 UART 调试 shell,具有任意 AHB 访问能力
X-DMA:任意 M-Bus 访问
PCIe BMC 设备:一组固定的 PCIe MMIO 接口,通过 4kiB 窗口提供受限的 AHB 访问
LPC2AHB:BMC 控制的 LPC FW 周期到 AHB 的映射
目前支持使用 P2A、iLPC2AHB、LPC2AHB 和调试 UART 接口
探测所有接口在任何可用接口上的可用性
主机到 BMC 的带内控制台
主机从运行的 BMC 中刷新或转储固件
读写 BMC RAM
也支持 Linux /dev/mem 接口,用于在 BMC 本身上执行
该工具可编译为多种架构,至少以下架构已测试通过:
构建只需执行 make,交叉编译通过在 make 环境中设置 CROSS_COMPILE 进行,例如:
$ make CROSS_COMPILE=powerpc64le-linux-gnu-
$ ./doit
Not enough arguments
Usage:
./doit probe [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit ilpc read ADDRESS
./doit ilpc write ADDRESS VALUE
./doit p2a vga read ADDRESS
./doit p2a vga write ADDRESS VALUE
./doit debug read ADDRESS INTERFACE [IP PORT USERNAME PASSWORD]
./doit debug write ADDRESS VALUE INTERFACE [IP PORT USERNAME PASSWORD]
./doit devmem read ADDRESS
./doit devmem write ADDRESS VALUE
./doit console HOST_UART BMC_UART BAUD USER PASSWORD
./doit read firmware
./doit read ram
./doit write firmware
./doit replace ram MATCH REPLACE
./doit reset TYPE [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc read ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc erase ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc write ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
$ ./doit probe --require confidentiality digi,portserver-ts-16 <IP> <PORT> <USER> <PASSWORD>
Connecting to Digi Portserver TS 16 at <IP>:23
Logging into Digi Portserver TS
Configuring binary mode on port 4
Resetting port 4
Connecting to BMC console at <IP>:2104
Entering debug mode
Initialised Debug UART AHB interface
Performing interface discovery via Debug UART
Exiting debug mode
Have SuperIO: Yes
iLPC2AHB Bridge: Read-only
Have VGA PCIe device: Yes
Have MMIO on VGA device: Yes
P2A write filter state:
0x00000000-0x0fffffff (Firmware): Read-write
0x10000000-0x1fffffff (SoC IO): Read-write
0x20000000-0x3fffffff (Flashes): Read-write
0x40000000-0x5fffffff (Reserved): Read-write
0x60000000-0x7fffffff (LPC Host): Read-write
0x80000000-0xffffffff (DRAM): Read-write
Have X-DMA on VGA device: Yes
Have BMC PCIe device: No
X-DMA is unconstrained: No
Have debug UART: Yes
Debug UART enabled on: UART5
$ echo $?
1
$