openUBMC是一个算力设备开源管理软件,该软件采用模块化架构设计,为开发者提供灵活高效的开发体验。
openUBMC的核心特性包括:
组件化: openUBMC采用
Conan
包管理技术,将系统功能拆分为多个独立组件。每个组件可单独开发、测试和发布。这种设计具有扩展灵活和定制简介的优势,允许开发者修改现有组件功能、新增完整功能组件、以及按需组合功能组件。全集成开发环境: openUBMC提供包含标准化命令行工具集、自动化代码生成系统和全流程测试框架的完整开发工具链。采用机制与策略分离的模型驱动开发架构,通过业务建模实现接口代码自动生成。支持组件灵活发布与引用,并提供从硬件适配、功能开发、验证到系统集成的全生命周期开发支持,显著提升开发效率并确保系统质量。
通过openUBMC,开发者可以快速构建和发布自己的产品,这是一个为创新和效率而生的平台。下面将详细介绍openUBMC的这两个核心特性。
特性一:组件化
openUBMC通过组件化的方式实现一个个相对独立且能够自我迭代的功能,再由这一个个独立的组件合并成一个庞大的系统。这种方式支持各组件独立设计、编码、构建、验证、发布,可以让系统内部的功能交互更清晰,同时能更好地支持定制化与裁剪,以满足不同客户与伙伴的诉求。
openUBMC采用统一的公共机制架构,通过抽象共性功能建立标准化开发框架,使开发者能够专注于业务逻辑实现。该平台提供以下核心公共机制:
基于
MDS
的模型驱动开发框架:实现从组件建模到代码生成的自动化流程,开发者只需定义组件模型即可自动生成接口代码和配置文件,显著减少重复性工作。具体的MDS定义方式参考《MDS》。创新的硬件抽象层设计:通过
CSR
和PSR
文件实现硬件自描述,建立标准化的硬件访问接口,有效解耦软硬件依赖关系。具体的CSR和PSR定义方式参考《硬件自描述文件(CSR)》。统一的错误管理引擎:采用集中式错误注册和处理机制,各组件只需动态将错误信息注册到错误引擎,后续由错误引擎框架接管各组件的错误处理流程。错误引擎机制的使用参考错误引擎。
标准化的开发者测试框架,集成单元测试和集成测试工具链,支持通过统一命令行接口执行自动化测试,确保组件质量。测试代码的编写可参考《组件的独立测试》。
深度整合的构建系统,基于
Conan
包管理和CMake
构建工具,提供从代码生成到打包发布的全流程支持,开发者通过标准化命令即可完成组件构建。组件构建命令的使用请参考《组件的构建与发布》。
在接口设计方面,openUBMC采用基于D-Bus
标准的资源协作接口体系,通过明确定义的对象路径和接口契约实现组件解耦。资源协作接口的介绍可参考《资源协作接口》。同时,平台集成Skynet轻量级服务框架,采用消息驱动的多线程调度机制和Lua脚本引擎支持,在保证系统性能的同时提升开发效率。Skynet
的使用介绍参考《Skynet开发指南》。
为确保组件质量,平台建立了严格的开发者测试(DT)体系,要求测试代码与业务代码同步开发、同仓管理。这种架构设计既保证了系统灵活性,又确保了组件间的可靠交互,为不同应用场景提供精准的定制化能力。详细测试代码编写请参考《组件的独立测试》。
特性二:全集成开发环境
组件的独立性不仅表现于独立开发,各组件使用Conan
与CMake
集成的构建方式能够支持组件间独立构建、打包和发布。
在openUBMC中,开发工具BMC Studio
集成了完整的开发工具链,为组件开发提供了一个强大的构建和依赖管理环境,和统一的BMC Studio CLI
命令行工具。各组件已实现初始化的相关构建代码,开发者无需修改Conan
以及Cmake
相关文件,可直接通过BMC Studio CLI
命令行工具实现组件的构建、测试、发布等。如开发者需定制化构建、出包等过程,可参考《组件的构建与发布》,修改相关文件内容。
BMC Studio
的命令行工具BMC Studio CLI
通过标准化接口设计、编码和代码生成、编译、开发者测试、组件发布等过程,使所有组件共享相同的CLI
命令,实现组件和制品的独立设计、编码、构建、测试和发布。构建命令请参考《BMC Studio CLI (bingo)》。