Dokumentation

PCBA Studio ist eine lokale Prüfung für eine bestimmte Art von Fehler: Schaltplan, STM32CubeMX-Konfiguration und Firmware nennen nicht denselben Pin.

Was eine Prüfung liest

  • Altium-.SchDoc-Blätter. Das elektrische Ende eines Pins wird aus dem Pin-Datensatz berechnet. Leitungen entscheiden, was verbunden ist, nicht der Text einer Bezeichnung.
  • Eine CubeMX-.ioc-Datei, so wie CubeMX sie geschrieben hat.
  • Von Hand geschriebene Firmware-Referenzen wie GPIOD, GPIO_PIN_8. Erzeugte Defines in main.h werden übersprungen, und Herstellerbäume unter Drivers/ und Middlewares/ werden nicht indiziert.
  • Bei mehreren Platinen nennt eine pcba-studio.toml im Projektstamm jedes Ziel. Pfade müssen im Projekt bleiben, und jede Firmware-Wurzel muss Core/Src enthalten.

Regeln

cross_domain.pin.mismatchDasselbe Peripheriesignal ist im Schaltplan und in der .ioc auf verschiedene Pins gelegt.
cross_domain.firmware.hardcoded_pin_driftVon Hand geschriebene Firmware nennt einen Pin, den die .ioc inzwischen anders belegt.
cross_domain.pin.unconfiguredEin Peripheriesignal im Schaltplan fehlt in der .ioc.
cross_domain.mcu_config.incompleteDie .ioc deckt fast nichts vom Schaltplan ab. Es gibt einen Befund statt einer Liste einzeln wahrer und zusammen wertloser Pin-Befunde.
cross_domain.peripheral.unconnectedEine in der .ioc konfigurierte Peripherie hat keine passende Verbindung im Schaltplan.
schematic.net.mislabelledDas Pin-Präfix einer Netzbezeichnung widerspricht der geometrischen Verbindung.
schematic.net.open_circuitEin Bauteil berührt einen MCU-Pin fast und hört davor auf. Diese Regel ist heuristisch.
stm32.pin.alternate_function_impossibleDer gewählte Pin kann dieses Peripheriesignal nicht führen, nach der MCU-Datenbank, die mit CubeMX installiert wird. Eine Prüfung auf dieser Website überspringt diese Regel und sagt das, weil die Datenbank nicht zu PCBA Studio gehört.

Was ein Befund enthält

Jeder Befund nennt das Artefakt, eine projektrelative Stelle, den zitierten Beleg, die Regel-ID, die Schwere, den Detektor, die Folge und eine Empfehlung. Der Detektor ist deterministic, heuristic, ai_inferred, external oder manual. Die Prüfung erfindet keinen Befund mit einem Sprachmodell.

Der JSON-Bericht folgt dem Schema unter /schemas/finding.schema.json. und eine Baseline folgt /schemas/baseline.schema.json.

Ein leeres Ergebnis

Exit-Status 0 heißt, die gewählte Schwelle war sauber. Er heißt nicht, dass jede Regel gelaufen ist. coverage.skipped listet die Regeln, die nicht laufen konnten. Lesen Sie diese Liste.

Mehr als eine Platine

Legen Sie pcba-studio.toml in den Projektstamm. Ein Ziel wählen Sie mit pcba review . --target interface.

version = 1
default_target = "controller"

[targets.controller]
part = "YOUR_ORDERABLE_STM32_PART"
ioc = "config/controller.ioc"
schematic_dir = "hardware/controller"
firmware_roots = ["firmware/controller"]

[targets.interface]
ioc = "config/interface.ioc"
schematic_dir = "hardware/interface"
firmware_roots = ["firmware/interface"]

Bekannte Befunde

pcba baseline . --reason "Reviewed during initial adoption" schreibt .pcba-baseline.json. Jede Unterdrückung hat eine ID und einen Grund. Eine Prüfung meldet, wie viele Befunde unterdrückt wurden und welche gespeicherten IDs keinen Befund mehr treffen. Committen Sie die Datei. Sie ist die Niederschrift einer Entscheidung, kein Versteck für einen neuen Fehler.

Geänderte Dateien

pcba review . --changed-only origin/main beschränkt den Bericht auf Befunde, deren Stelle oder Beleg eine seit diesem Git-Ref geänderte Datei betrifft.

Berichtsformate

pcba review . --format text schreibt den Standardbericht. json, markdown und sarif sind die anderen Formate. Leiten Sie stdout um, wenn Sie eine Datei behalten wollen.

pcba review . --format json > review.json

Continuous Integration

Installieren Sie das veröffentlichte Paket im Job und starten Sie die Prüfung. Die GitHub Action im privaten Repository ist für Newmatik-Projekte. Ein öffentliches Repository kann sie nicht nutzen, solange dieses Repository privat bleibt.

permissions:
  contents: read

steps:
  - uses: actions/setup-python@v5
    with:
      python-version: "3.12"
  - run: pip install pcba
  - run: pcba review . --format sarif > pcba.sarif