Ir ao conteúdo

Compilando para Teensy 3.0 no Windows utilizando Makefile

Boa tarde,

Se você não quer utilizar a Arduino IDE (Teensy IDE?) para programar e enviar seus códigos para o Teensy 3.0 você pode utilizar o Makefile.

A última versão da IDE por enquanto você consegue no Forum do PJRC . Como ele diz, existe um exemplo de Makefile na pasta: “arduino-1.0.3\hardware/teensy/cores/teensy3” porém para utiliza-lo você precisa fazer alguns passos como adicionar o “arduino-1.0.3\hardware\tools\arm-none-eabi\bin” ao seu PATH para que possa utilizar os executaveis desta pasta tranquilamente. Para isso abra o seu Prompt de Comando: Iniciar – Executar – CMD

E em seguida insira o seguinte comando:

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

[Se você não quer entender as modificações que eu realizei va para o final da publicação]

Para garantir que não estragaria o arquivo, fiz uma copia completa do diretório. Em seguida ao executar o

cs-make.exe

Recebia a seguinte mensagem de erro:

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

Verificando o Makefile decidi alterar as configurações das váriaveis para caminho completo já que eu fiz uma copia do teeensy/core.
TOOLSPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools
LIBRARYPATH = Deixei como estava
COMPILERPATH = C:\CAMINHO_PARA_O_ARDUINO\arduino-1.0.3\hardware\tools\arm-none-eabi\bin

O erro continuou o mesmo, continuando a entender o código percebi os “abspath” e pensei que poderia estar dando problema por eu estar usando caminhos absolutos então removi todos os “$(abspath” lembrando que o mesmo possui um parêntesis que fecha o comando. Então por exemplo:

$(abspath $(COMPILERPATH)) ficará $(COMPILERPATH)

Tentando compilar novamente com cs-make, iniciou a compilar mas no final aconteceu o seguinte erro:

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

Analisando o arquivo encontrei: “path=$(shell pwd)” e me pareceu que pwd não era um comando válido de shell em windows. Testei no console, e não era. Então alterei para “path=$(shell echo %cd%)”. Antes de compilar novamente decidi tentar limpar os arquivos que já foram gerados com cs-make clean

O erro encontrado foi:

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

E me pareceu que ele estava chamando rm -f no windows o que também não é um comando válido. Alterei o comando rf para:

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

Com isso consegui limpar os arquivos. E tentei compilar novamente e funcionou! Realizei uns testes alterando o main.cpp e estava sendo compilado e enviado ao meu Teensy 3.0 como deveria ser. De qualquer forma trabalhar com todos aqueles arquivos e os meus juntos seria um tanto quanto trabalhoso, então copiei todos os arquivos com exceção do Makefile e do main.cpp para teensy/ dentro do meu projeto. Assim eu conseguiria compilar com o Makefile sem ter todos os arquivos em uma confusão. Alterei os CPP e C files para:

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)

As configurações do linker para:

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

E para ficar consistente:

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

E encontrei o seguinte erro:

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

Alterei as CPPFLAGS para:

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

E também lembrei que o clean deveria ser alterado para:

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

E adicionei:

CURRENT_PATH=$(shell echo %cd%)

Logo após as configurações que não devem ser alteradas pelo usuário. Com isso consegui utilizar o Makefile no Windows 7 para compilar e fazer upload para o Teensy 3.0 e mantendo os arquivos separados.

Resumo:
Você deve editar as váriaveis TOOLSPATH , COMPILERPATH e LIBRARYPATH para o seu caminho COMPLETO.
Em seguida crie uma pasta para o seu projeto “Meu_Projeto”
Crie uma pasta dentro dela chamada “teensy” (Meu_Projeto/teensy/)
Copie “arduino-1.0.3\hardware/teensy/cores/teensy3/” para “Meu_Projeto/teensy/” (os sub-diretórios também, mas o Makefile não)
Adicione o Makefile que você encontra no final deste post em “Meu_Projeto”
Copie o arquivo “Meu_Projeto/teensy/main.cpp” para o “Meu_Projeto/main.cpp”
Programe apartir do main.cpp
Compile e faça Upload com cs-make

Makefile para Teensy no Windows

Espero que seja útil,
Matheus

Publicado emCcppTeensywindows

1.558 Comentários

  1. MichaelDeess MichaelDeess

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

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

  3. HowardInfoF HowardInfoF

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

  4. JerryWoods JerryWoods

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

  5. BillyBic BillyBic

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

  6. LorenzoCap LorenzoCap

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *