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

413 Comentários

  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.
    Узнать больше – капельница от запоя на дому круглосуточно

Deixe um comentário

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