|
ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
|
Last refreshed: 2026-08-22 (test inventory and execution evidence refresh).
Status: First draft, 2026-05-02. Populated during Phase 7 of docs/QUALIFICATION_ROADMAP.md. Subject to revision after the first external assessor review.
DO-178C reference: Section 11.4 (SCMP content) and Section 7 (Configuration Management Process). IEC 61508-3 reference: Clause 6.2.3 (Configuration management). ISO 26262-8 reference: Clause 7 (Configuration management).
Owner: Brighton Sikarskie (single developer / maintainer).
The configuration item set is the union of everything tracked in this git repository, plus the pinned versions of pre-existing software listed in docs/SOUP/. The repository root is the single source of truth.
| Path | Description |
|---|---|
| libs/ra8_secure_app/ | Ring 5 secure-side substrate (key vault, secure-only logic). |
| libs/ra8_core/ | ra8_err, ra8_check, ra8_log, ra8_assert, helpers. |
| libs/ra8_hal/ | Peripheral drivers and register header files. |
| libs/ra8_nsc/ | TrustZone non-secure-callable veneers. |
| libs/ra8_*_pal/ | Platform abstraction layers (ra8_net_pal, ra8_usb_pal, ...). |
| libs/ra8_psa_crypto/ | PSA Crypto integration shim. |
| libs/ra8_modem_at/ | AT-command modem stack. |
| libs/ra8_power_profile/ | Power-profile management. |
| libs/ra8_ota/ | OTA orchestration (Phase 5). |
| apps/shared_libs/ | Reusable application-domain libraries shared by product forms. |
| apps/host/, apps/board/ | Hosted and firmware product compositions. |
| examples/ek_ra8d2/**/<app>/ | Classified RA8D2 applications selected by scripts/dev/ra8_apps.py. |
| examples/ra8p1_foundation/<app>/ | RA8P1 foundation applications selected by scripts/dev/ra8_apps.py. |
| examples/_unsupported/ | Shelved applications excluded from the selected inventory. |
| port/ | First-party target, middleware, and host adaptation layers. |
| tools/ | First-party build, inspection, packaging, and emulation tools. |
| tests/ | Repository-level host test harness and test support. |
| scripts/ | First-party build, verification, CI, HIL, and developer automation. |
Each application directory owns examples/ek_ra8d2/<tier>/.../<app>/src/main.c and a root CMakeLists.txt. The selected board layer supplies canonical boot and linker artifacts; an application keeps a local file only when it intentionally overrides that default:
Product forms follow the same ownership rule; for example, the e-reader's exception override is apps/board/stand_alone/ereader/src/secure_exception.c.
The canonical EK-RA8D2 defaults are under libs/ra8_board_ek_ra8d2/{src/boot,ld}/; RA8P1 uses the corresponding libs/ra8_board_ra8p1/ layer.
| Path | Description |
|---|---|
| CMakeLists.txt (root) | Top-level orchestrator; auto-discovers example apps. |
| justfile (root) | Authoritative task interface; includes the namespaced modules under just/. |
| cmake/toolchain-ra8d2.cmake | arm-none-eabi cross-compile settings. |
| cmake/ra8_warnings.cmake | Warning + stack-usage gate (-Wstack-usage=2048 default). |
| Doxyfile | Doxygen configuration (docs site + warning gate). |
| Path | Description |
|---|---|
| tests/CMakeLists.txt | Host test build configuration; gates MC/DC instrumentation. |
| tests/build_tests.sh | Host-test build entry point. |
| tests/run_tests.sh | Host-test execution entry point (ctest). |
| Distributed test sources | Dated 2026-08-22 snapshot: 693 files (689 C, 4 C++), 689 registrations on clean standalone macOS and Linux, and 689/689 passing in the Linux/devcontainer gate in 8.66 s. This is retained historical evidence, not the current-tree census; macOS execution was not claimed. |
| Path | Description |
|---|---|
| scripts/report/mcdc_report.sh | MC/DC measurement and gate. |
| scripts/checks/misra_check_inner.sh | MISRA-C 2012 advisory audit. |
| scripts/checks/stack_usage_check.py | Stack-bound aggregator. |
| scripts/checks/cite_check.py | HUM citation validator. |
| scripts/checks/check_world_tags.py | TrustZone world-tag enforcement. |
| scripts/checks/check_obsolete_standards.py | Rejects superseded safety-standard references. |
| scripts/checks/check_no_dynamic_alloc.py | NASA P10 Rule 3 enforcement. |
| scripts/checks/check_mcdc_block.py | @par MC/DC: block enforcement on tests. |
| scripts/checks/check-since-version.py | Doxygen @since enforcement. |
| scripts/checks/check-copyright.py | Copyright + SPDX header enforcement. |
| scripts/report/roadmap_stats.py | ../ROADMAP.md summary block freshness gate. |
| scripts/report/tree_coverage.sh | gcovr whole-tree coverage measurement. |
| scripts/checks/format_code.sh | clang-format wrapper. |
| scripts/checks/clang_tidy.sh | clang-tidy wrapper. |
| scripts/dev/flash.sh | J-Link flash wrapper (HW operations). |
| scripts/git/pre-commit | Pre-commit hook (the authoritative gate suite). |
| Path | Description |
|---|---|
| CLAUDE.md | Coding rules; informs both human and AI contributors. |
| docs/STYLE_GUIDE.md | Authoritative human-facing style guide. |
| docs/RING_AND_WORLD.md | Architectural-ring and TrustZone-world tagging system. |
| docs/MEMORY_MAP.md | Linker memory map. |
| docs/MCDC.md, docs/MCDC_GAPS.md | MC/DC infrastructure and gap list. |
| docs/MISRA.md, .github/misra-baseline.txt | MISRA-C 2012 audit policy and baseline. |
| docs/STACK_USAGE.md | Stack-bound analysis. |
| docs/HARDWARE_BRINGUP.md | EVM bring-up + smoke procedure. |
| docs/QUALIFICATION_ROADMAP.md | Phase plan to SIL 3 / DAL B. |
| docs/qualification/ | All planning + verification + accomplishment documents. |
| docs/SOUP/ | Per-component pre-existing-software qualification basis. |
| docs/reference/ | Renesas datasheets and HUM (committed PDFs). |
The two canonical vendor roots hold the pinned source of every SOUP component listed in docs/SOUP/README.md: platform-wide dependencies live under libs/third_party/, while dependencies used only by application products and their companion host tools live under apps/shared_libs/third_party/. Each component is vendored at the exact version recorded in its docs/SOUP/<name>.md file. Updates require:
| Path | Description |
|---|---|
| .github/workflows/firmware.yml | Primary CI workflow (build, test, MC/DC, coverage, lint). |
| .github/mcdc-baseline.txt | Pinned MC/DC baseline (regression gate). |
| .clang-format | Formatter configuration. |
| .clang-tidy | Linter configuration (NASA P10 Rule 4 thresholds). |
| .clangd | Editor integration; strips ARM-only flags. |
| .cppcheck-suppressions | MISRA deviation justifications inline. |
| .editorconfig, .gitattributes, .gitignore | Repository hygiene. |
The hook at scripts/git/pre-commit enforces the following gates on every commit. Failure of any gate refuses the commit:
The hook is mirrored by CI; it is the developer's responsibility not to bypass the local installation.
.github/workflows/firmware.yml mirrors the pre-commit suite and adds the heavier gates that are too slow for per-commit:
A PR cannot be merged with any CI gate red. This is the binding configuration-control point.
GitHub Issues on the ra8-firmware repository are the authoritative problem-report log. There is no separate bug tracker.
Per docs/QUALIFICATION_ROADMAP.md planning vocabulary, the project uses the following severity tiers:
| Severity | Meaning |
|---|---|
| crit | Defect that violates a SIL 3 / Level B safety claim or breaks main. |
| high | Defect on the critical-path module set (ISR, MPU, XSPI, USB, SCI, PSA). |
| med | Defect in any first-party module not on the critical path. |
| low | Cosmetic, documentation, or style defect. |
The combined git log + GitHub Issues + PR review history form the complete defect-resolution audit trail. No additional tracker is required for the qualification claim.
A "baseline" in this project is a git commit hash. A CI-green dev commit is the working baseline; release baselines live on main. External references (the SVR, the SAS, the SOUP review records) cite commits by their abbreviated SHA. Signed tags will identify released baselines after the first release lands (Section 5).
Any update to a vendored library under libs/third_party/ or apps/shared_libs/third_party/ requires:
When a release is cut, the procedure is:
The signing key fingerprint and key-management procedure will be documented at the time of the first signed release.
A bit-exact rebuild of any historical state is achieved by:
There is no production fleet today; all loads are developer-bench loads against the EK-RA8D2 evaluation kit. When a production fleet is established the load-control procedure will be extended with a signed-update path (the OTA orchestration in libs/ra8_ota/ is the foundation).
The CI workflow .github/workflows/firmware.yml, the checked-in .devcontainer/Dockerfile, and the canonical helpers under scripts/ci/ control the toolchain. The managed set includes:
Any toolchain bump updates its authoritative pin and follows the same PR + CI gating as a code change.
The checked-in .devcontainer/ definition supplies the pinned development environment. Image construction and writable-worktree execution go through the canonical helpers in scripts/ci/, which also enforce the image identity used by the Just devcontainer recipes.