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

211 Comentários

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

  2. Williamemusa Williamemusa

    Комплексный подход позволяет не просто стабилизировать физическое состояние пациента, но и обеспечить долговременный результат. Каждый этап лечения сопровождается медицинским наблюдением и корректируется по мере улучшения состояния.
    Разобраться лучше – http://narkologicheskaya-klinika-v-krd19.ru/narkolog-krasnodar-anonimno/

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

  4. RolandGuerm RolandGuerm

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

  5. Rustylot Rustylot

    Когда требуется нарколог на дом, обычно речь идёт не о «консультации на будущее», а о ситуации, которая уже мешает жить здесь и сейчас: затяжной запой, тяжёлая абстиненция, сильная тревога и бессонница, тремор, скачки давления, рвота, выраженная слабость, паника или состояние, при котором человек не готов ехать в клинику. В Пушкино выездная помощь востребована ещё и потому, что многим важно сохранить приватность и не вовлекать лишних людей: дома проще согласиться на осмотр, не тратить силы на дорогу и избежать стрессовой смены обстановки. В наркологической клинике «Стабильный Выбор» выезд врача строится по принципу «быстро, но безопасно»: сначала оценка состояния и рисков, затем индивидуальная тактика стабилизации и понятный план на ближайшие часы и сутки.
    Изучить вопрос глубже – [url=https://narkolog-na-dom-pushkino12.ru/]skolko-stoit-narkolog-na-domu[/url]

  6. HenryTrurn HenryTrurn

    Запой — это состояние, в котором алкоголь перестаёт быть «причиной расслабления» и становится механизмом удержания человека в замкнутом круге. Выпил — полегчало на короткое время — через несколько часов снова плохо — снова выпил. Чем дольше длится запой, тем сильнее истощается организм: разрушается сон, растёт тревога, усиливается тремор, потливость, скачет давление, учащается пульс, появляются тошнота и рвота, слабость и раздражительность. В Орехово-Зуево многие пытаются «дотянуть до утра» или «выйти сами», но именно в такие моменты состояние часто ухудшается вечером и ночью, и человек принимает рискованные решения — снова пьёт или смешивает алкоголь со снотворными, лишь бы уснуть. Медицинский вывод из запоя нужен, чтобы разорвать этот сценарий безопасно: снизить интоксикацию, стабилизировать жизненно важные показатели и помочь пережить первые сутки без возврата к алкоголю.
    Исследовать вопрос подробнее – chastnyj vyvod iz zapoya

  7. Лечение зависимости строится поэтапно: диагностика, стабилизация, восстановление сна и эмоциональной устойчивости, работа с тягой и триггерами, профилактика рецидива, сопровождение. У одного человека ведущий фактор — хроническая тревога и бессонница, у другого — стресс и конфликты, у третьего — социальная среда, у четвёртого — сочетание нескольких причин. Поэтому программа должна учитывать реальную жизнь пациента: график работы, семейную ситуацию, уровень поддержки, типичные «точки срыва» и реакции на стресс.
    Подробнее можно узнать тут – http://narkologicheskaya-klinika-vidnoe12.ru

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

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

Deixe um comentário

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