# NeoECU Tooling Unified CLI tooling for building and flashing NeoECU firmware ## Configuration Run commands from anywhere inside a project that contains `neoecu.toml`. The tool walks up the directory tree until it finds that file. `neoecu.toml` uses a `[build]` table. A core is considered configured only when both its directory and type are present: ```toml [build] m7_dir = "path/to/cm7/project" m7_type = "ST" m4_dir = "path/to/cm4/project" m4_type = "Zephyr" ``` Supported core types are `ST` for CM7 and `Zephyr` for CM4. If either the CM7 or CM4 keys are missing or incomplete, that core is skipped and the tool runs as a single-core project for the core that is fully configured. Examples: ```toml [build] m7_dir = "STM32" m7_type = "ST" ``` ```toml [build] m4_dir = "Zephyr" m4_type = "Zephyr" ``` ## Commands ### `neoecu build` Builds the configured firmware cores. With both cores configured, this builds CM7 first with CMake and CM4 second with West/Zephyr. With only one fully configured core, only that core is built. Options: - `--debug`: build CM7 with the `Debug` CMake preset. If omitted, CM7 uses `Release`. - `--release`: build CM7 with the `Release` CMake preset. - `--clean`: clean before building. CM7 uses CMake `--clean-first`; CM4 uses West pristine rebuild. - `--CM7`: build only the CM7 core. - `--CM4`: build only the CM4 core. Examples: ```sh neoecu build neoecu build --debug neoecu build --release --clean neoecu build --CM7 neoecu build --CM4 --clean ``` ### `neoecu flash` Flashes the configured firmware cores with J-Link. With both cores configured, CM4 is flashed first and CM7 second. With only one fully configured core, only that core is flashed. Options: - `--CM7`: flash only the CM7 core. - `--CM4`: flash only the CM4 core. Examples: ```sh neoecu flash neoecu flash --CM7 neoecu flash --CM4 ``` ### `neoecu init` Initializes the configured project cores. For CM7, it runs the CMake `Debug` and `Release` presets and performs an initial debug build. For CM4, it installs West and Zephyr Python requirements, then runs an initial West build. Example: ```sh neoecu init ``` ### `neoecu clean` Removes generated build directories for the configured cores while protecting the project root and configured source directories. Example: ```sh neoecu clean ``` ### `neoecu envcheck` Checks whether expected build tools, Zephyr environment variables, and Arm toolchain dependencies are available. Example: ```sh neoecu envcheck ```