Example Workspace für die Vorlesung Systemnahe Programmierung I an der DHWB Ravensburg.
- Cortex M0 Startseite
- Arm Application Binary Interface
- GNU Assembler Documentation
- GNU Linker Documentation
- Arm Cross Compiler Paket: gcc-arm-none-eabi
- QEMU Arm Paket: qemu-system-arm
- GDB (Multi-Arch) Paket: gdb-multiarch
- CMake
Hinweis: Bei SUSE scheint der standard GDB ein GDB-Multiarch zu sein.
Installation von CMake über Download des Installers (https://cmake.org/download/)
oder Paketmanager winget install CMake.CMake
.
Installation der ARM GCC Toolchain Website
Nach z.B. C:\Toolchains
WICHTIG: zu PATH hinzufügen (lassen)
Über Paketmanager Installieren:
Ubuntu/ Debian: sudo apt install gcc-arm-none-eabi cmake
Arch:
yay -S gcc-arm-none-eabi-bin
sudo pacman -S cmake
brew install gcc-arm-embedded
Auschecken des Quellcodes:
git clone https://github.com/infohoschie/arm-cortex-m0-cmake.git
Erstellen des Build Mittels CMake Presets:
cmake --preset arm-cortex-m0-unix
oder
cmake --preset arm-cortex-m0-mingw
Bauen Mittels CMake Presets:
cmake --build --preset arm-cortex-m0
oder
cmake --build --preset arm-cortex-m0-mingw
- ELF-Sections anzeige:
arm-none-eabi-objdump -x build-cortex-m0/testApp.elf
- ELF-File disassemblieren (mit Quellcode-Verknüpfung):
arm-none-eabi-objdump -d build-cortex-m0/testApp.elf
arm-none-eabi-objdump -d -S build-cortex-m0/testApp.elf
QEMU und GDB müssen in unterschiedlichen Konsolen (Shells) gestartet werden.
- QEMU Emlation Starten:
qemu-system-arm -M microbit -device loader,file=build-cortex-m0/testApp.elf -nographic -S -s
- GDB zu WEMU verbinden:
gdb-multiarch build-cortex-m0/testApp.elf -ex "target extended-remote localhost:1234" -ex "load"
Das Projekt kann direkt in der IDE geöffnet (ausgechecked) werden. Die CMake Presets werden direkt als build-target angeboten
Der Integrierte Debugger kann direkt genutzt werden. Unter der Run-Configuration kann der QEMU Aufruf als "Native Application" hinzugefügt werden Unter debug Configuration kann eine "Remote Debug" konfiguration angelegt werden, bei der unter "target remote args" die verbindungsdetails angeben und als symbol filedie testApp.elf referenziert werden kann.
Folgende Extensions werden benötigt:
- jkearins.action-buttons-ext
- webfreak.debug
- maxmitti.cmake-tools-fork
- twxs.cmake
- dan-c-underwood.arm
Diese sind ebenfalls als empfohlene Extensions im Workspace definiert.
Nach Installation erkennt VScode die CMake Presets und bietet diese gleich an. Ebenfalls wird in der Statusleiste ein Button Start Qemu hinzugefügt, über diesen die QEmu-Session (also unser Target) gestartet werden kann.