系统串口数据记录导出为空

问题描述

Web下载系统串口数据,systemcom.tar解压后内容为NUL。
已知:
CPU串口使用UART0连接CPLD UART1, CPLD 将收到的数据透传给BMC UART3,需要修改哪些配置?

环境信息

  • 操作系统:Ubuntu 24.04

  • 软件版本:OpenUBMC2512LTS SP1

期望结果

Web下载系统串口数据,systemcom.tar解压后内容非空,为CPU串口数据。

答案内容由AI生成,仅供参考:
根据您描述的硬件连接(CPU串口UART0 → CPLD UART1 → BMC UART3)以及Web下载的 systemcom.tar 内容为空的问题,需要检查并修改以下配置,以确保系统串口数据记录功能正常工作。

1. 检查硬件信号通路

  • 确认 CPU 串口 UART0 输出的数据能正常到达 CPLD UART1,且CPLD正确透传给 BMC UART3
  • 可通过 BMC串口直接观察 UART3 的RX引脚是否有数据波动,或使用示波器验证信号完整性。

2. 配置 SysComId(UartDynamicConfig)

CSR配置中,找到 UartDynamicConfig 对象,设置 SysComId 属性,指示硬件上系统串口连接到了 BMC 的哪个 UART 口。
根据您的描述,系统数据最终输入到 BMC UART3,因此应将 SysComId 设置为 3(UART 口编号:0~15)。

# 示例:SysComId = 3 表示系统串口数据接在 BMC UART3 上
"UartDynamicConfig_0": {
    "SysComId": 3,
    "RawConfigData": ...  // 从CPLD获取的原始串口参数
}

3. 配置 SerialManagement 建立系统串口录音连接

SerialManagement 对象中,需要将 BMC UART3 配置为系统串口录音的接收端。
参考知识图谱中 SYS COM 的定义(Serial ID=17,DestinationId=0),可以创建一个从 系统串口源(CPU UART0)到 BMC UART3(DestinationId=3)的连接,并将 ConnectMode 设置为 1(单向录音连接)。

# 示例:将系统串口数据连接到 BMC UART3 进行录音
{
    "SourceId": 0,           // 系统串口源(CPU侧)
    "DestinationId": 3,      // BMC UART3
    "ConnectMode": 1,        // 单向连接(录音)
    "Visible": false         // 内部连接对外不可见
}

4. 启用串口监听开关(Serial Listen Switch

通过 Bmc.Kepler.Managers.UartData 接口,确保 Serial Listen Switch Enabled 属性为 true,否则数据不会被捕获到环形缓冲区。

# 通过总线接口设置(示例命令)
busctl set-property bmc.kepler.Managers /bmc/kepler/Managers/1/UartData bmc.kepler.Managers.UartData SerialListenSwitchEnabled b true

5. 验证导出类型参数

在系统内部,串口数据导出函数 ExportUartLogFunction 接受 Type 参数,建议使用 SYS COMALL 以导出系统通信日志数据。
若您在Web界面或Redfish调用中指定了其他类型(如 BMC COM),可能导致期望的数据未被收录。

6. 检查一键收集流程

如果 Web 界面 系统日志 → 系统串口数据记录功能 可以正常下载并包含内容,而“一键收集”结果为空(文档片段7),说明一键收集脚本可能在收集时机上未同步环形缓冲区数据。
可尝试在收集前 等待几秒 或通过 /opt/debug/busybox telnet localhost 进入 debug 模式后手动触发收集。

7. 其他辅助检查

  • 确认 SerialPortDataEnabledtrue(可通过Redfish查看 /redfish/v1/Managers/1/DiagnosticService)。
  • 确认环形缓冲区大小 SerialPortDataSize2097152(2MB),若该值异常则数据可能未正确分配。
  • 检查 BMC启动日志(app.log)中是否有 download failed, the sol is disabled 等错误,确保 SOL(Serial Over LAN)已使能。

如果以上配置均正确但内容依旧为空,则问题可能出在硬件链路(CPLD透传异常)或驱动侧未正确将 UART3 数据注入环形缓冲区,此时需要进一步排查 bmc_soc 组件日志或直接读取 /dev/ttyS3(BMC UART3)验证数据流。

一键收集中有内容吗

谢谢回复,一键收集里也是空的。

如果是用的默认社区的配置,我们之前也遇到过类似的问题,可以换一下bmc卡,不同批次的卡,用同一个包,有一些能收集,有一些不行,后来升级大版本之后,又全部都成功收集,怀疑是bmc卡更换需要sdk适配

感谢回复,升级大版本是升级到哪个版本,2603么。

可以尝试一下吧,或者换成之前能够成功收集的bmc卡,我们当时还是比较旧的版本2503升级成2509才能收集上来,只是有这么个怀疑方向 :joy: