Reference & Development

Developer-facing details that don’t belong to a single subsystem.

Code style, lint & format

  • Formatting: C/C++ uses clang-format with the repository’s .clang-format (CONTRIBUTING.md:56). The canonical config lives at corepdk/ubs/.clang-format.
  • Static analysis: clang-tidy config at corepdk/ubs/.clang-tidy, with additional rules under etc/clang-tidy/. Setup installs clang-tidy-18 / clang-format-18 (see Setup).
  • Docs: Doxygen is configured by etc/doxygen.cfg with styling in etc/doxygen.css; doxygen/graphviz are host prerequisites.
  • Coverage: lcov plus the etc/plugins/nv-coverage-check.mk plugin and src/nv/coverage/ support coverage builds.

Contribution rules

CONTRIBUTING.md states external code contributions are not currently accepted (Issues welcome; external PRs may be closed).

For maintainers, two rules affect every source change:

  • DCO sign-off: every commit must be signed off with git commit -s (CONTRIBUTING.md:22).
  • SPDX headers: new/modified source files carry SPDX headers (CONTRIBUTING.md:31) — SPDX-FileCopyrightText + SPDX-License-Identifier: Apache-2.0, as seen atop every file (e.g. src/nv/nv.h:2).

Directory reference

Path Contents
mcu_build.sh Top-level build/sign orchestrator
corepdk/ubs/ UBS make system (bin/, etc/, share/, src/, ubs)
corepdk/modules/ Shared C++ modules: mctp-cpp, pldm-fd, spdm
corepdk/platforms/ Platform glue (e.g. mcxn236)
etc/platforms/, etc/projects/, etc/plugins/ Make fragments (see Build System)
etc/clang-tidy/, etc/doxygen.cfg Tooling configs
libexec/ Toolchains + NXP SDK (provided at build time)
src/nv/ Firmware subsystems (nv::)
src/sys/ Per-SoC BSP
src/boards/, src/projects/ Boards and buildable projects
src/overrides/ SDK override sources

Full chapter → source mapping is in the Source map.

Continuous integration

Upstream CI is GitLab CI (.gitlab-ci.yml), with build and test stages (.gitlab-ci.yml:1). A build matrix (.gitlab-ci.yml:18) covers the mcxn547helloworld (mcxn556-both) and p3957_cxx (mcxn556-core0) projects. The build job (.gitlab-ci.yml:29) symlinks the toolchains/SDK, patches the SDK, installs spsdk, and runs the same command developers use (.gitlab-ci.yml:56):

./mcu_build.sh PROJECT=${PROJECT} BOARD=${BOARD} \
    PLATFORM=${PLATFORM} MODE=${MODE} SIGN_KEYSET=local RUN_LOCAL=1

Note: this guide’s own site is deployed separately by GitHub Actions (.github/workflows/deploy-pages.yml); the GitLab CI above builds the firmware, not the guide.

Next

  • Appendices — glossary, symbol index, trace methodology.

Built with Just the Docs. Source-traced against NVIDIA/OpenSMA at 9b183d3 (v02.0020.0000). Methodology under appendices/trace-methodology.

This site uses Just the Docs, a documentation theme for Jekyll.