Introduction
更新时间: 2024/06/30
在Gitcode上查看源码

openUBMC is an open-source management software for computing devices. The software adopts a modular architectural design to provide flexible and efficient development experience.

The core features of openUBMC include:

  • Componentization: openUBMC uses the Conan package management technology to split system functions into multiple independent components. Each component can be developed, tested, and released independently. This design offers flexibility for developers to extend functions and customize the system easily. It allows developers to modify existing component functions, add full-featured components, and combine functional components as needed.

  • Fully integrated development environment: openUBMC provides a complete development toolchain that includes a standardized set of CLI tools, an automated code generation system, and a full-process test framework. It uses a model-driven development architecture that separates mechanisms from policies, enabling the system to generate interface code automatically by modeling services. It supports flexible component release and reference and provides full-lifecycle development support from hardware adaptation, functional development, and verification to system integration, which significantly improves development efficiency and ensures system quality.

With openUBMC, developers can quickly build and release their products on a platform built for innovation and efficiency. The following sections describe the two core features of openUBMC.

Feature 1: Componentization

openUBMC implements independent and self-iterative functions through componentization and merges these functions into a large system. This approach supports independent design, coding, building, verification, and release for each component, making internal function interactions clearer. It also improves support for customization and tailoring to meet the requirements of different customers and partners.

openUBMC uses a unified public mechanism architecture and establishes a standard development framework by abstracting common functions, enabling developers to focus on service logic implementation. The platform provides the following core public mechanisms:

  • Model-driven development framework based on module description source (MDS): This framework automates the process from component modeling to code generation. Developers only need to define component models to generate interface code and configuration files automatically, which significantly reduces repetitive work. For details about the MDS definition, see MDS.

  • Innovative hardware abstraction layer design: This design achieves hardware self-description through component self-description record (CSR) and product self-description record (PSR) files and establishes standardized hardware access interfaces, which effectively decouples hardware and software dependencies. For details about CSR and PSR definitions, see Component Self-Description Record (CSR).

  • Unified error management engine: This engine uses a centralized error registration and handling mechanism. Each component only needs to register error information to the error engine dynamically, and then the error engine framework takes over the error handling process of each component. For details about how to use the error engine mechanism, see Error Engine.

  • Standardized developer testing (DT) framework: This framework integrates unit testing and integration testing toolchains. It supports automated test execution through a unified command-line interface to ensure component quality. For details about how to write test code, see Independent Component Testing.

  • Deeply integrated build system: Based on the Conan package management and CMake build tools, this system provides full-process support from code generation to packaging and release. Developers can complete component build through standardized commands. For details about how to use the component build commands, see Component Build and Release.

In terms of interface design, openUBMC uses a resource collaboration interface system based on the D-Bus standard, achieving component decoupling through clearly defined object paths and interface contracts. For details about resource collaboration interfaces, see Viewing Resource Collaboration Interfaces. In addition, the platform integrates the Skynet lightweight service framework, which uses a message-driven multi-thread scheduling mechanism and Lua script engine support to improve development efficiency while ensuring system performance. For details about how to use Skynet, see Skynet Development Guide.

To ensure component quality, the platform has established a rigorous DT system, which requires developers to develop test code and service code synchronously and manage them in the same repository. This architectural design ensures system flexibility and reliable interactions between components, providing precise customization capabilities for different application scenarios. For details about how to write test code, see Independent Component Testing.

Feature 2: Fully Integrated Development Environment

Component independence is reflected not only in independent development but also in independent building, packaging, and release among components, supported by the build approach that integrates Conan and CMake.

In openUBMC, the BMC Studio development tool integrates a complete development toolchain, providing a powerful build and dependency management environment and a unified BMC Studio CLI tool for component development. Each component has initialized its related build code. Developers do not need to modify Conan or CMake files and can directly build, test, and release components through the BMC Studio CLI. If you need to customize the build and packaging processes, modify related files by referring to Component Build and Release.

BMC Studio CLI standardizes processes such as interface design, coding and code generation, compilation, DT, and component release. All components share the same BMC Studio CLI commands, enabling independent design, coding, building, testing, and release for components and products. For details about build commands, see BMC Studio CLI (bingo).