Debuggen Sie den Raspberry Pi Pico mit Zephyr RTOS unter MacOS (2023)

In diesem Projekt verwendete Dinge

Hardware-Komponenten

Debuggen Sie den Raspberry Pi Pico mit Zephyr RTOS unter MacOS (1)
Raspberry Pi Pico
×1
  • Kaufen Sie bei www.raspberrypi.org
  • Kaufen Sie bei CPC
Raspberry Pi Debug Probe
Oder verwenden Sie einen zweiten Raspberry Pi Pico mit der picoprobe-Firmware (https://github.com/raspberrypi/picoprobe).
×1
Debuggen Sie den Raspberry Pi Pico mit Zephyr RTOS unter MacOS (2)
USB-A-auf-Micro-USB-Kabel
×2
  • Kaufen Sie bei Newark
  • Kaufen Sie bei Adafruit
Debuggen Sie den Raspberry Pi Pico mit Zephyr RTOS unter MacOS (3)
Überbrückungsdrähte (allgemein)
×1
  • Kaufen Sie bei Newark
  • Kaufen Sie bei SparkFun

Software-Apps und Online-Dienste

Apple macOS Mojave oder höher
Debuggen Sie den Raspberry Pi Pico mit Zephyr RTOS unter MacOS (4)
Microsoft VS-Code
Cortex-Debug-Erweiterung für VS-Code
Homebrew

Geschichte

Wenn Sie Fehler in Ihrem Code beheben oder den Ablauf Ihrer Anwendung verstehen möchten, hilft das Debuggen viel besser als nur die Verwendung von Protokollnachrichten.

In diesem Tutorial installieren Sie die benötigte Software und konfigurieren sie, damit Sie Zephyr RTOS-Anwendungen mit dem Raspberry Pi Pico entwickeln können.

Installieren Sie Homebrew

Homebrew ist ein Paketverwaltungssystem, mit dem wir fehlende Software auf Ihrem Mac installieren.

Öffnen Sie ein Terminalfenster und fügen Sie es ein

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Drücken Sie dann die Eingabetaste. Folgen Sie nun den Anweisungen in Ihrem Terminal.

Installieren Sie Zephyr 3.2.0

(KlickenHierfür den neuesten Leitfaden des Zephyr-Projekts und weitere Informationen)

Installieren Sie die fehlenden Abhängigkeiten mit Homebrew. Fügen Sie den folgenden Befehl in Ihr Terminalfenster ein

brew install cmake ninja gperf python3 ccache qemu dtc wget libmagic

Wir werden eine virtuelle Umgebung verwenden. Führen Sie daher den folgenden Befehl aus, um sie zu erstellen

python3 -m venv ~/zephyrproject/.venv

Aktivieren Sie es dann (Sie müssen es jedes Mal aktivieren, wenn Sie ein neues Terminal öffnen).

Quelle ~/zephyrproject/.venv/bin/activate

Westen installieren

pip install west

Initialisieren Sie das Zephyr-Projekt

west init ~/zephyrproject
cd ~/zephyrproject
West-Update

Exportieren Sie ein Zephyr CMake-Paket

West Zephyr-Export

Installieren Sie zusätzliche Python-Abhängigkeiten

pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt

Laden Sie das Zephyr SDK herunter und überprüfen Sie esIntel x86-Macs:

cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/zephyr-sdk-0.15.2_macos-x86_64.tar.gz
wget -O – https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/sha256.sum | shasum --check --ignore-missing

Extrahieren Sie es

tar xvf zephyr-sdk-0.15.2_macos-x86_64.tar.gz

Oder:Laden Sie das Zephyr SDK herunter und überprüfen Sie esM1/M2-Arm-Macs:

cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/zephyr-sdk-0.15.2_macos-aarch64.tar.gz
wget -O – https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/sha256.sum | shasum --check --ignore-missing

Extrahieren Sie es

tar xvf zephyr-sdk-0.15.2_macos-aarch64.tar.gz

Notiz: Es wird empfohlen, das Zephyr SDK-Bundle an einem der folgenden Speicherorte zu extrahieren:

  • $HOME
  • $HOME/.local
  • $HOME/.local/opt
  • $HOME/bin
  • /opt
  • /usr/local

Führen Sie das Setup-Skript aus:

cd zephyr-sdk-0.15.2
./setup.sh

Um zu testen, ob alles funktioniert, erstellen wir das Blinky-Beispiel:

cd ~/zephyrproject/zephyr
West Build -p immer -b rpi_pico Proben/Basic/Blinky

Installieren Sie Tools, um die Raspberry Pi Debug Probe zu verwenden

(SehenHierfür die neuesten Anweisungen)

Open-ocd über Homebrew installieren

brew installiere open-ocd

Installieren Sie GDB fürIntel x86-Macs:

brew installiere gdb

Oder:Installieren (Arm) GDB fürM1/M2-Arm-Macs(Derzeit ist GDB nicht über Homebrew für ARM-Macs verfügbar)

Brauhahn Eblot/Armeabi
brew install arm-none-eabi-gdb

Verbinden Sie den Raspberry Pi Pico und die Raspberry Pi Debug Probe

Von https://www.raspberrypi.com/documentation/microcontrollers/debug-probe.html

Serielles Debug-Signal:

  • Der Debug Probe „D“-Anschluss -> Pico H SWD JST-Anschluss

ODER, wenn Sie keinen Raspberry Pi Pico ohne JST-Anschluss haben:

  • Der Debug Probe „D“-Anschluss GND (schwarzes Kabel) -> GND
  • Der Debug Probe „D“-Anschluss SD (bidirektionale serielle Daten) (rotes Kabel) -> SWDIO
  • Der Debug Probe „D“-Anschluss SC (serielle Uhr) (gelbes Kabel) -> SWCLK

UART-Signal:

  • Der Debug Probe „U“-Anschluss GND (schwarzes Kabel) -> GND
  • Der Debug Probe „U“-Anschluss TX (rotes Kabel) -> GP1/UART0 RX
  • Der Debug Probe „U“-Anschluss RX (gelbes Kabel) -> GP0/UART0 TX

Alternative: Verbinden Sie den Raspberry Pi Pico und einen zweiten Raspberry Pi Pico mit Picoprobe

Wenn Sie keine Raspberry Pi Debug Probe haben, können Sie einen zweiten Raspberry Pi Pico zum Debuggen einer Anwendung verwenden.

Von https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf (Seite 10)

Laden Sie die neueste Pico Probe-Firmware herunter (Datei picoprobe.uf2).Hier. Versetzen Sie den Raspberry Pi Pico in den Firmware-Upload-Modus, indem Sie auf drückenBootlegStift beim Anschließen an das USB-Kabel. Kopieren Sie die Firmware auf das automatisch gemountete USB-Massenspeichergerät.

Von https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf (Seite 65)

Verbinden Sie nun die Pico Probe (Pico A) mit dem Raspberry Pi Pico (Pico B):

  • Pico A GND -> Pico B GND
  • Pico A GP2 -> Pico B SWCLK
  • Pico A GP3 -> Pico B SWDIO
  • Pico A GP4/UART1 TX -> Pico B GP1/UART0 RX
  • Pico A GP5/UART1 RX -> Pico B GP0/UART0 TX
  • Optional: Pico A VSYS -> Pico B VSYS
⚠️ WICHTIG Wenn Pico B ein USB-Host ist, müssen Sie VBUS an VBUS und nicht VSYS an VSYS anschließen, damit Pico B 5 V an seinem USB-Anschluss bereitstellen kann. Wenn Pico B USB im Gerätemodus verwendet oder USB überhaupt nicht verwendet, ist dies nicht erforderlich.

Aushttps://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdfSeite 65f.)

Erstellen Sie ein Blinky-Beispiel und debuggen Sie es über GDB

Kompilieren Sie die Blinky-App mit Debug-Informationen für open-ocd

cd ~/zephyrproject/zephyr
rm -rf bauen
west build -p immer -b rpi_pico --force Proben/basic/blinky -- -DOPENOCD=/opt/homebrew/bin/openocd -DOPENOCD_DEFAULT_PATH=/opt/homebrew/Cellar/open-ocd/0.12.0/share/openocd /scripts -DRPI_PICO_DEBUG_ADAPTER=cmsis-dap

(Vielleicht müssen Sie andere Pfade an open-ocd übergeben. Schauen Sie sich den Parameter an-DOPENOCDUnd-DOPENOCD_DEFAULT_PATH)

Flashen Sie das blinkende Beispiel

Westblitz

Starten Sie den Open-OCD-Server

openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "Adaptergeschwindigkeit 5000"

Öffnen Sie ein anderes Terminalfenster und navigieren Sie zu~/zephyrproject/zephyrOrdner und führen Sie gdb aus

arm-none-eabi-gdb build/zephyr/zephyr.elf

Jetzt lauf

Ziel-Remote-Localhost:3333
Monitor-Reset-Init
weitermachen

Wenn dies erfolgreich war, können wir jetzt VS Code für das Debuggen konfigurieren!

Konfigurieren Sie VS-Code

Wenn Sie VS Code noch nicht installiert haben, können Sie es hier herunterladenhttps://code.visualstudio.com/download.

Öffnen Sie einen Ordner über das Menü

Öffnen Sie nun VS Code und öffnen Sie die~/zephyrproject/zephyr/samples/basic/blinkyOrdner, wie im Bild oben gezeigt.

Installieren Sie die Cortex-Debug-Erweiterung über das Erweiterungsmenü

Wir müssen die Cortex-Debug-Erweiterung installieren. Sie können es über das Erweiterungsmenü installieren, wie oben gezeigt, oder auf der Marktplatz-Website auf „Installieren“ klickenHier.

Erstellen Sie launch.json mit Cortex-Debug

Klicken Sie nun auf die Startmenü-Schaltfläche links und klicken Sie aufErstellen Sie eine JSON-Startdateiund wähleCortex-Debugoder erstellen Sie einelaunch.jsonDatei in der.vscodeVerzeichnis.

DerJSON startenDatei sollte geöffnet werden. Ändern Sie den Inhalt in:

{
„Version“: „0.2.0“,
„Konfigurationen“:
[
{
„name“: „Pico Zephyr Debug“,
„cwd“: „${workspaceRoot}“,
„ausführbare Datei“: „build/zephyr/zephyr.elf“,
„request“: „launch“,
„type“: „cortex-debug“,
„servertype“: „openocd“,
„gdbPath“: „arm-none-eabi-gdb“,
„Gerät“: „RP2040“,
„configFiles“: [
„interface/cmsis-dap.cfg“,
„target/rp2040.cfg“
],
„svdFile“: „${workspaceFolder}/../../../modules/hal/rpi_pico/src/rp2040/hardware_regs/rp2040.svd“,
„runToEntryPoint“: „main“,
„postRestartCommands“: [
„Hauptunterbrechung“,
"weitermachen"
],
„openOCDLaunchCommands“: [
„Adaptergeschwindigkeit 5000“
],
„preLaunchTask“: „Flash“
}
]
}

Erstellen Sie nun einetask.jsonDatei in der.vscodeVerzeichnis und fügen Sie den folgenden Inhalt ein

{
„Version“: „2.0.0“,
"Aufgaben": [
{
„label“: „SetEnv“,
„Typ“: „Shell“,
„Befehl“: „Westen“,
„Argumente“: [
„config“,
„zephyr.base“, „${workspaceFolder}/../../../../zephyr“
],
"Optionen": {
"Statusleiste": {
„verstecken“: wahr
}
},
„Gruppe“: „Test“
},
{
„label“: „Erstellen“,
"kommt drauf an": [
„SetEnv“
],
„Typ“: „Shell“,
„Befehl“: „Westen“,
„Argumente“: [
"bauen",
„-p“, „auto“,
„-b“, „rpi_pico“,
"--Gewalt",
".",
„--“,
„-DOPENOCD=/opt/homebrew/bin/openocd“,
„-DOPENOCD_DEFAULT_PATH=/opt/homebrew/Cellar/open-ocd/0.12.0/share/openocd/scripts“,
„-DRPI_PICO_DEBUG_ADAPTER=cmsis-dap“
],
"Optionen":
{
„cwd“: „${workspaceFolder}“,
„env“: {
„ZEPHYR_TOOLCHAIN_VARIANT“: „zephyr“,
„ZEPHYR_SDK_INSTALL_DIR“: „${env:HOME}/zephyr-sdk-0.15.2“
}
},
„problemMatcher“: {
„base“: „$gcc“,
"Speicherort": [
"absolut"
]
},
„Gruppe“: {
„kind“: „bauen“,
„isDefault“: wahr
}
},
{
„label“: „Verbose erstellen“,
"kommt drauf an": [
„SetEnv“
],
„Typ“: „Shell“,
„Befehl“: „Westen“,
„Argumente“: [
„-v“,
"bauen",
„-p“, „auto“,
„-b“, „rpi_pico“,
"--Gewalt",
".",
„--“,
„-DCMAKE_EXPORT_COMPILE_COMMANDS=ON“,
„-DOPENOCD=/opt/homebrew/bin/openocd“,
„-DOPENOCD_DEFAULT_PATH=/opt/homebrew/Cellar/open-ocd/0.12.0/share/openocd/scripts“,
„-DRPI_PICO_DEBUG_ADAPTER=cmsis-dap“
],
"Optionen":
{
„cwd“: „${workspaceFolder}“,
„env“: {
„ZEPHYR_TOOLCHAIN_VARIANT“: „zephyr“,
„ZEPHYR_SDK_INSTALL_DIR“: „${env:HOME}/zephyr-sdk-0.15.2“
}
},
„problemMatcher“: {
„base“: „$gcc“,
"Speicherort": [
"absolut"
]
},
„group“: „build“
},
{
„label“: „Sauber“,
"kommt drauf an": [
„SetEnv“
],
„Typ“: „Shell“,
„Befehl“: „Westen“,
„Argumente“: [
"bauen",
„-p“, „auto“,
„-b“, „rpi_pico“,
„-t“, „sauber“,
"--Gewalt",
".",
„--“,
„-DOPENOCD=/opt/homebrew/bin/openocd“,
„-DOPENOCD_DEFAULT_PATH=/opt/homebrew/Cellar/open-ocd/0.12.0/share/openocd/scripts“,
„-DRPI_PICO_DEBUG_ADAPTER=cmsis-dap“
],
"Optionen":
{
„cwd“: „${workspaceFolder}“,
„env“: {
„ZEPHYR_TOOLCHAIN_VARIANT“: „zephyr“,
„ZEPHYR_SDK_INSTALL_DIR“: „${env:HOME}/zephyr-sdk-0.15.2“
}
},
„group“: „build“
},
{
„label“: „Flash“,
"kommt drauf an": [
"Bauen"
],
„Typ“: „Shell“,
„Befehl“: „Westen“,
„Argumente“: [
"blinken"
],
"Optionen":
{
„cwd“: „${workspaceFolder}“,
„env“: {
„ZEPHYR_TOOLCHAIN_VARIANT“: „zephyr“,
„ZEPHYR_SDK_INSTALL_DIR“: „${env:HOME}/zephyr-sdk-0.15.2“
}
},
„problemMatcher“: {
„base“: „$gcc“,
"Speicherort": [
"absolut"
]
},
„group“: „build“
}
]

(Die Aufgaben basieren auf den Tutorials vonMrGreenWorkshop)

Möglicherweise müssen Sie die Pfade für Ihre openocd-Installation ändern.

Fügen Sie nun a hinzuSettings.jsonDatei zu Ihrem.vscodeVerzeichnis auswählen und einfügen

{
„cortex-debug.openocdPath“: „/opt/homebrew/bin/openocd“,
}

Testen Sie Ihre Konfigurationen:

  • Öffnen Sie die Befehlspalette mit der Tastenkombination ⇧⌘P
  • Suchen nachAufgabeund wähleAufgaben: Aufgabe ausführen
  • Als nächstes wählen SieBauen
  • Jetzt sollten Sie eine Ausgabe im integrierten Terminal sehen
  • Wenn es nicht erfolgreich war, schauen Sie sich die Fehlermeldungen an. Möglicherweise sind einige Pfade nicht korrekt. Korrigieren Sie sie und versuchen Sie es erneut
  • Versuchen Sie es als nächstesBlinkenAufgabe

Jetzt sind Sie bereit zum Debuggen!

Debuggen mit VS-Code

Fügen Sie nun Ihrem Code einige Haltepunkte hinzu. Öffne dasHaupt cKlicken Sie in der Datei links neben den Zeilennummern, um Haltepunkte hinzuzufügen.

1 / 3Haltepunkte hinzufügen

Öffne dasAusführen und DebuggenMenü aufrufen und dann startenPico Zephyr-Debug. Jetzt sollte das Programm erstellt und auf den Raspberry Pi Pico geflasht werden und der Haltepunkt sollte bald erreicht sein.

Gut gemacht! Sie können jetzt Zephyr RTOS-Anwendungen auf dem Raspberry Pi Pico mit VS Code unter macOS debuggen! 🎉

Bonus-Tipps:

Serielle Verbindung:

Um die serielle Ausgabe anzuzeigen, können Sie CoolTerm verwenden. Sie können es über Homebrew installieren

brew install --cask coolterm

Oder nutzen Sie dieSerial Monitor-Erweiterungim VS-Code.

Weiterlesen

Credits

Philipp Manstein

1 Projekt • 2 Follower

Teammanager bei BRICKMAKERS GmbH ( https://www.brickmakers.de/ ) | IoT-Enthusiast | Hersteller

Caronosaurus

0 Projekte • 1 Follower

Kommentare

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated: 05/06/2023

Views: 5241

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.