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

665 Comentários

  1. DavidBoype DavidBoype

    Капельница от запоя в Краснодаре рекомендуется при первых признаках алкогольной интоксикации или тяжелого похмелья. Без своевременного медицинского вмешательства состояние человека может резко ухудшиться, привести к развитию осложнений и даже стать угрозой для жизни. Срочная помощь необходима в таких случаях:
    Выяснить больше – http://kapelnica-ot-zapoya-krasnodar7.ru/

  2. Anthonybic Anthonybic

    В клинике проводится лечение различных видов зависимости с применением современных методов и препаратов. Ниже перечислены основные направления, отражающие широту оказываемой медицинской помощи.
    Ознакомиться с деталями – http://narkologicheskaya-klinika-novosibirsk0.ru/

  3. Мы собираем терапию как конструктор из узких модулей. Каждый модуль запускается только при показаниях и выключается сразу после достижения цели — это защищает от «инерции лечения» и возвращает организму пространство для самостоятельной регуляции. Ниже — ориентировочная сетка модулей; фактический состав и дозировки определяет врач на очном осмотре.
    Изучить вопрос глубже – платная наркологическая клиника ростов-на-дону

  4. Keithfraps Keithfraps

    Разовая стабилизация снимает страдание, но не убирает причину употребления. Частая ошибка — воспринимать детокс как «финал». На практике зависимость поддерживается привычными сценариями: стресс, бессонница, конфликт, усталость, «пустота» после отмены, тяга как способ быстро переключить эмоции. Поэтому после острого этапа важно перейти к диагностике зависимости, работе с триггерами и профилактике рецидивов. Это особенно актуально для тех, у кого уже были срывы после коротких периодов трезвости или кто видит повторяющийся цикл: напряжение — употребление — ухудшение — временная ремиссия — повтор.
    Разобраться лучше – chastnaya-narkologicheskaya-klinika-moskva

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

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

  7. KevinArtep KevinArtep

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

  8. DavidBoype DavidBoype

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

  9. JessieWes JessieWes

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

  10. Patrickvab Patrickvab

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

  11. Brianwatry Brianwatry

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

  12. Дальше задача — восстановить управляемость состояния. Это включает снижение интоксикации, коррекцию обезвоживания, выравнивание показателей, уменьшение тревоги и нормализацию сна. Но чтобы результат закрепился, необходим второй слой: работа с триггерами (стресс, конфликт, усталость, одиночество), профилактика «вечернего отката», поддержка режима и понимание, какие симптомы допустимы, а какие требуют повторной оценки. Именно это отличает лечение зависимости от разовой попытки «стало легче — дальше как-нибудь».
    Разобраться лучше – https://narkologicheskaya-klinika-sergiev-posad12.ru/chastnaya-narkologicheskaya-klinika-v-sergievom-posade/

  13. Georgesloma Georgesloma

    Для сохранения приватности мы ведём коммуникацию через одного доверенного представителя, используем нейтральные формулировки в документах, а инструкции выдаём в неброском виде. При невозможности создать тишину дома (ремонт, маленькие дети, гости) предложим краткий «тихий» стационар с отдельным входом и камерным режимом, после чего сопровождение вернётся в домашний формат.
    Исследовать вопрос подробнее – вывод из запоя круглосуточно

  14. ThomasRaw ThomasRaw

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

  15. Matthewrot Matthewrot

    Специалисты применяют методы когнитивно-поведенческой терапии, мотивационного консультирования и техники релаксации. Такие подходы помогают пациенту изменить негативные установки, научиться управлять своими эмоциями и сформировать здоровые модели поведения. Это способствует не только скорейшему выздоровлению, но и долгосрочному поддержанию трезвости.
    Узнать больше – вывод из запоя на дому в красноярске

Deixe um comentário

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