2 Configuração do Ambiente de Desenvolvimento



Documentos relacionados
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

2 Configuração do Ambiente de Desenvolvimento

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Ambiente de Desenvolvimento

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Real Time Application Interface

Ambiente de Desenvolvimento de Programas

Linguagem C. Walter Fetter Lages

Ambiente de Desenvolvimento

Internet das Coisas com Intel A3 Métodos de programação.

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Ambiente de Desenvolvimento

Escrito por Bruno Crivelari Sanches Qui, 01 de Outubro de :16 - Última atualização Ter, 13 de Setembro de :45

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016

Laboratório de Microprocessadores Compilação Cruzada

Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados que serão usados por desenvolvedores de aplicações.

Estrutura de Dados Prof. a Mariella Berger. Trabalho 2 - Freecell

Linux e Computação Científica

SAS Servidor de Acessos Sankhya

USANDO O PYTHON PARA ESCREVER PLUG-INS PARA O GIMP

Gerenciamento de Memória Minix 3.1.7

OBSERVAÇÕES: EXERCÍCIOS

MANUAL DE INSTALAÇÃO SUPERVISOR WEB

SISTEMAS OPERATIVOS I

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Responsáveis: Bruno Silva, André Coelho, Wellington Silva, Marcelo Hirano. Atualizado em: 08/09/2017 CONFIGURAÇÃO DE BACKUP DE ORIGEM LINUX

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

MANUAL SERVIÇOS E AGENDAMENTO

MANUAL DO SISTEMA. Versão 6.05

Pressione o botão SB na parte traseira do concentrador, mantenha-o pressionado e ligue o mesmo.

Welcome the programmation Linux with shell script!!! Seja bem vindo a programação Linux com shell script!!!

Atualizações de Software Guia do Usuário

Programação de Computadores I. Linguagem C Função

INTEGRAÇÃO JAVA COM ARDUINO

MANUAL DE INSTALAÇÃO DO SES CLIENT WIN 7 64 BITS

TomTom. Suporte Bluetooth para Service Tool

Guia de desenvolvimento de um aplicativo para o sistema operacional Android

TomTom WEBFLEET Tachograph Manager Instalação

Básico: estrutura de programa, sintaxe Interface com linha de comando

Software Configurador

Parte 1 -Active Directory Criação de seu primeiro domínio Windows 2003

56K ESP-2 Modem 56K ESP-2 MODEM. Manual de instalação rápida. Versão 1.0

MANUAL DE EMISSÃO DO CERTIFICADO TIPO A3 ENVIADO POR ENVIADO POR VERSÃO 10. Atualizado em 30/12/2015 Página 1 de 19

Pesquise defeitos o erro incapaz de conectar ao server da Voz em um servidor de unidade

Estruturas de Repetição

Administração de Redes. Permissões gnu/linux

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Roteiro de Laboratório 8 Serial Peripheral Interface (SPI) Prof. Walter Fetter Lages 21 de outubro de 2015

Introdução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios;

Guia de Instalação TOTVS Employee Performance Manager - EPM

Laboratório Wireshark ARP/ICMP 1

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

APOIO À INSTALAÇÃO + QUESTÕES FREQUENTES

Universidade Federal do Espírito Santo Centro Tecnológico Programação II 2013/1 Prof. Flávio Varejão 1º Trabalho Computacional

Instalando o Linux e outros Softwares

TUTORIAL DO SISTEMA CE MERCANTE

Credenciamento. e manual de instalação Magento. Credenciamento. Configurações

Módulo de Catalogação e Pesquisa

Guia para instalação da Loja demonstração

Guia de Atualização. RIP 4.6 v2 para Grandes Formatos em Cores. Grandes Formatos em Cores Xerox RIP 4.6 v2. Guia de Atualização

Manutenção do Sistema

Como Atualizar o SolidWorks Enterprise PDM. Atualização do Servidor

Configurações iniciais, WiFi e Bluetooth

Arquitetura de Computadores EL66C 1a. Prova - Gabarito 26/04/10

Procedimento de utilização da pasta Arquivos

Esta é uma iniciativa do Governo do Estado de São Paulo

Maratona de Programação - Dicas Para Iniciantes

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Microsoft Excel Ficha prática n. 8

Circuito Decodificador BCD para Display de Sete Segmentos

1/16 MAKEFILES Makefiles Programação II

TOTVS Microsiga Protheus Gestor de Configuração

Linguagem de Programação I

Universidade Estadual de Campinas FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO EE641 (Laboratório de Eletrônica II)

Admistração de Redes de Computadores (ARC)

Introdução aos Sistemas Operacionais

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário

MANUAL DE ACESSO CATÁLOGO DE PRODUTOS ONLINE

Banana Pi. O sistema operacional (SO) da Banana Pi vive no cartão SD. você tem que preparar um cartão SD de inicialização.

PRÁTICA DE NAT/PROXY - LINUX 1. TOPOLOGIA DE REDE PARA TODOS OS CENÁRIOS DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD

Editor Eclipse para Programas F

Aula 09 Firewall (Configuração) Prof. Roitier Campos Gonçalves

Programação de Periféricos

Para viabilizar esta melhoria, é necessário aplicar o pacote de atualizações (Patch) deste chamado.

Laboratório de Programação - Exercício 30

Interface com Displays de 7 Segmentos. Interface com Displays

Gerência de Redes de Computadores Zabbix Instalação. Prof. Alex Furtunato

Medical Office Instruções de Instalação e Configuração

Linguagens de Programação:

Camera, Kinect e ROS. Andrey Masiero. 5 de fevereiro de 2016

INSTALACAO PRODUTOS DIGIVOICE NO ISSABEL PREPARAÇÃO DO SISTEMA

Atualização de Software Guia do Usuário

Transcrição:

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 2 Ambiente de Desenvolvimento Prof. Walter Fetter Lages 14 de março de 201 O objetivo deste laboratório é familiarizar os alunos com a o ambiente de desenvolvimento da Galileo Gen2 em Linux. A princípio, seria possível instalar no cartão microsd uma distribuição de Linux normal"e utilizar as ferramentas de desenvolvimento executando na própria Galileo. No entanto, como o processador da Galileo não é muito potente, a compilação certamente seria demorada. Outro ponto a considerar é que a memória flash da Galileo não é muito grande e para a versão final da aplicação seria interessante poder executá-la diretamente a partir da flash, sem a necessidade do cartão microsd. Para isso, é necessário que o Linux executando na Galileo tenha um pequeno footprint e para isso é necessário utilizar versões especiais das bibliotecas que não suportam adequadamente ambientes de desenvolvimento mais sofisticados. A utilização de um ambiente de desenvolvimento independente da plataforma alvo, também torna o desenvolvimento mais independente da Galileo em si e mais similar aos ambientes de desenvolvimento de outras plataformas para sistemas embarcados. Ao final deste laboratório, espera-se que os alunos sejam capazes de compilar um programa em C para executar na Galileo utilizando Makefile e compilador cruzado e perceber as diferenças entre programas desenvolvidos para a plataforma host e para a plataforma alvo. 2 Configuração do Ambiente de Desenvolvimento O ambiente de desenvolvimento da Galileo é baseado no projeto Yocto, que utiliza a ferramenta BitBake para criar imagens de sistemas Linux para sistemas embar- 1

cados e o OpenEmbedded como sistema de build. Estes componentes formam um sistema build de referência chamado Poky. Utilizando o Poky se pode criar uma distribuição Linux específica para a Galileo com pequeno footprint e as bibliotecas e utilitários necessários para a aplicação em questão. Além da distribuição Linux, cria-se também um conjunto de ferramentas de desenvolvimento cruzado que utilizam as bibliotecas incluídas na distribuição. Mas adiante haverá um laboratório para onde será criada distribuição e as respectivas ferramentas de distribuição. No entanto, por hora, serão utilizada as ferramentas de desenvolvimento já incluídas no IoT Developer Kit http:// downloadmirror.intel.com/25384/eng/iotdk-ide-linux.tar. bz2, que executa na versão de 4 bits do Linux. Note que 4 bits aqui se refere à plataforma onde o as ferramentas serão executadas (sistema host), o código gerado para a Galileo (sistema alvo) tem que ser sempre de 32 bits. As máquinas do laboratório já estão com as ferramentas de desenvolvimento instaladas. Se for necessário instalar as ferramentas em outra máquina, faça o seguinte, no host, como superusuário 1 : 1. Baixe e descompacte o arquivo como o IoT Developer Kit no diretório /opt: cd /opt wget http://downloadmirror.intel.com/25384/eng/\ iotdk-ide-linux.tar.bz2 tar -xjf iotdk-ide-linux.tar.bz2 rm iotdk-ide-linux.tar.bz2 2. Ajuste as permissões dos arquivos descompactados: chown -R root.root iotdk-ide-linux chmod -R go-w iotdk-ide-linux chmod -R -s iotdk-ide-linux 3. Ainda no diretório /opt, crie um link para a versão atual do IoT Developer Kit: ln -s iotdk-ide-linux iot-devkit 4. Crie um link para o diretório das ferramentas de desenvolvimento: 1 As instruções estão aqui para que sua máquina em casa possa ser configurada. No laboratório as máquinas já estão configuradas adequadamente. 2

cd iot-devkit ln -s devkit-x8 1.7.2 5. Execute a relocação das ferramentas de desenvolvimento: DEVKIT_HOME= pwd sdk-relocator/relocate_sdk.sh Atenção: os nomes dos links tem que ser exatamente estes, pois o as ferramentas cruzadas foram compiladas para serem instaladas nestes diretórios. A princípio, o script de relocação altera os paths que foram codificados nos programas para que funcionem quando o IoT Developer Kit é instalado em qualquer outro lugar, mas os diretórios onde são procurados os arquivos de cabeçalho e bibliotecas padrão continuam os originais, o que exigiria que os novos diretórios fossem sempre especificados na linha de comando através de opções de compilação. 3 Experimentos 1. Crie um diretório no host para colocar os códigos fontes dos programas. Habitue-se também a criar um diretório para cada programa onde existe o código fonte do programa e um Makefile para compila-lo. 2. A Listagem 1 mostra um programa "Hello, World!"em C. Listing 1: Programa "Hello, World!"em C. 1 #include <stdio.h> 2 3 int main(int argc,char *argv[]) 4 { 5 printf("hello, world!\n"); 7 return 0; 8 } Este programa pode ser compilado para execução no host com o Makefile mostrado na Listagem 2. Tente entender o funcionamento do Makefile 3. Compile e execute o programa host, para constatar o seu funcionamento. 3

Listing 2: Makefile para compilação para execução no host. 1 PREFIX=/usr/local 2 BINDIR=$(PREFIX)/bin 3 4 TARGET=hello 5 SRCS=$(TARGET).c 7 FLAGS=-O2 -Wall -g -MMD 8 INCLUDE=-I. -I$(HOME)/include 9 LIBDIR=-L$(HOME)/lib 10 LIBS= 11 12 CC=gcc 13 CFLAGS=$(FLAGS) $(INCLUDE) 14 LDFLAGS=$(LIBDIR) $(LIBS) 15 1 all: $(TARGET) 17 18 $(TARGET): $(SRCS:.c=.o) 19 $(CC) -o $@ $^ $(LDFLAGS) 20 21 %.o: %.c 22 $(CC) $(CFLAGS) -c -o $@ $< 23 24 -include $(SRCS:.c=.d) 25 2 clean: 27 rm -f *~ *.bak *.o *.d 28 29 distclean: clean 30 rm -f $(TARGET) 31 32 install: $(TARGET) 33 install -m 755 $(TARGET) $(BINDIR) 34 35 uninstall: 3 rm -f $(BINDIR)/$(TARGET) 4

4. Carregue a sua chave de SSH. 5. Transfira o programa recém compilado para a Galileo: scp hello [login]@[galileoname]: onde [login] é o seu login na Galileo e [galileoname] é o nome da Galileo.. Faça login na Galileo e verifique que o arquivo efetivamente encontra-se lá. 7. Tente executar o programa e verifique o que ocorre. 8. Crie outro diretório no host e copie o arquivo do programa da Listagem 1. 9. Compile o programa para execução na Galileo com o Makefile mostrado na Listagem 3. 10. Transfira o programa para a Galileo: scp hello [login]@[galileoname]: 11. Tente executar o programa na Galileo e verifique o que acontece. 12. Utilize os comandos file e ldd para verificar a diferença entre os executáveis nos casos 7 e 11. 13. É possível depurar remotamente os programas na Galileo usando o gdb, ou um front-end para ele como o kdbg ou o ddd. Para tanto, deve ser executado na Galileo o gdbserver: gdbserver [host]:[port] hello onde [host] é o nome do host onde será executado o gdb ou seu front-end e [port] é a porta TCP a ser usada para comunicação. Tipicamente, deve ser escolhida uma porta acima de 1024, para evitar problemas de permissões de acesso. 14. Para usar o kdbg execute no host o comando: kdbg -r [target]:[port] hello onde [target] é o nome da Galileo e [port] é a porta TCP a ser usada para comunicação. A rigor, o kdbg deveria ser configurado para usar i58-poky-linux-gdb do IoT Developer Kit, mas como o host possui a mesma arquitetura, é possível usar a configuração default, com o gdb nativo. 5

Listing 3: Makefile para compilação para execução na Galileo. 1 DEVKIT_HOME=/opt/iot-devkit/devkit-x8 2 PATH+=:$(DEVKIT_HOME)/sysroots/x8_4-pokysdk-linux/usr/bin/i58-poky-linux 3 4 PREFIX= 5 BINDIR=$(PREFIX) 7 USER=fetter 8 TARGETSYS=galileo9 9 10 TARGET=hello 11 SRCS=$(TARGET).c 12 13 FLAGS=-O2 -Wall -g -MMD 14 INCLUDE=-I. 15 LIBDIR= 1 LIBS= 17 18 CC=i58-poky-linux-gcc 19 CFLAGS=$(FLAGS) $(INCLUDE) 20 LDFLAGS=$(LIBDIR) $(LIBS) 21 22 all: $(TARGET) 23 24 $(TARGET): $(SRCS:.c=.o) 25 $(CC) -o $@ $^ $(LDFLAGS) 2 27 %.o: %.c 28 $(CC) $(CFLAGS) -c -o $@ $< 29 30 -include $(SRCS:.c=.d) 31 32 clean: 33 rm -f *~ *.bak *.o *.d 34 35 distclean: clean 3 rm -f $(TARGET) 37 38 install: $(TARGET) 39 scp $(TARGET) $(USER)@$(TARGETSYS):$(BINDIR) 40 41 uninstall: 42 ssh $(USER)@$(TARGETSYS)galileo9 rm -f $(BINDIR)/$(TARGET)

15. Faça um Hello, World!"em C++ e compile-o com um Makefile adequado para executar na Galileo. 7