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

4.756 Comentários

  1. This is very attention-grabbing, You’re an overly
    professional blogger. I have joined your feed and look forward to
    in search of extra of your great post. Additionally,
    I’ve shared your site in my social networks

  2. Городской ритм Петрозаводска с озёрным ветром, короткими сумерками и сезонной влажностью повышает сенсорную нагрузку в вечерние часы, поэтому наш маршрут спроектирован «мягко». Координатор заранее уточняет подъезд, парковку, код домофона, рекомендует «тихий режим» связи и присылает нейтральное уведомление о визите. Бригада приходит в гражданской одежде, сумки — без логотипов, разговоры — короткими фразами. Такое поведение снижает у пациента и семьи реактивность, выравнивает вариабельность ЧСС к сумеркам и уменьшает потребность «усиливать» схему на ночь. Если на предзвонке выявлены «красные флаги» — неукротимая рвота, выраженная дезориентация, «скачущий» ритм, одышка — мы предлагаем стационар сразу, чтобы не терять время на повторные маршруты.
    Выяснить больше – нарколог на дом

  3. DonaldTheak DonaldTheak

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

  4. Queremos organizar una noche tranquila para celebrar una fecha especial. Granada nos parece una zona practica porque podemos llegar sin demasiada carretera. Las fotos son bonitas, pero queremos entender los detalles cotidianos antes de elegir. Antes de escribir a varios sitios lei una guia de hotel burbuja granada y entendi que detalles merece la pena confirmar antes de reservar. Queremos saber si explican bien el aislamiento y la temperatura nocturna. Miraremos como es la llegada si anochece antes de registrarnos. Nos fijaremos en la separacion entre las unidades y las zonas comunes. Queremos comentarios recientes que expliquen la comodidad de forma concreta. El jacuzzi puede ser agradable, pero no sera nuestro unico criterio. Despues compararemos solo dos o tres lugares usando las mismas preguntas. Si alguien conoce la zona, me ayudaria saber que detalle practico le resulto importante. Queremos que sea una pequena celebracion serena, con tiempo para mirar el cielo y desconectar.

  5. Городская среда Петрозаводска со сменой ветров с Онежского озера, короткими сумерками и сезонными перепадами влажности может усиливать тревожность в вечерние часы. Мы учитываем это с момента первого контакта: согласованная парковка, отдельный вход без вывесок, короткая регистрация без «толстых анкет», приглушённый тёплый свет в зоне ожидания и отсутствие громких объявлений. Родственникам предоставляются «тихие окна» связи — лаконичные апдейты в фиксированное время, чтобы не перегружать пациента и не дёргать команду в критические окна наблюдения. Такой «мягкий» контур снижает сенсорную нагрузку, стабилизирует вариабельность ЧСС к сумеркам и сокращает число импульсивных просьб «усилить на ночь».
    Получить дополнительную информацию – https://narkologicheskaya-klinika-petrozavodsk15.ru/

  6. Lesterguext Lesterguext

    Мы придерживаемся инженерной логики: цель > маркер > окно проверки > отключение модуля. Никаких «сильных коктейлей на всякий случай»: сначала один точный шаг, затем — проверка результата. Именно так формируется прозрачность и доверие: пациент видит причину каждого назначения и понимает момент его завершения. Это уменьшает тревогу, ускоряет восстановление и убирает «инерцию лечения», когда лишние вмешательства продолжаются просто по привычке.
    Получить дополнительную информацию – [url=https://narkolog-na-dom-v-samare16.ru/]нарколог на дом в самаре[/url]

Deixe um comentário

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