From 8b1820e667ff258811a4079250443bc4f7105ee3 Mon Sep 17 00:00:00 2001 From: Ilya Elenskiy Date: Sun, 18 Apr 2021 17:09:22 +0200 Subject: [PATCH] avr-debug build fixed --- Firmware/platformio.ini | 31 ++- Firmware/src/main.c | 720 +++++------------------------------------------- 2 files changed, 99 insertions(+), 652 deletions(-) diff --git a/Firmware/platformio.ini b/Firmware/platformio.ini index 6ebeb44..3f8713d 100644 --- a/Firmware/platformio.ini +++ b/Firmware/platformio.ini @@ -1,10 +1,5 @@ ; PlatformIO Project Configuration File ; -; Build options: build flags, source filter -; Upload options: custom upload port, speed and extra flags -; Library options: dependencies, extra library storages -; Advanced options: extra scripting -; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html @@ -14,8 +9,13 @@ libdeps_dir = depends [env] platform = atmelavr -board = emgdmm_v3 +; solves avr-debugger issue https://github.com/jdolinay/avr_debug/issues/19 +platform_packages = + toolchain-atmelavr@~1.70300.0 ; use GCC AVR 7.3.0+ + +board = emgdmm_v3 +monitor_speed = 9600 test_transport = custom test_speed = 115200 @@ -25,10 +25,25 @@ lib_deps = [env:release] ; for flash via bootloader ; keep defaults, see board definitions for programming support +[env:debug] ; for debugging using avr-stub, see documentation +build_type = debug +build_flags = + -D DEBUG + -D GDBSTUB + -D AVR8_BREAKPOINT_MODE=2 + ;-D __AVR_ATmega1284P__ ; required by avr8-stub.c + +debug_tool = avr-stub + +; GDB stub implementation +lib_deps = + ${env.lib_deps} + jdolinay/avr-debugger @ ^1.3 -[env:debug] ; for JTAG bootloader flashing and potentialy debugging once supported +[env:jtag] ; for JTAG bootloader flashing and potentialy debugging once supported build_type = debug -build_flags = -D DEBUG +build_flags = + -D DEBUG upload_protocol = jtag3 upload_flags = -p, atmega1284 ; fix signature error with JTAGICE diff --git a/Firmware/src/main.c b/Firmware/src/main.c index 41a481f..0145242 100644 --- a/Firmware/src/main.c +++ b/Firmware/src/main.c @@ -5,7 +5,12 @@ #include #include -#include "uart.h" +#ifdef GDBSTUB + #include "avr8-stub.h" +#else + #include "uart.h" +#endif + #include "lcd.h" #include "twi.h" #include "dataflash.h" @@ -25,649 +30,65 @@ ; \ } +/* clang-format off */ const uint8_t PROGMEM emg_logo[640] = - { - 0x80, - 0xe0, - 0xf0, - 0xf8, - 0xf8, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xf8, - 0xf8, - 0xf0, - 0xe0, - 0x80, - 0x00, - 0x00, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xf0, - 0xf8, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xf8, - 0xf8, - 0xf0, - 0xe0, - 0xc0, - 0xe0, - 0xf0, - 0xf8, - 0xf8, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xf8, - 0xf8, - 0xf0, - 0xe0, - 0x80, - 0x00, - 0x00, - 0x80, - 0xe0, - 0xf0, - 0xf8, - 0xf8, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xfc, - 0xf8, - 0xf8, - 0xf0, - 0xe0, - 0x80, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xf7, - 0xf3, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf1, - 0xf7, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x1f, - 0x07, - 0x03, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x03, - 0x0f, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x07, - 0x03, - 0x03, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x03, - 0x07, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x1f, - 0x03, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x01, - 0x03, - 0x07, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xf1, - 0xe1, - 0xc1, - 0xc1, - 0x81, - 0x81, - 0x81, - 0x81, - 0xc1, - 0xc1, - 0xc1, - 0xc1, - 0xc1, - 0xc1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0xe1, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xf0, - 0xe0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xc0, - 0xe0, - 0xf0, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x00, - 0x01, - 0x07, - 0x07, - 0x0f, - 0x0f, - 0x0f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x0f, - 0x0f, - 0x0f, - 0x07, - 0x07, - 0x03, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x00, - 0x00, - 0x00, - 0x03, - 0x07, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x0f, - 0x8f, - 0xcf, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x1f, - 0x0f, - 0x07, - 0x01, +{ + 0x80, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0xf8, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0xc0, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x80, 0xe0, 0xf0, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xfc, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf3, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, + 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf7, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0x07, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x1f, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf1, 0xe1, 0xc1, 0xc1, 0x81, 0x81, 0x81, 0x81, 0xc1, 0xc1, 0xc1, + 0xc1, 0xc1, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, + 0xe1, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xe0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xe0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x07, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x8f, 0xcf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x0f, 0x07, 0x01, }; +/* clang-format on */ void demo_backlight(void); void demo_start(void); @@ -687,13 +108,22 @@ int main(void) // set PB0-PB3 on high-level PORTB |= 0x0F; // Required for DMM Board DMM Board 2013 +#ifdef GDBSTUB + debug_init(); // required for debugging via UART +#else + UART_Init(); +#endif + LCD_Init(); - UART_Init(); + sei(); // enable interrupts after drivers initialized demo_start(); demo_show_emg(); - demo_uart(); +#ifndef GDBSTUB // UART unavailable if used by GDB stub for debugging + demo_uart(); +#endif + demo_display(); demo_backlight(); demo_music(); @@ -759,6 +189,7 @@ void demo_show_emg(void) wait_joy_button(); } +#ifndef GDBSTUB void demo_uart(void) { unsigned char loop = 1; @@ -841,6 +272,7 @@ void demo_uart(void) _delay_ms(200); } } +#endif void demo_music(void) {