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

1,458 Comments

  1. JamesFloah JamesFloah

    При наличии зависимости от алкоголя или наркотиков часто возникает ситуация, когда самостоятельные попытки избавиться от проблемы не дают результата. В таких случаях обращение в наркологический стационар становится необходимым для более глубокой и профессиональной помощи. Стационарное лечение предполагает круглосуточный контроль и медицинскую помощь, что особенно важно при острых состояниях, таких как алкогольная интоксикация или наркотическое отравление. В процессе лечения могут быть предложены кодирование, а также вывод из запоя или наркотической зависимости, а при необходимости — длительный прием с возможностью лечения на летний период.
    Получить дополнительную информацию – наркологическая помощь стационар санкт-петербург

  2. EmmettBok EmmettBok

    Выезд нарколога на дом — это медицинская услуга, которая подразумевает не только экстренную помощь, но и полноценное обследование пациента в комфортных для него условиях. В наркологической клинике «Частный медик 24» мы обеспечиваем профессиональное лечение на дому, которое включает в себя несколько важных этапов, чтобы стабилизировать состояние пациента, улучшить его самочувствие и снизить риски дальнейших осложнений.
    Выяснить больше – вызов нарколога на дом в самаре

  3. Jasonfen Jasonfen

    Капельница от похмелья в Екатеринбурге с инфузионной терапией и быстрым облегчением симптомов в наркологической клинике «Частный медик 24»
    Подробнее можно узнать тут – https://kapelnicza-ot-pokhmelya-ekaterinburg-7.ru

  4. Abrahamkit Abrahamkit

    Нарколог на дом в Москве — это формат помощи, который рассматривают в тех случаях, когда после употребления алкоголя больному требуется врачебный осмотр без поездки в клинику. Чаще всего обращение связано с запоем, выраженным похмельным синдромом, нарушением сна, слабостью, тремором, тревогой, обезвоживанием, сердцебиением, скачками давления и общим ухудшением самочувствия. Дальнейшая тактика зависит от состояния больного на момент осмотра, длительности употребления алкоголя, возраста и сопутствующих заболеваний.
    Ознакомиться с деталями – нарколог на дом вывод в москве

  5. RogerMOf RogerMOf

    Выезд нарколога на дом в Самаре — это комплексный подход к лечению, который включает несколько этапов. Врач, приехавший на место, не ограничивается одной процедурой, а проводит полноценный осмотр, диагностирует состояние пациента, определяет причину ухудшения самочувствия и подбирает индивидуальную терапию. Наиболее часто при выезде нарколога на дом используются капельницы, антиеметики и препараты для стабилизации состояния пациента, снятия симптомов абстиненции и улучшения общего самочувствия.
    Углубиться в тему – запой нарколог на дом самара

  6. Каждый из этапов важен для успешного лечения наркомании и требует квалифицированной наркологической медицинской помощи. Реабилитационные программы, предлагаемые в Москве, часто включают в себя все эти компоненты, при этом в ряде случаев консультации могут предоставляться бесплатно, что способствует комплексному подходу к решению проблемы зависимости.
    Подробнее – алкоголик реабилитация наркоманов

  7. Rodolfobesee Rodolfobesee

    Обращение в наркологический стационар в Санкт-Петербурге может стать важным шагом для людей, страдающих от алкогольной или наркотической зависимости. Стационарное лечение предоставляет пациентам не только медицинскую помощь, но и психологическую поддержку, необходимую для успешной реабилитации. Это подход, ориентированный на комплексное восстановление здоровья, физическое и психоэмоциональное состояние пациента.
    Подробнее – narkologicheskij-staczionar-sankt-peterburg-2.ru/

Leave a Reply

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