In diesem Projekt verwendete Dinge
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-DOPENOCD
Und-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/zephyr
Ordner 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/blinky
Ordner, 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 / 3•Haltepunkte 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.
Credits
Philipp Manstein
1 Projekt • 2 Follower
Teammanager bei BRICKMAKERS GmbH ( https://www.brickmakers.de/ ) | IoT-Enthusiast | Hersteller
Caronosaurus
0 Projekte • 1 Follower