From b006b3c355616c89d66084880b5a5a87f0241009 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 9 Oct 2021 23:41:40 +0200 Subject: Basic build environment for Teensy 4.0 programs --- test/Makefile | 26 ++++++++++++++++++++++++++ test/blink.cpp | 13 +++++++++++++ test/counter.cpp | 19 +++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 test/Makefile create mode 100644 test/blink.cpp create mode 100644 test/counter.cpp (limited to 'test') diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..0891b70 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,26 @@ +MCU = IMXRT1062 +MCU_DEF = ARDUINO_TEENSY40 + +OPTIONS = -DF_CPU=600000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH +OPTIONS += -D__$(MCU)__ -DARDUINO=10813 -DTEENSYDUINO=154 -D$(MCU_DEF) + +CPU_OPTIONS = -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16 -mthumb + +CPPFLAGS = $(NIX_CFLAGS_COMPILE) -Wall -g -O2 $(CPU_OPTIONS) -MMD $(OPTIONS) -I. -ffunction-sections -fdata-sections +CXXFLAGS = -std=gnu++20 -felide-constructors -fno-exceptions -fpermissive -fno-rtti -Wno-error=narrowing + +LDFLAGS += -Os -Wl,--gc-sections,--relax $(CPU_OPTIONS) + +LIBS = -lm -lstdc++ -lteensy-core + +CPP_FILES := $(wildcard *.cpp) +TARGETS := $(CPP_FILES:.cpp=.hex) + +%.elf: %.o + $(CC) $(LDFLAGS) -o $@ $< $(LIBS) + +%.hex: %.elf + $(SIZE) $< + $(OBJCOPY) -O ihex -R .eeprom $< $@ + +all: $(TARGETS) diff --git a/test/blink.cpp b/test/blink.cpp new file mode 100644 index 0000000..ec7b3bd --- /dev/null +++ b/test/blink.cpp @@ -0,0 +1,13 @@ +#include + +extern "C" int main(void) { + pinMode(13, OUTPUT); + + while (true) { + digitalWrite(13, HIGH); + delay(500); + digitalWrite(13, LOW); + delay(500); + } +} + diff --git a/test/counter.cpp b/test/counter.cpp new file mode 100644 index 0000000..680e233 --- /dev/null +++ b/test/counter.cpp @@ -0,0 +1,19 @@ +#include + +extern "C" int main(void) { + for (unsigned iPin=16; iPin <= 20; ++iPin) { + pinMode(iPin, OUTPUT); + } + + std::size_t i = 0; + + while (true) { + digitalWrite(16, (i % 2) > 0); + digitalWrite(17, (i % 4) > 1); + digitalWrite(18, (i % 8) > 3); + digitalWrite(19, (i % 16) > 7); + digitalWrite(20, (i % 32) > 15); + delay(analogRead(7)); + i++; + } +} -- cgit v1.2.3