summaryrefslogtreecommitdiff
path: root/tools/codespell
AgeCommit message (Collapse)Author
20 hourssysview: add the skill - headless SystemView capture and reportinghathach
SKILL.md leads with the capture routes ranked by evidence: OpenOCD RTT streaming through the rtt skill's tools/rtt.py (--channel 1 --reset-before-attach, since the Init record that carries the timestamp frequency and sync preamble is emitted once at boot; 238 KB captured without it decodes to zero events), the live GUI recorder under Xvfb for depth, and --from-raw post-mortem decode last. boards.md holds the per-board reference: probe routes, RAM bases, measured buffer sizes, the full-pool campaign table and the honest capture status of every board tried, including the gaps: nrf5340dk HardFaults in vTaskStartScheduler before any task runs; PIO-USB host ISRs are invisible to level-1 coverage (fruit_jam); metro_m4_express is attach-only (the SAMD5x DSU CPU Reset Extension holds the core after an in-session reset run); WCH is dump-only - the QingKe SDI has no autonomous memory access, so a persistent debug session corrupts the running core ~1.9 s into USB traffic, ruled out against lock, post-mortem mode and firmware; a stray TU_ASSERT still halts for inspection rather than being silenced. sysview_record.py drives the capture end to end and refuses to back up its own ini stub as the user's SystemView config (a SIGKILLed run had consumed the real backup that way). sysview_report.py turns the exported CSV into the JSON report: ISR load, function pairing and durations, workload-window CPU load from the scheduling events. Returns are classified on the bare 'Returns' detail - SystemView annotates a duration on only ~0.5% of them (measured on stm32f407disco and raspberry_pi_pico), and when the annotation is absent the duration comes from the recorded timestamps, verified the same quantity at 167.998 vs a declared 168.000 ticks/us over 264 annotated returns. Both loss markers count as overflow: explicit '*** Overflow ***' rows and 'Returns to *** OVERFLOW ***' exit contexts - only counting the first understated real loss by two orders of magnitude.
2026-07-28docs: add the unified OpenOCD plan, note worktree dep symlinkshathach
The plan doc records why the fork exists and how each vendor source was ported; the interim handoff it superseded is dropped. CLAUDE.md: a new worktree should symlink the dependency dirs to the primary checkout rather than re-fetching them, replacing a single symlink only when the branch needs a different dep revision. Also allow 'linke' in codespell - WCH-LinkE is a product name.
2026-06-11Fix stm32f723disco host/cdc_msc_hid HIL: UART RX starvation + DWC2 DMA ↵Ha Thach
split-IN NAK storm (#3677) Fix stm32f723disco host HIL: UART RX starvation + DWC2 split bulk NAK/XactErr handling (#3677) stm32f7 BSP — UART RX starvation - The host console USART shared interrupt priority with the USB OTG ISR, so a long OTG interrupt could starve RXNE and drop received bytes. Raise the USART RX IRQ above OTG_FS/OTG_HS in both the bare-metal and FreeRTOS init paths, guarded by #ifdef UART_ID so boards without a UART console keep the default OTG priority. dwc2 host — split NAK/XactErr handling - Slave mode: a persistently-NAKing split bulk/control IN poll re-armed the start-split immediately, storming the ISR and starving task context. Throttle by disabling the channel and re-arming on the resulting halt (no frame deferral). - Buffer-DMA mode: a pure split bulk-OUT NAK was unhandled, leaving the channel halted and stalling the transfer — the dominant cause of CDC echo truncation. Handle it by rewinding the buffer pointers and retrying the start-split (Programming Guide v4.20a 5.1.4.2). - Buffer-DMA mode: a split bulk-OUT XactErr was retried immediately, exhausting HCD_XFER_ERROR_MAX before the transient cleared. Throttle via channel_disable + re-arm to give the hub TT a recovery gap, mirroring slave mode. - All three are scoped to split transfers (hcsplt.split_en); non-split NAK/XactErr keep the core-handled / immediate-retry behavior. The OUT XactErr throttle also excludes periodic split, where channel_disable() is a no-op and would wedge the channel. The nak_disabled flag is generalized to retry_disabled and honors xfer->closing so an endpoint close during a throttled retry tears down cleanly. Verified on stm32f723disco HIL (slave + CFG_TUH_DWC2_DMA_ENABLE): host/cdc_msc_hid, msc_file_explorer, and device_info all pass on both variants; DMA CDC echo went from ~15-25% raw failure to 10/10 clean.
2026-03-06fix CIHiFiPhile
Signed-off-by: HiFiPhile <[email protected]>
2026-02-07minor updatehathach
2023-11-29improve hil test, correct pi4 uuidhathach
2023-08-02move codespell folder to toolshathach