|
| 1 | +--- |
| 2 | +title: Bringup |
| 3 | +description: Conventions for writing board bringup and rework documentation that renders in the Diode Glass bringup tab. |
| 4 | +--- |
| 5 | + |
| 6 | +# Bringup Documentation |
| 7 | + |
| 8 | +Write a `README.md` per board version documenting reworks, firmware flashing, and test procedures. Diode Glass parses these and renders them in the **bringup** tab. |
| 9 | + |
| 10 | +## File Location |
| 11 | + |
| 12 | +``` |
| 13 | +src/boards/<BOARD_NAME>/ |
| 14 | + bringup/ |
| 15 | + v1.0/ |
| 16 | + README.md |
| 17 | + images/ |
| 18 | + estop-rework.png |
| 19 | + v2.0/ |
| 20 | + README.md |
| 21 | +``` |
| 22 | + |
| 23 | +One `README.md` per version folder. Images go in `images/` alongside the README. |
| 24 | + |
| 25 | +### Version Matching |
| 26 | + |
| 27 | +- **Exact**: release `v2.0` → folder `v2.0/` |
| 28 | +- **Prefix**: release `v2.0.4` → folder `v2.0/` (covers all v2.0.x) |
| 29 | +- **No cross-minor**: release `v2.1.0` does NOT match `v2.0/` |
| 30 | + |
| 31 | +New folder per minor version. Patch versions share a folder unless they have unique rework. Docs are fetched from `main`, not the release artifact. |
| 32 | + |
| 33 | +## Document Structure |
| 34 | + |
| 35 | +```markdown |
| 36 | +# <Board> <Version> Bringup |
| 37 | + |
| 38 | +Overview text. |
| 39 | + |
| 40 | +## Reworks |
| 41 | + |
| 42 | +### 1. Title of first rework |
| 43 | + |
| 44 | +... |
| 45 | + |
| 46 | +### 2. Title of second rework |
| 47 | + |
| 48 | +... |
| 49 | + |
| 50 | +## Firmware |
| 51 | + |
| 52 | +Free-form markdown. |
| 53 | + |
| 54 | +## Testing |
| 55 | + |
| 56 | +Free-form markdown. |
| 57 | +``` |
| 58 | + |
| 59 | +`## Reworks` is parsed into structured data. All other `##` sections render as collapsible markdown. |
| 60 | + |
| 61 | +## Rework Items |
| 62 | + |
| 63 | +Each rework is a `### N. Title` heading followed by free-form prose. Describe the problem, fix, and board location naturally. Mention status in the text or heading (e.g., "fixed in v1.1") rather than a structured field. |
| 64 | + |
| 65 | +### Linking to Components |
| 66 | + |
| 67 | +Use markdown links with the `pcb://` scheme: `[R1](pcb://R1)`, `[C5](pcb://C5)`, `[U3](pcb://U3)`. The parser links these to the PCB viewer for click-to-highlight. |
| 68 | + |
| 69 | +### Images |
| 70 | + |
| 71 | +Place in `./images/`, reference with ``. |
| 72 | + |
| 73 | +## Complete Example |
| 74 | + |
| 75 | +```markdown |
| 76 | +# DM0001 v1.0 Bringup |
| 77 | + |
| 78 | +Board version v1.0 requires 3 reworks before bringup. |
| 79 | +Items 1–2 are fixed in v1.1. Item 3 requires a physical fix on each board. |
| 80 | + |
| 81 | +## Reworks |
| 82 | + |
| 83 | +### 1. Short ESTOP debounce resistor (fixed in v1.1) |
| 84 | + |
| 85 | +The 47k ESTOP debounce resistor [R_ESTOP_DEBOUNCE](pcb://R_ESTOP_DEBOUNCE) creates a voltage |
| 86 | +divider with the ESTOP LED, pulling the signal to ~1.5V (below the AND gate |
| 87 | +VIH threshold of 2.0V). Short across [R_ESTOP_DEBOUNCE](pcb://R_ESTOP_DEBOUNCE) (47k 0402) with |
| 88 | +a solder blob or wire. Located near the ESTOP connector between ESTOP_RAW |
| 89 | +and ESTOP nets. |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | +### 2. Replace decoupling capacitors (fixed in v1.1) |
| 94 | + |
| 95 | +[C5](pcb://C5) and [C6](pcb://C6) have insufficient 10uF decoupling for [U1](pcb://U1) LDO. |
| 96 | +Replace both with 22uF/16V X5R (GRM188R61C226ME15). Bottom side, adjacent |
| 97 | +to [U1](pcb://U1). |
| 98 | + |
| 99 | +### 3. CAN termination resistor |
| 100 | + |
| 101 | +[R12](pcb://R12) footprint is unpopulated. Add 120 ohm 0402 resistor for CAN bus |
| 102 | +termination. |
| 103 | + |
| 104 | +## Firmware |
| 105 | + |
| 106 | +### Prerequisites |
| 107 | + |
| 108 | +- J-Link programmer |
| 109 | +- Firmware v1.0.2: `dm0001-v1.0.2.bin` |
| 110 | + |
| 111 | +### Flash Procedure |
| 112 | + |
| 113 | +1. Connect J-Link to SWD header [J5](pcb://J5) |
| 114 | +2. Power board via 12V supply |
| 115 | +3. Run: `JFlash -openprj dm0001.jflash -open dm0001-v1.0.2.bin -auto -exit` |
| 116 | +4. Verify: LED [D1](pcb://D1) should blink at 1Hz after flash |
| 117 | + |
| 118 | +## Testing |
| 119 | + |
| 120 | +### Power Rail Verification |
| 121 | + |
| 122 | +| Rail | Test Point | Expected | Tolerance | |
| 123 | +|------|-----------|----------|-----------| |
| 124 | +| 3.3V | [TP1](pcb://TP1) | 3.30V | ±50mV | |
| 125 | +| 1.8V | [TP2](pcb://TP2) | 1.80V | ±30mV | |
| 126 | +| 5.0V | [TP3](pcb://TP3) | 5.00V | ±100mV | |
| 127 | + |
| 128 | +### CAN Bus Test |
| 129 | + |
| 130 | +1. Connect CAN analyzer to [J2](pcb://J2) |
| 131 | +2. Send test frame: ID=0x100, DLC=8, data=0xFF |
| 132 | +3. Board should echo back on ID=0x101 within 10ms |
| 133 | + |
| 134 | +### ESTOP Functional Test |
| 135 | + |
| 136 | +1. Short ESTOP connector pins 1-2 |
| 137 | +2. Verify ESTOP_OUT test point reads 3.3V (after rework #1) |
| 138 | +3. Open ESTOP connector |
| 139 | +4. Verify ESTOP_OUT reads 0V |
| 140 | +``` |
0 commit comments