88 lines
2.8 KiB
Makefile
88 lines
2.8 KiB
Makefile
# Set toolchain path if arm-none-eabi- binaries are not in user path
|
|
#TOOLCHAIN_PATH ?=
|
|
TERMINAL ?= gnome-terminal -e
|
|
|
|
FLASH_START_ADDRESS = $(shell $(OBJDUMP) -h $(ELF) -j .text | grep .text | awk '{print $$4}')
|
|
|
|
ifdef SEGGER_SERIAL
|
|
JLINKEXE_OPTION = -SelectEmuBySn $(SEGGER_SERIAL)
|
|
JLINKGDBSERVER_OPTION = -select USB=$(SEGGER_SERIAL)
|
|
endif
|
|
|
|
MAKE_BUILD_FOLDER = mkdir -p $(OUTPUT_PATH)
|
|
|
|
JLINK = -JLinkExe $(JLINK_OPTIONS) $(JLINKEXE_OPTION)
|
|
JLINKGDBSERVER = JLinkGDBServer $(JLINK_OPTIONS) $(JLINKGDBSERVER_OPTION)
|
|
|
|
SOFTDEVICE_OUTPUT = $(OUTPUT_PATH)$(notdir $(SOFTDEVICE))
|
|
|
|
clean:
|
|
rm -rf $(OUTPUT_PATH)
|
|
rm -f *.jlink
|
|
rm -f JLink.log
|
|
rm -f .gdbinit
|
|
rm -f bulk-program/*.hex
|
|
|
|
flash: all flash.jlink
|
|
$(JLINK) flash.jlink
|
|
|
|
flash.jlink:
|
|
printf "r\nloadbin $(BIN) $(FLASH_START_ADDRESS)\nr\ng\nexit\n" > flash.jlink
|
|
|
|
flash-softdevice: erase-all flash-softdevice.jlink
|
|
ifndef SOFTDEVICE
|
|
$(error "You need to set the SOFTDEVICE command-line parameter to a path (without spaces) to the softdevice hex-file")
|
|
endif
|
|
|
|
$(OBJCOPY) -Iihex -Obinary $(SOFTDEVICE) $(SOFTDEVICE_OUTPUT:.hex=.bin)
|
|
$(JLINK) flash-softdevice.jlink
|
|
|
|
flash-softdevice.jlink:
|
|
# Write to NVMC to enable write. Write mainpart, write UICR. Assumes device is erased.
|
|
printf "w4 4001e504 1\nloadbin \"$(SOFTDEVICE_OUTPUT:.hex=.bin)\" 0\nr\ng\nexit\n" > flash-softdevice.jlink
|
|
|
|
recover: recover.jlink erase-all.jlink pin-reset.jlink
|
|
$(JLINK) recover.jlink
|
|
$(JLINK) erase-all.jlink
|
|
$(JLINK) pin-reset.jlink
|
|
|
|
recover.jlink:
|
|
printf "si 0\nt0\nsleep 1\ntck1\nsleep 1\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\nt0\nsleep 2\nt1\nsleep 2\ntck0\nsleep 100\nsi 1\nr\nexit\n" > recover.jlink
|
|
|
|
pin-reset.jlink:
|
|
printf "w4 40000544 1\nr\nexit\n" > pin-reset.jlink
|
|
|
|
pin-reset: pin-reset.jlink
|
|
$(JLINK) pin-reset.jlink
|
|
|
|
reset: reset.jlink
|
|
$(JLINK) reset.jlink
|
|
|
|
reset.jlink:
|
|
printf "r\ng\nexit\n" > reset.jlink
|
|
|
|
erase-all: erase-all.jlink
|
|
$(JLINK) erase-all.jlink
|
|
|
|
erase-all.jlink:
|
|
# Write to NVMC to enable erase, do erase all, wait for completion. reset
|
|
printf "w4 4001e504 2\nw4 4001e50c 1\nsleep 100\nr\nexit\n" > erase-all.jlink
|
|
|
|
startdebug: debug-gdbinit
|
|
$(TERMINAL) "$(JLINKGDBSERVER) -port $(GDB_PORT_NUMBER)"
|
|
sleep 1
|
|
$(TERMINAL) "$(GDB) $(ELF)"
|
|
|
|
debug-gdbinit:
|
|
printf "target remote localhost:$(GDB_PORT_NUMBER)\nbreak main\n" > .gdbinit
|
|
|
|
.PHONY: flash flash-softdevice erase-all startdebug
|
|
|
|
test:
|
|
gcc -g -std=gnu99 -Wall -Werror -I.. -DHOST_BUILD -lcrypto block.c aes.c cmac.c tests/test_cmac.c -o tests/test_cmac
|
|
./tests/test_cmac
|
|
gcc -g -std=gnu99 -Wall -Werror -I.. -DHOST_BUILD -lcrypto block.c aes.c ctr.c tests/test_ctr.c -o tests/test_ctr
|
|
./tests/test_ctr
|
|
gcc -g -std=gnu99 -Wall -Werror -I.. -DHOST_BUILD -lcrypto block.c aes.c ctr.c cmac.c eax.c tests/test_eax.c -o tests/test_eax
|
|
./tests/test_eax
|