[{"data":1,"prerenderedAt":325},["ShallowReactive",2],{"content-doc-\u002Fzh\u002Fblogs\u002F20260903UBMC-baiao":3,"surround-\u002Fzh\u002Fblogs\u002F20260903UBMC-baiao":323},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"category":11,"author":12,"body":16,"_type":315,"_id":316,"_source":317,"_file":318,"_stem":319,"_extension":320,"coverImage":150,"plainText":321,"authorNames":322},"\u002Fzh\u002Fblogs\u002F20260903UBMC-baiao","blogs",false,"","从故障诊断到 RAS Offload：百敖 openUBMC 的 Intel 平台适配实践","本文围绕上述链路，介绍百敖在 Intel 平台上的适配工作，以及这些能力如何进入 openUBMC 26.06 商业发行版。","2026\u002F09\u002F04","essentials",[13],{"name":14,"description":15},"汪涛","南京百敖软件有限公司技术总监，openUBMC技术委员会委员，在BMC、BIOS等固件领域从事研发15年，多次承担国家科技支撑计划，拥有丰富的服务器固件领域研发经验。",{"type":17,"children":18,"toc":299},"root",[19,27,33,38,42,46,52,57,62,67,72,75,81,96,101,106,111,123,128,133,138,143,153,156,162,166,170,178,183,186,192,197,202,207,215,220,223,229,234,239,244,247,253,258,263,266,272],{"type":20,"tag":21,"props":22,"children":24},"element","h2",{"id":23},"概要",[25],{"type":26,"value":23},"text",{"type":20,"tag":28,"props":29,"children":30},"p",{},[31],{"type":26,"value":32},"openUBMC 26.06 版本新增了对 Intel 等 x86 平台的基础支持。在此基础上，百敖面向 Intel 服务器平台完善了商业发行版，新增故障诊断、远程调试、负载与功耗管理、RAS 错误处理等能力，并延续对国产平台的兼容支持。",{"type":20,"tag":28,"props":34,"children":35},{},[36],{"type":26,"value":37},"这些能力横跨 BMC、CPU\u002FPCH、BIOS 和操作系统。CATERR、IERR 等严重故障发生后，BMC 通过 PECI 接口获取 故障现场的CPU寄存器；CPU\u002FPCH 的远程调试依赖 BMC的JTAG接口；利用率采集和功率封顶分别由 CUPS 与 Node Manager 承担；系统的可纠正错误由之前的BIOS SMM处理 Offload 到BMC处理。",{"type":20,"tag":28,"props":39,"children":40},{},[41],{"type":26,"value":9},{"type":20,"tag":43,"props":44,"children":45},"hr",{},[],{"type":20,"tag":21,"props":47,"children":49},{"id":48},"_01-intel-平台适配的难点在于跨固件链路",[50],{"type":26,"value":51},"01 Intel 平台适配的难点，在于跨固件链路",{"type":20,"tag":28,"props":53,"children":54},{},[55],{"type":26,"value":56},"ACD、ASD、CUPS\u002FNode Manager 和 RAS Offload 依赖不同的硬件接口与处理机制。PECI 负责获取 CPU 状态，JTAG 用于 CPU\u002FPCH 调试，功耗管理需要平台侧数据和控制接口，RAS Offload 还涉及 BIOS、BMC 与操作系统之间的错误处理协同。",{"type":20,"tag":28,"props":58,"children":59},{},[60],{"type":26,"value":61},"因此，适配验证必须覆盖完整链路：故障能否触发采集，数据能否读回并解析，功耗设置是否生效，错误处理能否按预期在 BMC 与操作系统之间流转。任何一环缺失，相关能力都无法正常工作。",{"type":20,"tag":28,"props":63,"children":64},{},[65],{"type":26,"value":66},"在Birch Stream 平台适配中，一些客户相关功能的设计方案并不完全跟Intel CRB服务器设计保持一致，例如ASD功能。Intel通常采用BMC的原生JTAG接口连接CPU，ASD源码中默认也走原生JTAG方式，但部分厂商改用普通GPIO连接CPU，需要BMC通过GPIO模拟JTAG的方式调试CPU，导致ASD源码不能直接使用，无法验证此功能。",{"type":20,"tag":28,"props":68,"children":69},{},[70],{"type":26,"value":71},"在深入阅读ASD源码后，在源码中添加了通过GPIO模拟JTAG的软件方案，并适配相关的GPIO为JTAG功能。但在实际调试中发现GPIO模拟的JTAG频率与时序远低于硬件JTAG，且频率不稳定,导致JTAG返回的数据总是有部分异常。通过不断地优化软件JTAG频率，最终通过这种方式能正常调试CPU，达到了公板上ASD功能同样的效果。",{"type":20,"tag":43,"props":73,"children":74},{},[],{"type":20,"tag":21,"props":76,"children":78},{"id":77},"_02-从自动留存现场到远程调试acd-与-asd",[79],{"type":26,"value":80},"02 从自动留存现场到远程调试：ACD 与 ASD",{"type":20,"tag":82,"props":83,"children":84},"ul",{},[85],{"type":20,"tag":86,"props":87,"children":88},"li",{},[89],{"type":20,"tag":90,"props":91,"children":93},"h3",{"id":92},"acd严重故障发生后先保留-cpu-现场",[94],{"type":26,"value":95},"ACD：严重故障发生后，先保留 CPU 现场",{"type":20,"tag":28,"props":97,"children":98},{},[99],{"type":26,"value":100},"服务器发生 CATERR、IERR 等严重故障时，操作系统可能已无法提供完整的故障现场。百敖在 BMC 侧接入 ACD（自主崩溃转储）能力，由 BMC 通过 PECI 获取 CPU 寄存器信息。",{"type":20,"tag":28,"props":102,"children":103},{},[104],{"type":26,"value":105},"整条链路从故障信号开始，CPU 触发CATERR\u002FIERR等严重故障后，BMC 经GPIO中断监测到故障发生，从而触发ACD故障采集流程。ACD启动后，先根据当前的CPU型号加载并解析对应的数据采集JSON配方文件，得到需要采集的寄存器及对应的PECI读取方式清单，接着按照配方通过 PECI接口逐段MCA、Uncore等寄存器数据，生成包含各寄存器结果的JSON 文件，至此ACD数据采集完成。最后由通过BMC中集成的Intel BAFI工具自动解析该JSON结果文件，并将解析出的故障原因写回原JSON结果文件中。从而整个故障信息采集、故障诊断流程完成，不再依赖操作系统保留现场。",{"type":20,"tag":28,"props":107,"children":108},{},[109],{"type":26,"value":110},"在openUBMC上集成ACD和BAFI等功能时，由于openUBMC与OpenBMC等代码平台上组件的管理形式不同，其各组件是以Conan包的形式进行管理，因此需要先将这些原本OpenBMC格式的功能包及其相关的依赖包添加为新的组件，并进行Conan化改造，整个改造过程中，功能包的源码没有改变，主要是修改了组件的构建方式。相关组件构建通过后，还需要适配对应的设备驱动，先根据功能包中原有的接口要求在新BMC芯片上适配对应的PECI内核驱动和硬件抽象层驱动代码。驱动编译通过后，再将上述的功能包和依赖包组件添加到manifest中，从而集成到openUBMC中。最后将构建出来的整包在QEMU上模拟运行，模拟验证无异常后即可烧录到机器上进行全面验证。",{"type":20,"tag":82,"props":112,"children":113},{},[114],{"type":20,"tag":86,"props":115,"children":116},{},[117],{"type":20,"tag":90,"props":118,"children":120},{"id":119},"asd通过-bmc-进入-cpupch-调试",[121],{"type":26,"value":122},"ASD：通过 BMC 进入 CPU\u002FPCH 调试",{"type":20,"tag":28,"props":124,"children":125},{},[126],{"type":26,"value":127},"Intel 平台的运行管理分为两条链路。CUPS 负责采集 CPU 核心、内存和 IIO 总线利用率，为 BMC 提供平台负载数据；Node Manager 负责设置整机、CPU、内存和 PCIe 的功耗阈值，执行功率封顶。",{"type":20,"tag":28,"props":129,"children":130},{},[131],{"type":26,"value":132},"在openUBMC上集成CUPS和Node Manager功能时， 其适配方案与上述的ACD一致，都是依赖PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再将这些新增的组件添加到manifest中完成功能集成。",{"type":20,"tag":28,"props":134,"children":135},{},[136],{"type":26,"value":137},"ASD 提供故障后的结构化信息，当需要进一步定位 CPU 或 PCH 问题时，ASD 通过 BMC 内置的 JTAG 接口建立远程调试通道，减少对现场 XDP 硬件调试工具的依赖。",{"type":20,"tag":28,"props":139,"children":140},{},[141],{"type":26,"value":142},"在openUBMC上集成ASD功能时，其适配方案与上述的ACD基本一致，只是其依赖JTAG驱动而非PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再适配对应的JTAG内核驱动和硬件抽象层驱动代码，最后将新增的组件添加到manifest中完成功能集成。",{"type":20,"tag":28,"props":144,"children":145},{},[146],{"type":20,"tag":147,"props":148,"children":152},"img",{"alt":149,"src":150,"title":151},"alt text","\u002Fcategory\u002Fblog\u002F20260904UBMC-baiao\u002F1.png","ASD 远程调试界面示意",[],{"type":20,"tag":43,"props":154,"children":155},{},[],{"type":20,"tag":21,"props":157,"children":159},{"id":158},"_03-利用率采集与功率封顶cups-与-node-manager",[160],{"type":26,"value":161},"03 利用率采集与功率封顶：CUPS 与 Node Manager",{"type":20,"tag":28,"props":163,"children":164},{},[165],{"type":26,"value":127},{"type":20,"tag":28,"props":167,"children":168},{},[169],{"type":26,"value":132},{"type":20,"tag":28,"props":171,"children":172},{},[173],{"type":20,"tag":147,"props":174,"children":177},{"alt":149,"src":175,"title":176},"\u002Fcategory\u002Fblog\u002F20260904UBMC-baiao\u002F2.png","CUPS 服务运行日志示意",[],{"type":20,"tag":28,"props":179,"children":180},{},[181],{"type":26,"value":182},"CUPS 输出利用率数据，Node Manager 下发功耗约束。百敖将两项能力接入 openUBMC 后，运维侧既可以观察负载分布，也可以针对不同功耗域设置上限。",{"type":20,"tag":43,"props":184,"children":185},{},[],{"type":20,"tag":21,"props":187,"children":189},{"id":188},"_04-将可纠正错误处理从-bios-smm-转移到-bmc",[190],{"type":26,"value":191},"04 将可纠正错误处理从 BIOS SMM 转移到 BMC",{"type":20,"tag":28,"props":193,"children":194},{},[195],{"type":26,"value":196},"传统路径下，硬件错误触发 SMI，CPU 随后进入 BIOS SMM 环境完成寄存器读取和错误处理。错误处理会占用业务 CPU。",{"type":20,"tag":28,"props":198,"children":199},{},[200],{"type":26,"value":201},"在搭载 Granite Rapids 处理器的 Birch Stream 平台上，百敖接入 RAS Offload：可纠正错误触发 BMC 硬件中断，由 BMC 读取相关寄存器并完成处理；只有需要操作系统介入时，才通过 SCI 发出通知。",{"type":20,"tag":28,"props":203,"children":204},{},[205],{"type":26,"value":206},"在openUBMC上集成RAS Offload 功能时，其适配方案与上述的ACD方案一致，依赖的也是PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再将这些新增的组件添加到manifest中完成功能集成。",{"type":20,"tag":28,"props":208,"children":209},{},[210],{"type":20,"tag":147,"props":211,"children":214},{"alt":149,"src":212,"title":213},"\u002Fcategory\u002Fblog\u002F20260904UBMC-baiao\u002F3.png","传统 RAS 路径与 BMC RAS Offload 路径对比",[],{"type":20,"tag":28,"props":216,"children":217},{},[218],{"type":26,"value":219},"当前方案覆盖内存、PCIe、UPI、CXL 和 SPD I3C 等可纠正错误。处理位置从业务 CPU 转移到 BMC 后，可以减少 SMI\u002FSMM 路径对业务运行的干扰。",{"type":20,"tag":43,"props":221,"children":222},{},[],{"type":20,"tag":21,"props":224,"children":226},{"id":225},"_05-产品化集成进入百敖-openubmc-2606-商业发行版",[227],{"type":26,"value":228},"05 产品化集成：进入百敖 openUBMC 26.06 商业发行版",{"type":20,"tag":28,"props":230,"children":231},{},[232],{"type":26,"value":233},"完成 Intel 平台适配后，百敖将 ACD、ASD、CUPS、Node Manager 和 RAS Offload 集成到基于社区 26.06 版本构建的商业发行版中，并叠加平台适配、缺陷修复和增强模块。",{"type":20,"tag":28,"props":235,"children":236},{},[237],{"type":26,"value":238},"商业发行版还包括浏览器原生 Web SOL、固件升级和 AI 运维助手。Web SOL 支持复制粘贴、历史日志保存、窗口滚动和字体调整；固件更新包括 BIOS OOB 更新、微码 OOB 更新和 SMM Runtime 更新；AI 运维助手用于查询硬件状态和调度已授权的运维操作。",{"type":20,"tag":28,"props":240,"children":241},{},[242],{"type":26,"value":243},"百敖使用 iTestSmart V1.0.42 对版本进行自动化验证，开放测试用例共计 1803 条，综合通过率为 94%，并对用户指南、IPMI\u002FRedfish 接口文档和告警处理手册进行标准化整理。",{"type":20,"tag":43,"props":245,"children":246},{},[],{"type":20,"tag":21,"props":248,"children":250},{"id":249},"总结从平台适配到商业交付",[251],{"type":26,"value":252},"总结：从平台适配到商业交付",{"type":20,"tag":28,"props":254,"children":255},{},[256],{"type":26,"value":257},"从 ACD、ASD 到 CUPS、Node Manager 和 RAS Offload，Intel 平台适配贯穿 CPU\u002FPCH、BMC、BIOS 与操作系统。百敖将这些链路接入 openUBMC，并在国产平台兼容能力之外，完成了 openUBMC 26.06 在 Intel x86 服务器平台上的落地。",{"type":20,"tag":28,"props":259,"children":260},{},[261],{"type":26,"value":262},"在商业发行版中，上述 Intel 平台能力与 Web SOL、BIOS\u002F微码\u002FSMM Runtime 更新、1803 条开放测试用例、配套文档和技术支持一并交付。",{"type":20,"tag":43,"props":264,"children":265},{},[],{"type":20,"tag":21,"props":267,"children":269},{"id":268},"欢迎关注openubmc",[270],{"type":26,"value":271},"欢迎关注openUBMC",{"type":20,"tag":82,"props":273,"children":274},{},[275,288],{"type":20,"tag":86,"props":276,"children":277},{},[278,280],{"type":26,"value":279},"社区官网：",{"type":20,"tag":281,"props":282,"children":286},"a",{"href":283,"rel":284},"https:\u002F\u002Fwww.openubmc.cn",[285],"nofollow",[287],{"type":26,"value":283},{"type":20,"tag":86,"props":289,"children":290},{},[291,293],{"type":26,"value":292},"代码仓地址：",{"type":20,"tag":281,"props":294,"children":297},{"href":295,"rel":296},"https:\u002F\u002Fgitcode.com\u002FopenUBMC",[285],[298],{"type":26,"value":295},{"title":7,"searchDepth":300,"depth":300,"links":301},4,[302,304,305,310,311,312,313,314],{"id":23,"depth":303,"text":23},2,{"id":48,"depth":303,"text":51},{"id":77,"depth":303,"text":80,"children":306},[307,309],{"id":92,"depth":308,"text":95},3,{"id":119,"depth":308,"text":122},{"id":158,"depth":303,"text":161},{"id":188,"depth":303,"text":191},{"id":225,"depth":303,"text":228},{"id":249,"depth":303,"text":252},{"id":268,"depth":303,"text":271},"markdown","content:zh:blogs:20260903UBMC-baiao.md","content","zh\u002Fblogs\u002F20260903UBMC-baiao.md","zh\u002Fblogs\u002F20260903UBMC-baiao","md","概要 openUBMC 26.06 版本新增了对 Intel 等 x86 平台的基础支持。在此基础上，百敖面向 Intel 服务器平台完善了商业发行版，新增故障诊断、远程调试、负载与功耗管理、RAS 错误处理等能力，并延续对国产平台的兼容支持。 这些能力横跨 BMC、CPU\u002FPCH、BIOS 和操作系统。CATERR、IERR 等严重故障发生后，BMC 通过 PECI 接口获取 故障现场的CPU寄存器；CPU\u002FPCH 的远程调试依赖 BMC的JTAG接口；利用率采集和功率封顶分别由 CUPS 与 Node Manager 承担；系统的可纠正错误由之前的BIOS SMM处理 Offload 到BMC处理。 本文围绕上述链路，介绍百敖在 Intel 平台上的适配工作，以及这些能力如何进入 openUBMC 26.06 商业发行版。  01 Intel 平台适配的难点，在于跨固件链路 ACD、ASD、CUPS\u002FNode Manager 和 RAS Offload 依赖不同的硬件接口与处理机制。PECI 负责获取 CPU 状态，JTAG 用于 CPU\u002FPCH 调试，功耗管理需要平台侧数据和控制接口，RAS Offload 还涉及 BIOS、BMC 与操作系统之间的错误处理协同。 因此，适配验证必须覆盖完整链路：故障能否触发采集，数据能否读回并解析，功耗设置是否生效，错误处理能否按预期在 BMC 与操作系统之间流转。任何一环缺失，相关能力都无法正常工作。 在Birch Stream 平台适配中，一些客户相关功能的设计方案并不完全跟Intel CRB服务器设计保持一致，例如ASD功能。Intel通常采用BMC的原生JTAG接口连接CPU，ASD源码中默认也走原生JTAG方式，但部分厂商改用普通GPIO连接CPU，需要BMC通过GPIO模拟JTAG的方式调试CPU，导致ASD源码不能直接使用，无法验证此功能。 在深入阅读ASD源码后，在源码中添加了通过GPIO模拟JTAG的软件方案，并适配相关的GPIO为JTAG功能。但在实际调试中发现GPIO模拟的JTAG频率与时序远低于硬件JTAG，且频率不稳定,导致JTAG返回的数据总是有部分异常。通过不断地优化软件JTAG频率，最终通过这种方式能正常调试CPU，达到了公板上ASD功能同样的效果。  02 从自动留存现场到远程调试：ACD 与 ASD ACD：严重故障发生后，先保留 CPU 现场 服务器发生 CATERR、IERR 等严重故障时，操作系统可能已无法提供完整的故障现场。百敖在 BMC 侧接入 ACD（自主崩溃转储）能力，由 BMC 通过 PECI 获取 CPU 寄存器信息。 整条链路从故障信号开始，CPU 触发CATERR\u002FIERR等严重故障后，BMC 经GPIO中断监测到故障发生，从而触发ACD故障采集流程。ACD启动后，先根据当前的CPU型号加载并解析对应的数据采集JSON配方文件，得到需要采集的寄存器及对应的PECI读取方式清单，接着按照配方通过 PECI接口逐段MCA、Uncore等寄存器数据，生成包含各寄存器结果的JSON 文件，至此ACD数据采集完成。最后由通过BMC中集成的Intel BAFI工具自动解析该JSON结果文件，并将解析出的故障原因写回原JSON结果文件中。从而整个故障信息采集、故障诊断流程完成，不再依赖操作系统保留现场。 在openUBMC上集成ACD和BAFI等功能时，由于openUBMC与OpenBMC等代码平台上组件的管理形式不同，其各组件是以Conan包的形式进行管理，因此需要先将这些原本OpenBMC格式的功能包及其相关的依赖包添加为新的组件，并进行Conan化改造，整个改造过程中，功能包的源码没有改变，主要是修改了组件的构建方式。相关组件构建通过后，还需要适配对应的设备驱动，先根据功能包中原有的接口要求在新BMC芯片上适配对应的PECI内核驱动和硬件抽象层驱动代码。驱动编译通过后，再将上述的功能包和依赖包组件添加到manifest中，从而集成到openUBMC中。最后将构建出来的整包在QEMU上模拟运行，模拟验证无异常后即可烧录到机器上进行全面验证。 ASD：通过 BMC 进入 CPU\u002FPCH 调试 Intel 平台的运行管理分为两条链路。CUPS 负责采集 CPU 核心、内存和 IIO 总线利用率，为 BMC 提供平台负载数据；Node Manager 负责设置整机、CPU、内存和 PCIe 的功耗阈值，执行功率封顶。 在openUBMC上集成CUPS和Node Manager功能时， 其适配方案与上述的ACD一致，都是依赖PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再将这些新增的组件添加到manifest中完成功能集成。 ASD 提供故障后的结构化信息，当需要进一步定位 CPU 或 PCH 问题时，ASD 通过 BMC 内置的 JTAG 接口建立远程调试通道，减少对现场 XDP 硬件调试工具的依赖。 在openUBMC上集成ASD功能时，其适配方案与上述的ACD基本一致，只是其依赖JTAG驱动而非PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再适配对应的JTAG内核驱动和硬件抽象层驱动代码，最后将新增的组件添加到manifest中完成功能集成。   03 利用率采集与功率封顶：CUPS 与 Node Manager Intel 平台的运行管理分为两条链路。CUPS 负责采集 CPU 核心、内存和 IIO 总线利用率，为 BMC 提供平台负载数据；Node Manager 负责设置整机、CPU、内存和 PCIe 的功耗阈值，执行功率封顶。 在openUBMC上集成CUPS和Node Manager功能时， 其适配方案与上述的ACD一致，都是依赖PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再将这些新增的组件添加到manifest中完成功能集成。  CUPS 输出利用率数据，Node Manager 下发功耗约束。百敖将两项能力接入 openUBMC 后，运维侧既可以观察负载分布，也可以针对不同功耗域设置上限。  04 将可纠正错误处理从 BIOS SMM 转移到 BMC 传统路径下，硬件错误触发 SMI，CPU 随后进入 BIOS SMM 环境完成寄存器读取和错误处理。错误处理会占用业务 CPU。 在搭载 Granite Rapids 处理器的 Birch Stream 平台上，百敖接入 RAS Offload：可纠正错误触发 BMC 硬件中断，由 BMC 读取相关寄存器并完成处理；只有需要操作系统介入时，才通过 SCI 发出通知。 在openUBMC上集成RAS Offload 功能时，其适配方案与上述的ACD方案一致，依赖的也是PECI驱动，先将功能包和对应的依赖包进行Conan化改造，构建成功后，再将这些新增的组件添加到manifest中完成功能集成。  当前方案覆盖内存、PCIe、UPI、CXL 和 SPD I3C 等可纠正错误。处理位置从业务 CPU 转移到 BMC 后，可以减少 SMI\u002FSMM 路径对业务运行的干扰。  05 产品化集成：进入百敖 openUBMC 26.06 商业发行版 完成 Intel 平台适配后，百敖将 ACD、ASD、CUPS、Node Manager 和 RAS Offload 集成到基于社区 26.06 版本构建的商业发行版中，并叠加平台适配、缺陷修复和增强模块。 商业发行版还包括浏览器原生 Web SOL、固件升级和 AI 运维助手。Web SOL 支持复制粘贴、历史日志保存、窗口滚动和字体调整；固件更新包括 BIOS OOB 更新、微码 OOB 更新和 SMM Runtime 更新；AI 运维助手用于查询硬件状态和调度已授权的运维操作。 百敖使用 iTestSmart V1.0.42 对版本进行自动化验证，开放测试用例共计 1803 条，综合通过率为 94%，并对用户指南、IPMI\u002FRedfish 接口文档和告警处理手册进行标准化整理。  总结：从平台适配到商业交付 从 ACD、ASD 到 CUPS、Node Manager 和 RAS Offload，Intel 平台适配贯穿 CPU\u002FPCH、BMC、BIOS 与操作系统。百敖将这些链路接入 openUBMC，并在国产平台兼容能力之外，完成了 openUBMC 26.06 在 Intel x86 服务器平台上的落地。 在商业发行版中，上述 Intel 平台能力与 Web SOL、BIOS\u002F微码\u002FSMM Runtime 更新、1803 条开放测试用例、配套文档和技术支持一并交付。  欢迎关注openUBMC 社区官网： https:\u002F\u002Fwww.openubmc.cn 代码仓地址： https:\u002F\u002Fgitcode.com\u002FopenUBMC",[14],[324,324],null,1788515333179]