From 491a54491908de8536dd1610807004968d472fb6 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Fri, 23 Feb 2024 10:39:57 +0100 Subject: [PATCH] changes --- .gitignore | 3 ++ Makefile | 4 +- docs/signals01.png | Bin 0 -> 333878 bytes main.S | 113 +++++++++++++++++++++++++++++++++++++-------- 4 files changed, 100 insertions(+), 20 deletions(-) create mode 100644 .gitignore create mode 100644 docs/signals01.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5488f5d --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.o +firmware.* + diff --git a/Makefile b/Makefile index 4038ebc..383bd20 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,13 @@ MCU=msp430g2553 ARTIFACT=firmware COMMON=-Wall -mmcu=$(MCU) -std=gnu99 -I $(TOOLCHAIN_PREFIX)/include -Os -g0 -fdata-sections -ffunction-sections CFLAGS=$(COMMON) -ASFLAGS=$(COMMON) +ASFLAGS=$(COMMON) -D__ASSEMBLER__ LDFLAGS=-L $(TOOLCHAIN_PREFIX)/include -Wl,-Map,firmware.map -nostdlib -nostartfiles -T $(MCU).ld $(ARTIFACT).elf: main.o $(CC) -o $@ $(LDFLAGS) $^ - $(OBJDUMP) -d $(ARTIFACT).elf > $(ARTIFACT).txt + $(OBJDUMP) -D $(ARTIFACT).elf > $(ARTIFACT).txt .c.o: diff --git a/docs/signals01.png b/docs/signals01.png new file mode 100644 index 0000000000000000000000000000000000000000..cd378b886224244e9ddabe8657200154a509da33 GIT binary patch literal 333878 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