diff --git a/chef/Makefile b/chef/Makefile index 9347001..4414d75 100644 --- a/chef/Makefile +++ b/chef/Makefile @@ -7,7 +7,7 @@ LIBS= ## Drapeaux pour le linker LDFLAGS_CUSTOM += -lpthread -lwiringPi ## Drapeaux pour le compilateur -CFLAGS= +CFLAGS_CUSTOM += -g ## Générateurs de drapeaux pour les bibliothèques PKG_CONFIG=pkg-config @@ -25,11 +25,9 @@ CFLAGS += -Wall -Wextra -pedantic -g -DDEBUG # Génération des fichiers éxecutables bin/%: obj/%.o - $(CXX) $(LDFLAGS_CUSTOM) $^ -o $@ -# On enlève les symboles inutiles pour gagner en temps de chargement de l'éxecutable -ifeq ($(DEBUG),no) - strip $@ -endif + $(CC) $(LDFLAGS) $(LDFLAGS_CUSTOM) $^ -o $@ + $(OBJCOPY) --only-keep-debug $@ $@.debug + $(STRIP) --strip-debug --strip-unneeded $@ # RÈGLES DE COMPILATION @@ -37,18 +35,21 @@ endif default: bin/testpin bin/premier bin/local bin/testI2c # Binaires (dont il faut spécifier les objets explicitement) -bin/premier: obj/CF.o obj/movement.o obj/debug.o obj/position.o +OBJS=CF movement debug position ihm lcd i2c points parcours +bin/premier: $(addprefix obj/,$(addsuffix .o,$(OBJS))) bin/testPin: obj/testPin.o +# TODO ↑ Enlever (remplacé par IHM) bin/testI2c: obj/testI2c.o obj/i2c.o obj/srf08.o obj/lcd.o +# Programme de test sur PC, n'embarquant pas wiringPi bin/local: obj/local.o obj/debug.o - $(CC) -lpthread $^ -o $@ + $(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -lpthread $^ -o $@ # Génération des fichiers objets obj/%.o: src/%.c src/%.h - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -c $< -o $@ obj/%.o: src/%.c - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -c $< -o $@ # OUTILS DE DÉVELOPPEMENT diff --git a/raspberrypi/.gitignore b/raspberrypi/.gitignore index c5b25db..546f90f 100644 --- a/raspberrypi/.gitignore +++ b/raspberrypi/.gitignore @@ -3,3 +3,4 @@ output principalconf.sh sshconf sshkey* +gdbcommands diff --git a/raspberrypi/Makefile b/raspberrypi/Makefile index e822ccf..c12c60e 100644 --- a/raspberrypi/Makefile +++ b/raspberrypi/Makefile @@ -9,6 +9,12 @@ SDCARD=/dev/mmcblk0 CON_MODE=wifi ETH_IFACE=enp3s0 +# Debug +TARGET_DIR=$(PWD)/buildroot/output/target/ +EXECDIR=/opt/chef/ +EXECPATH=bin/premier +GDBPORT=2346 + # SYSTÈME D'EXPLOITATION # Configuration @@ -109,3 +115,24 @@ upgrade-chef: chef ssh -F sshconf principal true rsync --rsh 'ssh -F sshconf' --archive --chown root:root buildroot/output/target/opt/chef principal:/opt/ +run: + ssh -F sshconf principal true + ssh -F sshconf principal /etc/init.d/S50chef restart + +gdbcommands: + echo "set sysroot $(TARGET_DIR)" > "$@" + echo "exec-file $(TARGET_DIR)$(EXECDIR)$(EXECPATH)" >> "$@" + echo "symbol-file $(TARGET_DIR)$(EXECDIR)$(EXECPATH).debug" >> "$@" + echo "target remote :$(GDBPORT)" >> "$@" + echo "continue" >> "$@" + +debug: gdbcommands + ssh -F sshconf principal true + ssh -F sshconf principal /etc/init.d/S50chef stop + ssh -F sshconf principal killall gdbserver; true + ssh -F sshconf principal -L $(GDBPORT):127.0.0.1:$(GDBPORT) 'cd $(EXECDIR); gdbserver 127.0.0.1:$(GDBPORT) $(EXECPATH)' & sleep 1 + buildroot/output/host/usr/bin/arm-linux-gnueabihf-gdb -x gdbcommands; \ + ssh -F sshconf principal /opt/chef/lcdOff.sh; \ + ssh -F sshconf principal killall gdbserver; true + +.PHONY: gdbcommands diff --git a/raspberrypi/configs/cdfprincipal_defconfig b/raspberrypi/configs/cdfprincipal_defconfig index af4c8e0..fcf9654 100644 --- a/raspberrypi/configs/cdfprincipal_defconfig +++ b/raspberrypi/configs/cdfprincipal_defconfig @@ -77,6 +77,9 @@ BR2_PACKAGE_PPPD=y # Pour faire plaisir à Geoffrey BR2_PACKAGE_HTOP=y +# Pour debugguer +BR2_PACKAGE_GDB=y + # Pour uploader sur le Arduino BR2_TOOLCHAIN_BUILDROOT_WCHAR=y BR2_SHARED_LIBS=y