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

3.956 Comentários

  1. Kod promocyjny Vox Casino to specjalny ciąg znaków, który odblokowuje dodatkowe bonusy dla graczy z Polski.

    W odpowiednim polu formularza trzeba wpisać kod promocyjny przed potwierdzeniem rejestracji.

    Promocja powiązana z kodem obowiązuje przez ograniczony okres.

    Kolejne kody promocyjne pojawiają się w ramach regularnych promocji dla graczy.

    Pomoc techniczna wyjaśni warunki oferty i pomoże w prawidłowym wpisaniu kodu.

    slots slots

  2. تخضع المنصة لترخيص دولي يوفر شفافية وأمانًا في كل عملية.

    تنفرد سلسلة 888Games بألعاب فورية مثل Crash و Plinko و Dice و Lottery.

    تتغير الأودز في الوقت الفعلي مع خيار المراهنة الحية.

    تبلغ باقة ترحيب الكازينو 1500 يورو إضافة إلى 150 فري سبين.

    يقدم 888starz تسجيلًا سريعًا بخطوات بسيطة وحد إيداع منخفض.

    888starz 888starz

  3. يخضع الموقع لترخيص دولي يكفل الشفافية والأمان في كل معاملة.
    يجد اللاعب في 888Games عناوين لا تتوفر خارج منصة 888starz.
    888stars [url=https://888starzs5.com/]888stars[/url]
    تتوفر أسواق على البطولات الكبرى إلى جانب الدوري المصري.
    تبلغ باقة الترحيب في الكازينو 1500 يورو إضافة إلى 150 فري سبين.
    يعمل فريق المساعدة طوال اليوم مع تطبيق محمول لأندرويد وآبل.

  4. Niektóre kody są też dostępne dla stałych graczy w ramach bieżących promocji.

    Kod należy wprowadzić w dedykowanym miejscu, aby bonus został poprawnie naliczony.

    Przed wypłatą obowiązuje określony mnożnik obrotu dla środków bonusowych.

    Najnowsze kody warto sprawdzać przed rejestracją, aby wybrać najlepszą ofertę.

    Kod promocyjny można wykorzystać zarówno na komputerze, jak i w wersji mobilnej Vox Casino.

    vox casino kody vox casino kody

  5. بُنيت الواجهة لتكون سهلة بالعربية وسريعة التنقل.
    starz888 starz888
    يمنح الموقع لاعبيه أكثر من مئتين وخمسين طاولة مباشرة على مدار الساعة.
    يمكن للمراهن في القاهرة تغطية مبارياته المحلية والأحداث الأوروبية معًا.
    ينتظر اللاعبين النشطين برنامج مكافآت أسبوعي من كاش باك وجوائز.
    يدعم الموقع البطاقات والمحافظ إضافة إلى أكثر من 50 عملة رقمية بينها BTC و USDT و ETH.

  6. Dzięki kodowi gracz może otrzymać bonus od depozytu, darmowe spiny lub inne nagrody.

    Po dokonaniu pierwszej wpłaty bonus powiązany z kodem trafia na konto gracza.

    Środki z bonusu podlegają wymaganiom obrotu, które trzeba spełnić przed wypłatą.

    Poza bonusem powitalnym Vox Casino oferuje kody do cyklicznych akcji i cashbacku.

    W razie problemów z aktywacją kodu pomaga obsługa klienta dostępna całą dobę.

    vox casino darmowe kody bez depozytu 2026 vox casino darmowe kody bez depozytu 2026

Deixe um comentário

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