Skip to content

Compile to Teensy 3.0 on Windows using Makefile

Good Night,

If you don’t want to use Arduino IDE (Or Teensy IDE? 😉 to programming and uploading your code to Teensy 3.0 you can use Makefiles.

The last IDE version can be found on PJRC Forum . As he said in the Beta 10 version, there is an Makefile example on “arduino-1.0.3\hardware/teensy/cores/teensy3” but to use it you need to add the arm binaries to your system path. To do this, open your command prompt. Start – execute – cmd.

And then type:

PATH = %PATH%;C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools\arm-none-eabi\bin

[If you don’t want to know the modifications that I did, just jump to the end where you can find a resume]

To guarantee that I will not screw everything, I did a copy of “arduino-1.0.3\hardware/teensy/cores/teensy3” and did my modifications on it. I executed:

cs-make.exe

Receveid this error message:

C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\Projects\Example_not_working>cs-make.exe
C:/Users/X-warrior/Desktop/tools/arm-none-eabi/bin/arm-none-eabi-gcc -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD -DF_CPU=48000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I. -c -o analog.o analog.c
process_begin: CreateProcess(NULL, C:/Users/X-warrior/Desktop/tools/arm-none-eabi/bin/arm-none-eabi-gcc -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD -DF_CPU=48000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH -I. -c -o analog.o analog.c, …) failed.
make (e=2): The system cannot find the file specified.
cs-make.exe: *** [analog.o] Error 2

Checking the Makefile I decided to change some configs and used FULL PATH for it.
TOOLSPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools
COMPILERPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools\arm-none-eabi\bin

The error received was the same, so checking the code again I saw the “abspath” and thought that maybe the problem was this, since I changed my folder location. So I removed all “$(abspath” remember that it has a parenthesis that closes the command. So for example:

$(abspath $(COMPILERPATH)) will be $(COMPILERPATH)

Trying to get it working again with cs-make, it started compiling it, but on the end I received this error:

C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools\arm-none-eabi\bin/arm-none-eabi-objcopy -O ihex -R .eeprom main.elf main.hex
C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools/teensy_post_compile -file=main -path= -tools=C:\Users\X-warrior\Desktop\arduino-1.0.3\hardware\tools
Opening Teensy Loader…
Teensy Loader could not find the file main
cs-make.exe: *** [main.hex] Error 1

Triple checking the Makefile I found “path=$(shell pwd)” and I didn’t remember this pwm command on windows so I tried to execute it and it didn’t work. So I changed it to “path=$(shell echo %cd%)”. Before I start compiling again I decide to clean directory using cs-make clean

I received the following errors:

C:\Users\X-warrior\Desktop\arduino-1.0.3\Projects\Example_not_working>cs-make.exe clean
rm -f *.o *.d main.elf main.hex
process_begin: CreateProcess(NULL, rm -f *.o *.d main.elf main.hex, …) failed.
make (e=2): The system cannot find the file specified.
cs-make.exe: *** [clean] Error 2

And then I noticed that it was calling rm -f which isn’t a windows command too. I changed the rm command to:

del *.o
del *.d
del $(TARGET).elf
del $(TARGET).hex

With this I managed to clean the files and tried to compile again, and… IT WORKS! I did a few tests using main.cpp that was being compiled and uploaded to my Teensy 3. Anyways to work with all that files wasn’t attractive so I decided to go a little further and do some cleaning. So inside my “Project” folder I copied all files excluding Makefile and main.cpp to my new folder inside my project “teensy/”. This way I can compile it without all that files on my working folder. I needed to do a few more changes on Makefile as follow:

C_FILES := $(wildcard *.c) \
$(wildcard $(addprefix teensy/, *.c)) \
$(wildcard $(addprefix teensy/util, *.c)) \
$(wildcard $(addprefix teensy/avr, *.c))
CPP_FILES := $(wildcard *.cpp) \
$(wildcard $(addprefix teensy/, *.cpp)) \
$(wildcard $(addprefix teensy/util, *.cpp)) \
$(wildcard $(addprefix teensy/avr, *.cpp))
OBJS := $(C_FILES:.c=.o) $(CPP_FILES:.cpp=.o)

Linker configuration to:

LDFLAGS = -Os -Wl,–gc-sections -mcpu=cortex-m4 -mthumb -Tteensy/mk20dx128.ld

And to keep it consistent:

$(TARGET).elf: $(OBJS) teensy/mk20dx128.ld
$(CC) $(LDFLAGS) -o $@ $(OBJS)

And then I found this error:

teensy/keylayouts.c:1: fatal error: avr/pgmspace.h: No such file or directory
compilation terminated.
cs-make: *** [teensy/keylayouts.o] Error 1

So I updated the CPPFLAGS to:

CPPFLAGS = -Wall -g -Os -mcpu=cortex-m4 -mthumb -nostdlib -MMD $(OPTIONS) -I. -Iteensy/

And also remembered that the clean should be updated too.

clean:
del *.o
del *.d
del $(TARGET).elf
del $(TARGET).hex
del $(CURRENT_PATH)\teensy\*.o
del $(CURRENT_PATH)\teensy\*.d

And add this on the begin of “Configurations that shouldn’t be updated”

CURRENT_PATH=$(shell echo %cd%)

With all this I managed to get the Makefile working on Windows compiling and uploading for Teensy 3.0

Summary:
You must update TOOLSPATH , COMPILERPATH and use your FULL PATH
Then create a folder “My_Project”
Create another folder inside your project called “teensy” (My_Project/teensy/)
Copy “arduino-1.0.3\hardware/teensy/cores/teensy3/” to “My_Project/teensy/” (subdir too, but not the Makefile)
Add the Makefile that you can download on the end of this post inside “My_Project”
Copy “Meu_Projeto/teensy/main.cpp” too “Meu_Projeto/main.cpp”
Programm inside main.cpp
Compile and upload with cs-make.exe

Makefile to Teensy on Windows

Matheus

Published inCcppTeensywindows

4,853 Comments

  1. crazy_ecOt crazy_ecOt

    Sto giocando su sti giochi da un annetto e onestamente la ruota mi ha regalato piu momenti buoni di quanto pensassi. Non sono certo uno che sbrocca con le puntate, di solito piazzo un paio di euro per giro e via. Il catalogo di Crazy Time e ben fornito: fra le 2000 e passa slot varie contando NetEnt, Play’n GO e Pragmatic, quindi i titoli grossi del calibro di Gates of Olympus, Sweet Bonanza e Book of Dead ci sono tutti.

    Il comparto live e gestita da Evolution e la differenza si sente. Ragazzi e ragazze veri, con tavoli in italiano nelle ore di punta, e i vari game show sono proprio quelli dove butto il grosso delle sessioni. Ogni tanto mi guardo lo storico dei round bonus prima di entrare, piu per abitudine che per logica.

    Il bonus di benvenuto proposta da Crazy Time al momento sta sul 150% fino a 400€ piu 150 free spin, non tutti insieme pero. Esiste anche un piccolo no deposit una volta caricato il documento. Il wagering e 35x, che non e regalato, quindi leggi le condizioni: puoi trovare le condizioni complete andando su crazy time prima di metterci soldi.

    Sul fronte pagamenti ho poco da dire. Uso Neteller e l’accredito arriva in mezza giornata circa, con Mastercard ci vogliono un paio di giorni lavorativi. Prendono pure le crypto, ma non le ho provate. Si parte da 10€, registrazione in tre minuti. Quello che proprio non mi e piaciuto e stata la verifica: due giorni di attesa e un documento respinto senza un motivo chiaro.

    L’assistenza su Crazy Time parla italiano e questo aiuta, va detto che nelle ore piccole ci vuole pazienza. Da telefono funziona senza problemi via browser, l’applicazione c’e per Android va, ma preferisco il sito. Sulla licenza Malta Gaming Authority, non e ADM, cosa che a qualcuno non va giu. Nel frattempo io vado avanti, con la testa a posto.

  2. nonebet_fwkr nonebet_fwkr

    Been playing at Nonebet for about four months now, mainly after work, and might as well say a bit since someone asked me the other day. Signup was painless — email, password, done, although the KYC bit hit me later, which every licensed site does anyway. Minimum was around $10 which is fair.

    Game selection is huge — I’d guess around 4,000 slots and tables last I looked. NetEnt dominates, so Gates of Olympus, Big Bass, the usual suspects are all there. My go-to is Yggdrasil and Betsoft titles when I’m not chasing. NetEnt classics are in there too. Live dealer side is Evolution-powered, so you get real croupiers, roulette running 24/7 plus Crazy Time if that’s your thing.

    Bonus-wise the offer when I joined was 100% to $500 with 150 spins, rollover sits at around 35x which is nothing special. There was a small no deposit thing for a while but it comes and goes. Offers rotate a lot so it’s worth reading the actual T&Cs at wyns casino before you claim anything. What did get on my nerves is the $5 max bet cap during bonus play — breached it once without noticing and lost the lot. Lesson learned.

    Withdrawals have been decent. Crypto came back within a couple of hours both times, Skrill and Neteller took about a day, and the one card withdrawal took nearly four days which felt long. Deposits are instant with Visa, Mastercard or crypto.

    Support answered me at 2am, actual humans once you get past the bot. No app for Nonebet as far as I can tell — it’s just the mobile browser, but it runs fine on my Android. It’s a Curacao licence, so not local regulation, something to be aware of if you’re in Australia.

Leave a Reply

Your email address will not be published. Required fields are marked *