Compilando Shield Arduino no Atmel Studio 7:
Tópicos:
1- Introdução,
2- Para saber mais,
3- Adicionando um módulo LCD no projeto ‘Blink’,
4- O que é a Toolchain e como acessar,
5- Configurando a Toolchain,
6- Compilando o código sem erros
Finalizando
Se você curtir esse artigo, não esqueça de dar uns cliques nos anúncios para ver o que os anunciantes tem para te oferecer. Vou ficar muito contente.
Introdução:
Baseado no artigo anterior vamos modificar a solução ‘Arduino_No_AtmelStudio’ para instanciar um objeto LiquidCrystal (um shield LCD) objetivando mostrar erros comuns de configuração do compilador e os passos para corrigi-los. Como o debug só fala que está errado e não consegue dizer o que está errado, saber consertar esse tipo de erro, só isso vale a leitura desse artigo.
Saber adicionar as classes dos shields Arduino no Atmel Studio e acertar a configuração do compilador é uma etapa fundamental para se fazer o uso profissional da plataforma Arduino quando integrada com a ferramenta Atmel Studio 7.
Caro leitor, antes de prosseguir no assunto, saiba que sua presença em meu site é mais que uma honra. Sinta-se a vontade para contribuir e propor melhorias no artigo. Boa leitura!
Para saber mais:
O man do avr-g++ -> nesse link aqui <-
O man do make -> nesse link aqui <-
Biblioteca LiquidCrystal -> nesse link aqui <-
A documentação do AtMega328p pode ser encontrado -> nesse link aqui <-
Adicionando ‘#include <LiquidCrystal.h>’ no projeto Blink
O primeiro passo para adicionar um LCD no projeto Blink seria inserir a diretiva de pré processamento ‘#include <LiquidCrystal.h>’ indicando ao compilador para procurar na lista de diretórios padrão a biblioteca LiquidCrystal.
Cuidado:
Conforme figura 1, ao começar a inserir a diretiva de pré processamento ‘#include < …’ (3), a funcionalidade ‘code completion’ do Atmel Studio deveria listar o header da biblioteca LiquidCrystal. Mas ele, o header da biblioteca LiquidCrystal, não está disponível nem na raiz e nem nos subdiretórios sugeridos pelo ‘code completion’. Só isso é sinal de que algo está errado.
Ainda conforme figura 1, forçar a inclusão da diretiva de pré processamento ‘#include <liquidCrystal.h>'(1) a escrevendo na mão e rodar o build em seguida é a maneira mais rápida de se conseguir um erro de compilação.
Rodar o build nessa condição fará com que o compilador aborte imediatamente, retornando a mensagem ‘liquidCrystal.h: No such file or directory'(2) informando que a biblioteca LiquidCrystal não foi encontrada. Note que o ‘code completion’ já tinha avisado educadamente sobre a ausência da biblioteca em questão.
Isso acontece por dois motivos:
- Porque a biblioteca ‘LiquidCrystal’ não está disponível em um dos diretórios padrão do compilador.
- O projeto ‘ArduinoCore’ precisa saber em qual caminho se encontra a biblioteca ‘LiquidCrystal’.
- O projeto ‘Blink’ também precisa saber em qual caminho se encontra essa biblioteca.
- Precisa adicionar a biblioteca ‘LiquidCrystal’ dentro do projeto ‘ArduinoCore’.
*Os tópicos a seguir descrevem uma possível solução. Variações e abordagens diferentes são possíveis, cada qual com seus prós e contras.
Adicionando a Biblioteca LiquidCrystal:
Conforme figura 2 e abaixo, seguem as instruções para adicionar a biblioteca LiquidCrystal no projeto ‘ArduinoCore’.
- Clique com o botão direito do mouse sobre o projeto ‘ArduinoCore’ no ‘Solution Explorer’ (1),
- No menu de contexto selecione a opção ‘Add Arduino Library’ (2),
- A janela ‘Import Arduino library’ irá abrir (3),
- Assegure que o caminho da IDE do Arduino esteja selecionado (4),
- Para esse caso selecione o checkbox ‘LiquidCrystal’ (5) e clique em Add (6).
A biblioteca será copiada do diretório da instalação do Arduino para dentro do projeto ‘ArduinoCore’.
Note que essa biblioteca não precisa ser copiada para o projeto ‘Blink’ que é o programa do usuário.
Informando o caminho da biblioteca liquidCrystal:
Embora a biblioteca ‘LiquidCrystal’ tenha sido copiada para dentro do projeto ‘ArduinoCore’ nos caminhos abaixo:
- ~\Arduino_No_AtmelStudio\ArduinoCore\include\libraries\LiquidCrystal\src\LiquidCrystal.h
- ~\Arduino_No_AtmelStudio\ArduinoCore\src\libraries\LiquidCrystal\src\LiquidCrystal.cpp
Ainda é necessário informar ao compilador para onde que a biblioteca ‘LiquidCrystal’ foi copiada.
Sendo específico: Para resolver o erro de compilação ‘liquidCrystal.h: No such file or directory’ é necessário incluir o caminho da biblioteca ‘LiquidCrystal’ na lista de diretórios padrão que o compilador procura seus includes. Essa configuração é realizada na ‘Toolchain’.
Até o momento, a biblioteca ‘LiquidCrystal’ foi copiada para dentro da solução ‘Arduino_No_AtmelStudio’, no projeto ‘ArduinoCore’. O próximo passo é configurar a ‘Toolchain’.
Não leia isso (TLDR): Copiar a biblioteca para dentro do projeto e deixar tudo organizado em um conjunto de pastas facilita a manutenção do código. Nada impede que um programador configure o compilador para buscar as bibliotecas nos lugares mais esdrúxulos, sombrios e pantanosos, ou adote práticas avançadas e louváveis como buscar direto no GitHub a versão mais atual de uma biblioteca. Cada caso um caso :-).
O que é a Toolchain e como acessar:
No Atmel Studio, a Toolchain nada mais é do que a reunião das diretivas de compilação e montagem do código de um determinado projeto. Ela é a receita de bolo listando os ingredientes e intruções que diz para o compilador onde estão as bibliotecas e como se faz para compilar o código.
Na Toolchain é possível configurar parâmetros dos compiladores C, C++, Assembler e montador como:
- Diretivas de pré processamento,
- Indicar Símbolos (tipo de processador, arquitetura, clock…),
- Diretórios que o compilador vai procurar as bibliotecas do projeto,
- Opções de otimização de código,
- Flags de depuração de código,
- Mensagens de aviso,
- Configurações de uso de memória e outras opções.
Como nesse tutorial a solução ‘Arduino_No_AtmelStudio’ tem dois projetos, existem duas Tollchains a serem configuradas: Uma para o projeto ‘ArduinoCore’ e outra para o projeto ‘Blink’, conforme diagrama da figura 3 abaixo.
Detalhando um pouco mais, precisa ter em mente que a solução ‘Arduino_No_AtmelStudio’ engloba dois projetos que são o projeto ‘ArduinoCore’ e o projeto ‘Blink’. Cada projeto tem sua própria Toolchain.
Baseado na configuração da ‘Toolchain’ do projeto ‘ArduinoCore’, primeiro é compilado o projeto ‘ArduinoCore’ gerando a biblioteca ‘libArduinoCore.a’. Na sequência o compilador lê a ‘Toolchain’ do projeto ‘Blink’, chama a biblioteca ‘libArduinoCore.a’ e faz a compilação do projeto ‘Blink’ gerando o código binário ‘Blink.hex’.
Terminada a compilação, o programador aciona o programa AVRDUDE para carregar no Arduino o código binário ‘Blink.hex’, conforme veremos em outro artigo.
Como acessar a Toolchain
Conforme figura 4 abaixo, para acessar a página de configuração da Toolchain de um projeto, no quadro ‘Solution Explorer’ (1) basta clicar com o botão direito do mouse sobre o nome do projeto de sua escolha (pode ser ‘ArduinoCore’ ou ‘Blink’ nesse caso) (2) -> selecione ‘Properties’ (3). No quadro principal irá abrir a tela de propriedades do projeto escolhido. Selecione a opção ‘Toolchain’ (4). Selecione a opção de configuração ‘All Configurations’.
Configurando a Toolchain:
Conforme dito anteriormente, quando o projeto usa uma biblioteca que não está disponível na plataforma Arduino, é necessário revisar a configuração da ‘Toolchain’ e adicionar o caminho dessa biblioteca para que a compilação e o ‘code completion’ consigam funcionar adequadamente.
Importante:
- Como a plataforma Arduino usa o C++, não é necessário alterar os parâmetros do C na ‘Toolchain’, a menos que o desenvolvedor pretenda desenvolver código em C.
- Caso você esteja compilando código escrito em C, faça o mesmo procedimento deste tópico 5, só que atuando nas opções do ‘AVR/GNU C Compiler’ (compilador do código C).
Segue abaixo o que precisa configurar na ‘Toolchain’ para esse tutorial, lembrando que casos específicos demandam configurações específicas :-).
Perfis de configuração
Com a ‘Toolchain’ aberta, note que o campo ‘Configuration’ permite personalizar a configuração da ‘Toolchain’, criando um perfil para cada tipo de ambiente.
Por default são duas opções e isso é configurável. A menos que seja necessário utilizar ambientes de compilação distintos, recomenda-se selecionar a opção ‘All Configurations’ para assegurar que as configurações sejam idênticas em todos ambientes.
Configurando a’ Toolchain’ do ‘ArduinoCore’:
Conforme item 4.2, acessar a página de configuração da ‘Toolchain’ do projeto ‘ArduinoCore’.
Conforme figura 5 abaixo, para o campo ‘Configuration’, selecionar a opção ‘All Configurations’ (1),
Se estiver compilando código C++, ainda conforme indicado na figura 5 abaixo:
- Expanda ‘AVR/GNU C++ Compiler’ (2),
- Selecione a opção ‘Directories’ (3),
- Clique no botão para adicionar o caminho da biblioteca a ser incluída (4),
- Navegue até a pasta onde está localizada o header da biblioteca ‘LiquidCrystal’ nesse caso(5) e clique Ok (6),
- O caminho será incluído na janela ‘Include Paths (-I)’ (7).
O procedimento acima precisa ser adequado de acordo com a instalação de sua máquina.
Configurando a Toolchain do ‘Blink’:
Conforme item 4.2, acessar a página de configuração da ‘Toolchain’ do projeto ‘Blink’.
Conforme figura 6, para o campo ‘Configuration’, selecione a opção ‘All Configurations’ (8),
Se estiver compilando código C++, ainda conforme indicado na figura 6 abaixo:
- Expanda ‘AVR/GNU C++ Compiler’ (9),
- Selecione a opção ‘Directories’ (10),
- Clique no botão para adicionar o caminho da biblioteca a ser incluída (11),
- Navegue até a pasta onde está localizada o header da biblioteca ‘LiquidCrystal’ nesse caso(12) e clique Ok (13),
- O caminho será incluído na janela ‘Include Paths (-I)’ (14).
Compilando o código sem erros:
Uma vez adicionada a biblioteca Arduino no projeto e configurada a ‘Toolchain’ nos projetos ‘ArduinoCore’ e ‘Blink’ indicando a localização da biblioteca ‘LiquidCrystal’, é só acessar o ‘Solution Explorer’ -> clicar com o botão direito do mouse na Solução ‘Arduino_No_Atmel’, escolher ‘Clean Solution’ e ‘Build Solution’.
O compilador será iniciado, percorrendo os passos descritos no tópico 4.
Embora não seja obrigatório clicar em ‘Clean Solution’, isso garante que os diretórios ‘Output Files’ sejam apagados dando a certeza que novos arquivos serão criados.
Caso a compilação demore muito, pode-se fazer o build de cada projeto individualmente, tomando o cuidado para compilar primeiro o projeto ‘ArduinoCore’ e depois o projeto ‘Blink’.
Ao final da compilação do projeto ‘ArduinoCore’ deverá ser criado o arquivo ‘libArduinoCore.a’ na pasta ‘Output’.
Ao final da compilação do projeto ‘Blink’ deverá ser criado o arquivo ‘Blink.hex’ na pasta ‘Output’ entre outros.
Segue abaixo o código instanciando o objeto LiquidCrystal para ver se dá erro de compilação:
#include <Arduino.h>
#include <LiquidCrystal.h>
/* O diagrama esquemático para esse programa está disponível no link:
"https://nets-nuts.com.br/eletronica/ligando-o-lcd-no-arduino-4bits/"
Escolher o diagrama esquemático '8 bits Read Write'*/
//Verificando se a biblioteca dá algum erro
LiquidCrystal lcd(10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9);
void setup() {
// Inicializando pino do led como saída.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Início do pisca pisca
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Fim do pisca pisca
}
Segue abaixo e para referência, a compilação do código.
------ Build started: Project: ArduinoCore, Configuration: Debug AVR ------
Build started.
Project "ArduinoCore.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "C:\Users\renat.DESKTOP-7SIJLUM\Documents\Atmel Studio\7.0\Arduino_No_AtmelStudio\Arduino_No_AtmelStudio\ArduinoCore\ArduinoCore.cppproj" (target "Build" depends on it):
Task "RunCompilerTask"
Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 8 --output-sync
Building file: ../src/core/abi.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/abi.d" -MT"src/core/abi.d" -MT"src/core/abi.o" -o "src/core/abi.o" "../src/core/abi.cpp"
Finished building: ../src/core/abi.cpp
Building file: ../src/core/HardwareSerial1.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/HardwareSerial1.d" -MT"src/core/HardwareSerial1.d" -MT"src/core/HardwareSerial1.o" -o "src/core/HardwareSerial1.o" "../src/core/HardwareSerial1.cpp"
Finished building: ../src/core/HardwareSerial1.cpp
Building file: ../src/core/CDC.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/CDC.d" -MT"src/core/CDC.d" -MT"src/core/CDC.o" -o "src/core/CDC.o" "../src/core/CDC.cpp"
Finished building: ../src/core/CDC.cpp
Building file: ../src/core/HardwareSerial.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/HardwareSerial.d" -MT"src/core/HardwareSerial.d" -MT"src/core/HardwareSerial.o" -o "src/core/HardwareSerial.o" "../src/core/HardwareSerial.cpp"
Finished building: ../src/core/HardwareSerial.cpp
Building file: ../src/core/HardwareSerial0.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/HardwareSerial0.d" -MT"src/core/HardwareSerial0.d" -MT"src/core/HardwareSerial0.o" -o "src/core/HardwareSerial0.o" "../src/core/HardwareSerial0.cpp"
Finished building: ../src/core/HardwareSerial0.cpp
Building file: ../src/core/HardwareSerial2.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/HardwareSerial2.d" -MT"src/core/HardwareSerial2.d" -MT"src/core/HardwareSerial2.o" -o "src/core/HardwareSerial2.o" "../src/core/HardwareSerial2.cpp"
Finished building: ../src/core/HardwareSerial2.cpp
Building file: ../src/core/HardwareSerial3.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/HardwareSerial3.d" -MT"src/core/HardwareSerial3.d" -MT"src/core/HardwareSerial3.o" -o "src/core/HardwareSerial3.o" "../src/core/HardwareSerial3.cpp"
Finished building: ../src/core/HardwareSerial3.cpp
Building file: ../src/core/hooks.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/hooks.d" -MT"src/core/hooks.d" -MT"src/core/hooks.o" -o "src/core/hooks.o" "../src/core/hooks.c"
Finished building: ../src/core/hooks.c
Building file: ../src/core/new.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/new.d" -MT"src/core/new.d" -MT"src/core/new.o" -o "src/core/new.o" "../src/core/new.cpp"
Finished building: ../src/core/new.cpp
Building file: ../src/core/main.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/main.d" -MT"src/core/main.d" -MT"src/core/main.o" -o "src/core/main.o" "../src/core/main.cpp"
Finished building: ../src/core/main.cpp
Building file: ../src/core/IPAddress.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/IPAddress.d" -MT"src/core/IPAddress.d" -MT"src/core/IPAddress.o" -o "src/core/IPAddress.o" "../src/core/IPAddress.cpp"
Finished building: ../src/core/IPAddress.cpp
Building file: ../src/core/PreprocessingAssembly/wiring_pulse.S
Invoking: AVR8/GNU Assembler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -Wa,-gdwarf2 -x assembler-with-cpp -c -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -I "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -MD -MP -MF "src/core/PreprocessingAssembly/wiring_pulse.d" -MT"src/core/PreprocessingAssembly/wiring_pulse.d" -MT"src/core/PreprocessingAssembly/wiring_pulse.o" -Wa,-g -o "src/core/PreprocessingAssembly/wiring_pulse.o" "../src/core/PreprocessingAssembly/wiring_pulse.S"
Finished building: ../src/core/PreprocessingAssembly/wiring_pulse.S
Building file: ../src/core/PluggableUSB.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/PluggableUSB.d" -MT"src/core/PluggableUSB.d" -MT"src/core/PluggableUSB.o" -o "src/core/PluggableUSB.o" "../src/core/PluggableUSB.cpp"
Finished building: ../src/core/PluggableUSB.cpp
Building file: ../src/core/Stream.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/Stream.d" -MT"src/core/Stream.d" -MT"src/core/Stream.o" -o "src/core/Stream.o" "../src/core/Stream.cpp"
Finished building: ../src/core/Stream.cpp
Building file: ../src/core/Print.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/Print.d" -MT"src/core/Print.d" -MT"src/core/Print.o" -o "src/core/Print.o" "../src/core/Print.cpp"
Finished building: ../src/core/Print.cpp
Building file: ../src/core/Tone.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/Tone.d" -MT"src/core/Tone.d" -MT"src/core/Tone.o" -o "src/core/Tone.o" "../src/core/Tone.cpp"
Finished building: ../src/core/Tone.cpp
Building file: ../src/core/USBCore.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/USBCore.d" -MT"src/core/USBCore.d" -MT"src/core/USBCore.o" -o "src/core/USBCore.o" "../src/core/USBCore.cpp"
Finished building: ../src/core/USBCore.cpp
Building file: ../src/core/WInterrupts.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/WInterrupts.d" -MT"src/core/WInterrupts.d" -MT"src/core/WInterrupts.o" -o "src/core/WInterrupts.o" "../src/core/WInterrupts.c"
Finished building: ../src/core/WInterrupts.c
Building file: ../src/core/wiring.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/wiring.d" -MT"src/core/wiring.d" -MT"src/core/wiring.o" -o "src/core/wiring.o" "../src/core/wiring.c"
Finished building: ../src/core/wiring.c
Building file: ../src/core/wiring_analog.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/wiring_analog.d" -MT"src/core/wiring_analog.d" -MT"src/core/wiring_analog.o" -o "src/core/wiring_analog.o" "../src/core/wiring_analog.c"
Finished building: ../src/core/wiring_analog.c
Building file: ../src/core/wiring_digital.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/wiring_digital.d" -MT"src/core/wiring_digital.d" -MT"src/core/wiring_digital.o" -o "src/core/wiring_digital.o" "../src/core/wiring_digital.c"
Finished building: ../src/core/wiring_digital.c
Building file: ../src/core/wiring_pulse.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/wiring_pulse.d" -MT"src/core/wiring_pulse.d" -MT"src/core/wiring_pulse.o" -o "src/core/wiring_pulse.o" "../src/core/wiring_pulse.c"
Finished building: ../src/core/wiring_pulse.c
Building file: ../src/core/wiring_shift.c
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe" -x c -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"..\include\libraries\LiquidCrystal\src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu99 -std=gnu11 -MD -MP -MF "src/core/wiring_shift.d" -MT"src/core/wiring_shift.d" -MT"src/core/wiring_shift.o" -o "src/core/wiring_shift.o" "../src/core/wiring_shift.c"
Finished building: ../src/core/wiring_shift.c
Building file: ../src/core/WMath.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/WMath.d" -MT"src/core/WMath.d" -MT"src/core/WMath.o" -o "src/core/WMath.o" "../src/core/WMath.cpp"
Finished building: ../src/core/WMath.cpp
Building file: ../src/libraries/LiquidCrystal/src/LiquidCrystal.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/libraries/LiquidCrystal/src/LiquidCrystal.d" -MT"src/libraries/LiquidCrystal/src/LiquidCrystal.d" -MT"src/libraries/LiquidCrystal/src/LiquidCrystal.o" -o "src/libraries/LiquidCrystal/src/LiquidCrystal.o" "../src/libraries/LiquidCrystal/src/LiquidCrystal.cpp"
Finished building: ../src/libraries/LiquidCrystal/src/LiquidCrystal.cpp
Building file: ../src/core/WString.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\include\core" -I"..\include\variants\standard" -I"../include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "src/core/WString.d" -MT"src/core/WString.d" -MT"src/core/WString.o" -o "src/core/WString.o" "../src/core/WString.cpp"
Finished building: ../src/core/WString.cpp
Building target: libArduinoCore.a
Invoking: AVR8/GNU Archiver : 4.9.2
C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-ar.exe: creating libArduinoCore.a
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-ar.exe" -r -o libArduinoCore.a src/core/abi.o src/core/CDC.o src/core/HardwareSerial.o src/core/HardwareSerial0.o src/core/HardwareSerial1.o src/core/HardwareSerial2.o src/core/HardwareSerial3.o src/core/hooks.o src/core/IPAddress.o src/core/main.o src/core/new.o src/core/PluggableUSB.o src/core/PreprocessingAssembly/wiring_pulse.o src/core/Print.o src/core/Stream.o src/core/Tone.o src/core/USBCore.o src/core/WInterrupts.o src/core/wiring.o src/core/wiring_analog.o src/core/wiring_digital.o src/core/wiring_pulse.o src/core/wiring_shift.o src/core/WMath.o src/core/WString.o src/libraries/LiquidCrystal/src/LiquidCrystal.o
Finished building target: libArduinoCore.a
Done executing task "RunCompilerTask".
Task "RunOutputFileVerifyTask"
Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "ArduinoCore.cppproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" from project "C:\Users\renat.DESKTOP-7SIJLUM\Documents\Atmel Studio\7.0\Arduino_No_AtmelStudio\Arduino_No_AtmelStudio\ArduinoCore\ArduinoCore.cppproj" (entry point):
Done building target "Build" in project "ArduinoCore.cppproj".
Done building project "ArduinoCore.cppproj".
Build succeeded.
------ Build started: Project: Blink, Configuration: Debug AVR ------
Build started.
Project "Blink.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "C:\Users\renat.DESKTOP-7SIJLUM\Documents\Atmel Studio\7.0\Arduino_No_AtmelStudio\Arduino_No_AtmelStudio\Blink\Blink.cppproj" (target "Build" depends on it):
Task "RunCompilerTask"
Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 8 --output-sync
Building file: .././Sketch.cpp
Invoking: AVR8/GNU C Compiler : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -funsigned-char -funsigned-bitfields -DF_CPU=16000000L -DARDUINO=10801 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x0043 -DUSB_MANUFACTURER="\"Arduino LLC\"" -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\include" -I"..\\..\ArduinoCore\include\core" -I"..\\..\ArduinoCore\include\variants\standard" -I"../../ArduinoCore/include/libraries/LiquidCrystal/src" -Os -fno-threadsafe-statics -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -w -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -c -std=gnu++11 -MD -MP -MF "Sketch.d" -MT"Sketch.d" -MT"Sketch.o" -o "Sketch.o" ".././Sketch.cpp"
Finished building: .././Sketch.cpp
Building target: Blink.elf
Invoking: AVR8/GNU Linker : 4.9.2
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-g++.exe" -o Blink.elf Sketch.o -Wl,-Map="Blink.map" -Wl,--start-group -Wl,-lm -Wl,-lArduinoCore -Wl,--end-group -Wl,-L"C:\Users\RENAT~1.DES\DOCUME~1\ATMELS~1\7.0\ARDUIN~4\ARDUIN~1\ARDUIN~1\Debug" -Wl,--gc-sections -mmcu=atmega328p -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.1.130\gcc\dev\atmega328p" -Os
Finished building target: Blink.elf
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "Blink.elf" "Blink.hex"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Blink.elf" "Blink.eep" || exit 0
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "Blink.elf" > "Blink.lss"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "Blink.elf" "Blink.srec"
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "Blink.elf"
text data bss dec hex filename
2368 30 33 2431 97f Blink.elf
Done executing task "RunCompilerTask".
Task "RunOutputFileVerifyTask"
Program Memory Usage : 2398 bytes 7,3 % Full
Data Memory Usage : 63 bytes 3,1 % Full
Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "Blink.cppproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Avr.common.targets" from project "C:\Users\renat.DESKTOP-7SIJLUM\Documents\Atmel Studio\7.0\Arduino_No_AtmelStudio\Arduino_No_AtmelStudio\Blink\Blink.cppproj" (entry point):
Done building target "Build" in project "Blink.cppproj".
Done building project "Blink.cppproj".
Build succeeded.
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========
Finalizando:
Nessa etapa foram abordados os passos e detalhes para se levar em conta quando configurando a ‘Toolchain’ para funcionar a compilação de projeto Arduino no AtmelStudio.
O código, no ponto que está já é possivel desenvolver a implementação do LCD no projeto e isso será feito no proximo artigo.
Ainda estou devendo a configuração do AVRDUDE no Atmel Studio, mas falta pouco para eu falar dele e o mais importante nesse momento seria ressaltar as seguintes observações:
- Não adianta mandar compilar o módulo ‘Blink’ se ainda não tiver sido compilado o ‘ArduinoCore’. Simplesmente irá dar erro e muitas vezes o compilador poderá travar sem emitir qualquer mensagem.
- Caso o AtmelStudio comece a travar dando erros de thread e coisas esquisitas começarem a acontecer, há grande probabilidade de termos algum erro de configuração nos caminhos das bibliotecas.
- Se o projeto é C++, não faz sentido atualizar as informações do compilador C e vice versa. Fazer isso é perda de tempo.
- Na ‘Toolchain’ do ‘ArduinoCore’ é mandatório especificar o caminho de todas bibliotecas dos shields utilizados no projeto.
- Como boa prática, As bibliotecas adicionais sempre que possível devem ficar dentro do projeto.
- Não indicar o caminho das bibliotecas na ‘Toolchain’ dá erro de compilação.
- Quando atualizando a ‘Toolchain’ apenas acrescente o caminho das bibliotecas. Somente mude os valores padrão dos diretórios listados na ‘Toolchain’ se você souber o que está fazendo.
- O linker do projeto ‘ArduinoCore’ e do ‘Blink’ tem que indicar apenas a biblioteca libm (nesse tutorial).
Um grande abraço e saiba que a satisfação é minha pelo prestígio de ter sua atenção até esse ponto.
By Renato de Pierri
18/Janeiro/2017