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

5,357 Comments

  1. Марка 12Х18Н10Т — широко используемая нержавеющая сталь в России и СНГ. За счёт содержания титана обеспечивается защита от МКК при эксплуатации в агрессивных средах.

    Подробная информация: сталь 12Х18Н10Т характеристики

    Сплав применяется в химической промышленности — для изготовления труб, ёмкостей и теплообменников. Эквиваленты по международным стандартам: AISI 321, EN 1.4541 (Европа), SUS 321 (Япония).

  2. Марка 12Х18Н10Т — широко используемая нержавеющая сталь в России и СНГ. Благодаря стабилизации титаном материал устойчив к межкристаллитной коррозии даже после длительного нагрева.

    Характеристики и применение: https://stal-12h18n10t.ru/kalkulyator-vesa

    Сплав применяется в машиностроении — для изготовления труб, ёмкостей и теплообменников. Эквиваленты по международным стандартам: AISI 321, EN 1.4541 (Европа), SUS 321 (Япония).

  3. Sr Sr

    Нашёл сайт quick-visa.cc, когда искал, как получить визу в Тайланд для россиян. Очень удобный и понятный сервис, всё расписано по шагам. Кстати, на quick-visa.cc/ru/ можно сразу заполнить анкету онлайн, что экономит кучу времени. У них есть раздел с актуальной информацией по оформлению визы в Таиланд — там всё подробно объясняют, даже если ты в этом совсем не разбираешься. Ещё мне понравилось, что они предлагают помощь с переездом в Тайланд — это особенно удобно для тех, кто планирует надолго. В целом, если искать визовое агентство в Таиланде, то я бы рекомендовал начать с quick-visa.cc, так как там всё чётко и без лишних заморочек.

  4. Sr Sr

    Нашёл сайт quick-visa.cc, когда искал, как получить визу в Тайланд для россиян. Очень удобный и понятный сервис, всё расписано по шагам. Кстати, на quick-visa.cc/ru/ можно сразу заполнить анкету онлайн, что экономит кучу времени. У них есть раздел с актуальной информацией по оформлению визы в Таиланд — там всё подробно объясняют, даже если ты в этом совсем не разбираешься. Ещё мне понравилось, что они предлагают помощь с переездом в Тайланд — это особенно удобно для тех, кто планирует надолго. В целом, если искать визовое агентство в Таиланде, то я бы рекомендовал начать с https://quick-visa.cc/ru/, так как там всё чётко и без лишних заморочек.

  5. kl kl

    Si necesitas retirar amianto de tu vivienda, es importante que tengas en cuenta algunas consideraciones clave. Primero, debes saber que el Real Decreto 396 2006 regula cómo se debe realizar la retirada de uralita. Esto implica que debes acudir a una empresa autorizada para retirar uralita. Además, el precio retirar uralita puede variar dependiendo de varios factores. Si estás buscando información más detallada, te recomiendo que consultes es obligatorio retirar la uralita, donde encontrarás todo lo necesario para tomar la mejor decisión. También puedes averiguar si hay subvenciones para retirar uralita en tu zona y así reducir los costes. Recuerda que este trabajo requiere extremar las precauciones.

  6. sr sr

    Решил недавно съездить в Таиланд и стал изучать, как оформить визу. Оказалось, что для россиян есть несколько вариантов — есть возможность оформить электронную визу. Конечно, всё зависит от цели поездки и её продолжительности. На сайте thailandtouristvisa.net/ru/ нашёл подробную инструкцию, как всё правильно сделать. Там всё понятно расписано, какие документы нужны и куда их подавать. Кстати, если поехать на короткий срок, то виза может вообще не понадобиться. По теме электронная виза в тайланд http://thailandtouristvisa.net/ru/ советую заранее уточнить все детали, чтобы не было проблем на границе. Кстати, на thailandtouristvisa.net есть актуальная информация по визам на 2026 год, так что можно планировать поездку заранее. В общем, всё реально оформить без лишних хлопот, главное — внимательно изучить требования.

  7. I’ve been playing at Tenobet for maybe four months now, mainly slots during the week and some Premier League action come Saturday. To be fair, I only signed up because a lad from my local mentioned it, and I half expected it to be rubbish.\n\nThe slots side is genuinely big — they claim over 2,500 titles if you count everything. The usual suspects are there: Pragmatic, Play’n GO, Play’n GO, Big Time Gaming. My go-tos are Sweet Bonanza and Book of Dead, although the Megaways stuff is where I lose the most. Live side is Evolution, which is what you want — actual dealers, roulette round the clock, plus Crazy Time and Lightning Roulette.\n\nThe sign-up offer at Tenobet maxes at ?125 matched plus some free spins, and the wagering was 30x — that’s about standard. No free-money thing unless I missed it, you need a tenner to kick it off. To check what’s live right now have a look at teno bet rather than trusting my memory. My gripe: the spins expire in 7 days and I lost half of mine to being busy.\n\nCashouts are the bit I actually care about. E-wallet took roughly 18 hours the two times I tried, debit card was three working days, which is just how cards are. They do Neteller, Mastercard and crypto, though I haven’t bothered with Bitcoin. Verification was the usual — passport and a utility bill, sorted same evening.\n\nThere’s no standalone app that I found, but a browser version and loads quick enough on my phone — I use it more than desktop now. Live chat at Tenobet took a few minutes when I asked about a stuck bonus, actual person, decent English. Licensed and regulated for UK players, which is why I stuck around.

Leave a Reply

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