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

413 Comments

  1. Danielheemi Danielheemi

    Коммерческий и государственный тендер — это конкурентная процедура выбора поставщика товаров или оказания услуг. Заказчик размещает требования, а компании подают заявки и участвуют в торгах.
    Эксклюзивная информация для вас – https://tendernoe-soprovozhdenie-rostov-na-donu.ru

  2. Matthewnip Matthewnip

    Комбинирование методов позволяет одновременно решать задачи стабилизации, профилактики и возвращения к повседневной активности.
    Узнать больше – http://narkologicheskaya-klinika-lugansk0.ru

  3. Если вовремя не принять меры, состояние может усугубиться, повышая риск серьёзных осложнений. Наиболее эффективным способом очищения организма является постановка капельницы, которая помогает быстро стабилизировать состояние. Клиника «Курс на ясность» оказывает экстренную наркологическую помощь с выездом врачей на дом 24/7.
    Получить дополнительную информацию – поставить капельницу от запоя на дому красноярск

  4. Когда зависимость выходит из-под контроля, семья сталкивается с двумя видами неопределённости — медицинской и организационной. На одной чаше весов тремор, скачки давления и пульса, рвота, обрывочный сон и нарастающая тревога; на другой — страх огласки, очереди, ожидание «до завтра» и бесконечные попытки уговорить себя «перетерпеть». «ХимкиМед Центр» снимает обе неопределённости управляемым маршрутом: у нас нет общих залов с «публичными» ожиданиями, приёмы разнесены по времени, длинные разговоры заменены коротким и предметным интервью, а назначения объясняются простым языком — что делаем сегодня, чего ждать через час, какие ощущения будут нормальными и при каких признаках нужно срочно связаться. Мы не лечим «пакетами ради прайса»: схема строится от фактов — длительность употребления, сопутствующие заболевания, уже принятые препараты, исходные показатели (АД, пульс, сатурация), выраженность тремора и качество сна. Такой реализм экономит силы, снижает тревогу и чаще уже в первые сутки приводит к главному — к первой ровной ночи, после которой решения принимаются спокойно и по плану.
    Получить дополнительные сведения – http://narkologicheskaya-klinika-himki9.ru/

  5. Danielheemi Danielheemi

    Тендерный специалист помогает разобраться в особенностях каждого закона, а также обеспечивает грамотное сопровождение всех процедур. Это особенно важно для компаний, которые только начинают участвовать в торгах и не имеют опыта работы с государственными контрактами.
    Изучите все нюансы – https://tendernoe-soprovozhdenie-rostov-na-donu.ru/

  6. Вывод из запоя в Луганске рассматривается как последовательное медицинское вмешательство, направленное на снижение интоксикации, стабилизацию витальных показателей и профилактику острых осложнений. На фоне длительного употребления алкоголя у пациента формируются нарушения водно-электролитного баланса, колебания артериального давления, тахикардия, расстройства сна и повышенная тревожность. Коррекция этих состояний требует наблюдаемого формата помощи, применения стандартизированных протоколов и междисциплинарного взаимодействия.
    Исследовать вопрос подробнее – вывод из запоя вызов на дом

  7. Stevemaw Stevemaw

    Лечение алкоголизма в Луганске организуется по принципам доказательной медицины и включает медицинскую, психотерапевтическую и социальную компоненты. Цель — безопасно снять острые проявления заболевания, стабилизировать соматическое состояние, снизить тягу и закрепить новые модели поведения. Индивидуальные планы формируются с учётом стадии расстройства, сопутствующих заболеваний, предшествующего опыта лечения и уровня семейной поддержки.
    Изучить вопрос глубже – https://lechenie-alkogolizma-lugansk0.ru/kodirovka-v-luganske-czeny/

  8. Devintaire Devintaire

    Вызов нарколога на дом — это безопасный и деликатный способ быстро купировать симптомы алкогольной интоксикации, стабилизировать самочувствие и начать восстановление без госпитализации. В наркологической клинике «МедЛиния Ставрополь» домашние визиты организованы как чёткий медицинский сервис: врач приезжает с портативной диагностикой, подбирает индивидуальный состав капельниц, контролирует витальные показатели и оставляет понятный план дальнейших действий. Все процедуры проводятся анонимно, а оформление документов и логистика построены так, чтобы не нарушать приватность пациента и его семьи.
    Углубиться в тему – вызвать врача нарколога на дом

  9. BarryEthig BarryEthig

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

  10. Sammiedaync Sammiedaync

    Если вовремя не принять меры, состояние может усугубиться, повышая риск серьёзных осложнений. Наиболее эффективным способом очищения организма является постановка капельницы, которая помогает быстро стабилизировать состояние. Клиника «Курс на ясность» оказывает экстренную наркологическую помощь с выездом врачей на дом 24/7.
    Узнать больше – капельница от запоя на дому круглосуточно

Leave a Reply

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