Define the milestone
Prepare project context
- Select the intended project with
/projectand confirm its platform matches the board. - Add fitted components with
/peripheral. - Add the board’s complete schematic set, including power and connector sheets.
- Run
/initand confirm the build, flash, and observation commands in EMBEDDER.md.
Check the hardware assumptions
Confirm the intended supply voltage, reset and boot configuration, clock source, and debug or logging connection. For the first peripheral, check its power sequence, bus pins, pull-ups, chip select or address straps, and any required enable signal against the populated board.Establish a startup baseline
Build the smallest suitable application from the project’s existing SDK or board support. Confirm the artifact and target before flashing. Capture a known boot marker over UART, RTT, or another connection supported by the board.Build, flash, and observe
Once startup is established, initialize one peripheral and perform the smallest transaction that proves communication. Prefer a documented identity or status read before enabling a larger workload. Run the intended build and stop if it fails. Confirm the artifact and connected target, then flash and capture the expected output with a timeout.Diagnose before expanding
Use serial output for startup order, a logic analyzer for transactions, an oscilloscope for signal quality, and GDB for state. Run/debug when debugger inspection is needed. Start with the observation that can distinguish the most likely causes.
For a missing bus response, first check whether the expected pins toggle. If they do, inspect address or chip-select timing and acknowledgement; if they do not, inspect initialization, clocks, and pin configuration. Repeat the same bounded check after each change.
Preserve a fault before resetting the board. See Monitor and debug.
Make bring-up repeatable
Save the successful setup inEMBEDDER.md and the test as a hardware script. Record the board revision, firmware artifact, wiring, expected output, and any manual reset or power steps. Re-run the check from the intended startup condition before adding the next peripheral or feature.
When the first transaction works, continue with Driver development to build the full interface, error handling, and regression checks.
