Thunderboard guia do usuário - PDF
Download "Thunderboard guia do usuário"
Vinícius Carrilho Cipriano
1 grupoitech.com.br Thunderboard guia do usuário Revisão 1.0 ( )
2 Orientações gerais Este manual de usuário foi desenvolvido com o intuito de ajudar no desenvolvimento e manuseio dos equipamentos de hardware neles citados. Quaisquer alterações ou modificações feitas nesse documento ou nos itens de hardware não terão seu suporte garantido. Neste manual tentaremos abordar de forma abrangente o desenvolvimento do S.O. nas suas diversidades e possibilidades, tentando exemplificar situações e procedimentos. Quaisquer dúvidas que possam surgir na leitura deste conteúdo podem ser facilmente sanadas pelo seu vasto suporte obtido pela comunidade. Além de orientações diretas, oferecemos também uma quantidade significativa de documentação dedicada através da seção Referências de auxílio ao desenvolvimento do guia. Apresentação A Thunderboard possui um hardware desenvolvido sob o conceito de SoM - System on Module - em que os elementos principais, como processador e memórias, se encontram em uma placa auxiliar, na forma de um componente único, integrado e soldado na placa principal. Isso permite que modificações na placa principal sejam feitas com muita facilidade, proporcionando ainda a total flexibilidade que o cliente precisa para que se desenvolva sua própria, otimizando os periféricos e a mecânica de acordo com sua aplicação. A Thunderboard foi pensada para ser utilizada como plataforma de desenvolvimento para profissionais e estudantes, ou até mesmo como produto, sendo integrado em soluções que precisem de processamento embarcado de alta capacidade, mas que não abram mão de custo reduzido. O SoM utilizado é o MDP i.mx28, também totalmente desenvolvido e fabricado no Brasil pela itech. Com base no i.mx28, um ARM9 da Freescale que já possui embarcado o BSP - Board Support Package - para Linux, otimizado para atender grande variedade de aplicações. O Módulo de Processamento i.mx28 é ideal para projetos de equipamentos eletrônicos e sistemas embarcados de aplicações industriais, multimídia e conectividade. Seu tamanho reduzido permite o desenvolvimento de equipamentos compactos, personalizados e de longo ciclo de vida, conciliando baixo custo, alto desempenho e flexibilidade. O encapsulamento Castellation do módulo permite montagem simplificada e dispensa o processo mais complexo como o para componentes BGA. Apesar de oferecer o acesso para cartão micro SD e Pen Drives, o módulo de processamento da Thunderboard já possui memória Flash NAND embarcada, permitindo que o equipamento tenha toda sua aplicação carregada no próprio hardware, dispensando o uso de mídias removíveis e aumentando a confiabilidade do equipamento, característica bastante desejada quando utilizado em aplicações industriais. Nesse conceito a Thunderboard se torna ideal para projetos de equipamentos eletrônicos e sistemas embarcados de aplicações industriais, multimídia e conectividade, seja como hardware de apoio na fase de desenvolvimento quanto como produto
3 A placa A Thunderboard disponibiliza todas as interfaces e linhas de hardware presentes no SoM MDP, USBs 2 host e 1 device, cartão micro SD, porta ethernet 10/100, debug serial TTL, conector para alimentação externa e duas barras duplas de 62 pinos cada. Aplicações Sendo a Thunderboard um hardware cujo sistema é baseado na compilação a partir do Yocto Project, suas aplicações se tornam praticamente infinitas, uma vez que se adapta facilmente a diversos ambientes, dos mais simples aos mais complexos. Seu sistema embarcado se comunica diretamente com os periféricos, tendo assim o desenvolvimento de aplicações facilmente implementadas em C, e com os módulos de Phyton e programação interpretável instalado a implementação de uma nova camada para comunicação do hardware e do software se torna ainda mais rápida. Embora a Thunderboard seja vendida já com uma compilação Linux feita pelo Yocto Project gravada em sua memória Flash interna, esse kit chamado Thunderboard pode ser compilado com um SDK (Software Development Kit) utilizando ferramentas de automação e debug baseados no IDE (Integrated Development Environment) Eclipse. Como um produto completo, a Thunderboard suporta ainda o projeto Xenomai que baseando se no conceito de RTOS (Real Time Operating System) é uma framework para a plataforma Linux
4 Sumário Orientações gerais Apresentação A placa Aplicações Sumário Hardware Especificações técnicas Identificando seus componentes Esquema elétrico Periféricos Serial, Alimentação e Barra de Pinos LCD, MDP e Seletor de BOOT Alimentação Serial de debug Seletor de BOOT Tabela de BOOT I2C SPI SSP SPI SSP NAND Flash SD/MMC SSP SD/MMC SSP Reset Barra de Pinos USB Software Yocto Project Compilando para a Thunderboard O que precisa saber antes de começar Configurando o ambiente
5 Baixando o BSP Configurando o diretório de compilação Compilando uma imagem mínima para a Thunderboard Gravando a imagem no cartão SD Entendendo as pastas da compilação Referências de auxílio ao desenvolvimento do guia Suporte e Contato
6 Hardware Especificações técnicas Núcleo 454MHz ARM926EJ-S com cache 16KB/32KB Memória NAND Flash interna de 512 MB Memória DDR2 RAM de 128 MB Unidade de gerenciamento de energia com conversores DC-DC internos, com suporte a baterias de Li-lon Ethernet com suporte a IEEE 1588 Interface CAN dual Controlador LCD com touch screen Interface USB OTG com PHY embarcado Interface USB Host com PHY embarcado Conversores Analógico-Digital: 8 canais 12 bits e um canal 2 MSPS Sensor de temperatura com proteção térmica Conectividade: UART, SSP, SDIO, SPI, I2C, I2S GPIO de 3.3V Possibilidade de customização de processador: i.mx283 ou i.mx285 Identificando seus componentes 0. Ethernet em conector RJ45 1. USB Host duplo em conector USB tipo A 2. USB OTG em conector USB mini-b 3. Serial TTL DTE para acesso terminal 4. Seletor de ordem de BOOT 5. Conector para micro SD Card 6. Acelerômetro 7. Alimentação 5VDC em conector P LEDs auxiliares 9. Expansão em barra de pinos, 124 linhas em dois barramentos de 2x Seletor de alimentação USB / P4 11. Botão de reset para refazer o ciclo inteiro - 6 -
7 Esquema elétrico Periféricos - 7 -
8 Serial, Alimentação e Barra de Pinos - 8 -
9 LCD, MDP e Seletor de BOOT - 9 -
10 Alimentação A alimentação da Thunderboard é feita de duas maneiras: Através de uma fonte de alimentação em 5 VDC e 1A mínimo, sendo o positivo no pino central. Através da USB Device no conector mini USB, com corrente mínima de 500 ma. Para selecionar o método que será utilizado para alimentação da Thunderboard, um jumper localizado no J1 na parte inferior esquerda da placa deverá ser comutado conforme demonstrado abaixo P4-5 VCC USB Serial de debug A serial de debug foi disponibilizada em forma de barra de pinos, localizada em CN8 na parte central da placa e com comunicação em modo DTE. A conexão para comunicação está descrita na figura abaixo GND - - RX TX - Seletor de BOOT A Thunderboard, servindo como placa base para o produto MDP, possui diversas interfaces de armazenamento, tais como, memória flash embarcada no MDP, USB como mass storage e cartão micro SD, sendo possível ainda a conexão de memórias SPI, I2C e SSD através dos conectores tipo header. Para seleção dessas diversas possibilidades de BOOT foi implementado em S2 uma barra de pinos localizada na parte superior, para que se comute conforme o desejado mais facilmente. Observe as instruções do quadro e identificação de portas para os pinos do conector
11 Tabela de BOOT I2C SPI SSP SPI SSP
12 NAND Flash SD/MMC SSP SD/MMC SSP Reset Foi implementado um RESET onde é possível reiniciar o ciclo inteiro do MDP através de um botão localizado na parte superior direita em S
13 Barra de Pinos Embora esse item não ofereça nenhuma configuração adicional, vale ressaltá-lo para a identificação de implementações feitas facilitando seu uso. Identificamos nessa seção a alimentação presentes nos pinos de cada uma das barras duplas, sendo que a alimentação é constituída de 5VCC proveniente da fonte externa conectada ao P4 (CN1), 3VCC obtido através do regulador (U7) e GND, que está interligado entre todos os pontos de terra da placa e do módulo. Conector CN6 5 VCC 1, 59 3 VCC 19, 37 GND 2, 20, 38, 60 Conector CN7 5 VCC 1, 59 3 VCC 21, 39 GND 2, 38, 60 USB A USB Host da Thunderboard oferece o padrão já conhecido, desta forma informamos através dessa seção que a utilização deste função será possível apenas quando alimentada por fonte de 5VDC 1A. Quando conectada através da USB Device, esse componente é desligado para evitar sobrecarga do equipamento que estiver ligado a esta porta
14 Software Yocto Project O Yocto Project é um projeto de colaboração com código aberto que fornece modelos, ferramentas e métodos para ajudar a criar sistemas baseados em Linux personalizados para equipamentos embarcados, independentemente da arquitetura de hardware. Foi fundada em 2010 como uma colaboração entre fabricantes de hardware, fornecedores de sistemas de código aberto e empresas de eletrônicos para trazer alguma ordem ao caos de desenvolvimento do Linux para embarcados. Como um projeto open source, o Projeto Yocto opera com uma estrutura de governança hierárquica baseada na meritocracia e administrada pelo seu arquiteto-chefe, Richard Purdie, um associado da Fundação Linux. Isso faz com que o projeto mantenha-se independente de qualquer uma das organizações membro, que participam de várias maneiras e fornecem recursos para o projeto. ( The Yocto Project is an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems for embedded products regardless of the hardware architecture. It was founded in 2010 as a collaboration among many hardware manufacturers, open-source operating systems vendors, and electronics companies to bring some order to the chaos of embedded Linux development. As an open source project, the Yocto Project operates with a hierarchical governance structure based on meritocracy and managed by its chief architect, Richard Purdie, a Linux Foundation fellow. This enables the project to remain independent of any one of its member organizations, who participate in various ways and provide resources to the project. ) Compilando para a Thunderboard O que precisa saber antes de começar O Yocto Project possui um sistema de referência que é composto por uma coleção de ferramentas, chamado de Poky. Para entender o Poky e seus diversos níveis de interação, observe a seguinte ilustração: Ferramenta de build do Poky BitBake Tool (bitbake) OpenEmbedded-Core (meta) Yocto-specific Metadata (meta-yocto) Yocto-specific BSP (meta-yocto-bsp)
15 O BitBake faz o papel do agendador de tarefas, que identifica as dependências do código inserido e os processa em cada etapa, avalia todas os arquivos de configuração e receita disponíveis gerenciando as expansões, dependências e a possível criação de código necessários às variáveis. O OpenEmbedded-Core é a ferramenta de processamento utilizada pelo Poky, é ele quem vai suportar as diversas arquiteturas de processadores (ARM, x86, x86-64, PowerPC, MIPS e o MIPS64). O Metadada por sua vez é composto por uma mistura de Python e Shell Script, disponibilizando um sistema totalmente flexível. O Poky utiliza o Metadata para estender o OpenEmbedded-Core e inclui duas camadas diferentes, o meta-yocto (distribuições padrão e suportadas, e informações de rastreio para o visual) e o meta-yocto-bsp (disponibiliza o suporte às referências de hardware). O sistema embarcado na Thunderboard é baseado em Linux, possuindo uma interface de comunicação com o baixo e alto nível chamada BSP (Board Support Package). A seguinte estrutura de arquivos é encontrada dentro do BSP: meta-bsp_name/ meta-bsp_name/bsp_license_file meta-bsp_name/readme meta-bsp_name/readme.sources meta-bsp_name/binary/bootable_images meta-bsp_name/conf/layer.conf meta-bsp_name/conf/machine/*.conf meta-bsp_name/recipes-bsp/* meta-bsp_name/recipes-core/* meta-bsp_name/recipes-graphics/* meta-bsp_name/recipes-kernel/linux/linux-yocto_kernel_rev.bbappend Desta forma, quaisquer conhecimentos adicionais de Shell Script e Python se tornaram um bônus no momento do desenvolvimento, já que essas linguagens de programação são tecnologias utilizadas no núcleo das ferramentas do Yocto Project. Lembre-se dessa configuração de pastas, pois irá utilizar durante o processo de configuração de sua compilação, dentre elas citamos algumas mais importantes para o nosso guia: meta-bsp_name/conf/layer.conf O arquivo layer.conf identifica a estrutura de arquivos como se fossem uma camada, definindo o conteúdo das camadas, e contém informações sobre como o sistema de build deve utilizar tudo
16 Esse arquivo simplesmente faz com que o BitBake tenha conhecimento das receitas e dos diretórios de configuração. Esse arquivo é extremamente necessário para que o sistema OpenEmbedded de buid possa reconhecer o BSP. meta-bsp_name/conf/machine/*.conf Os arquivos machine formam toda a informação contida no BSP em um formato que o sistema de buid entenda. Se o BSP suportar múltiplas configurações de máquina, vários arquivos de configuração estarão presentes. Esses arquivos definirão coisas como o pacote do kernel a ser utilizado, os drivers do hardware para serem incluídos em seus respectivos tipos de imagens, qualquer componente de software que seja necessário, toda configuração de bootloader que precisar, qualquer informação especial necessária ao formato da imagem. Cada camada do BSP precisa de ao menos um arquivo de máquina, mas pode-se inserir mais de um. O arquivo crowbay.conf pode no entanto incluir informações de arquivo de aprimoramento de hardware, definindo o pacote de arquitetura e especificando flags de otimização, que serão cuidadosamente selecionadas, de acordo com o respectivo processador. Esses arquivos de aprimoramento são encontrados em meta/conf/machine/include meta-bsp_name/binary/bootable_images Esse diretório normalmente contém imagens ativas para o ambiente gráfico e funções mínimas. Os arquivos binários presentes nessa pasta são as dependências de hardware necessárias para cada hardware de destino. meta-bsp_name/recipes-bsp/* Esse diretório é opcional e contém vários arquivos de receita para o BSP. Preste atenção aos arquivos de formfactor que são *.bbappend que podem por exemplo, aumentar a receita que inicia o build. Se o BSP não tiver uma entrado do tipo formfactor, os padrões serão inseridos de acordo com o arquivo de configuração formfactor, que foi instalado pela receita geral de formfactor meta/recipes-bsp/ formfactor/ formfactor_0.0.bb, localizado no diretório de origem. Como parte desse explicativo inicial, selecionamos para o passo-a-passo a distribuição (LTS) do Ubuntu (http://www.ubuntu.com/download/desktop ), caso exista uma versão mais atualizada do Ubuntu disponível, pode utilizá-la. Gostaríamos de ressaltar a nossa opção em utilizar o LTS ( Long Term Support Suporte estendido ), pois seu código e atualizações serão suportadas por um período de tempo maior, enquanto a versão convencional é suportada por apenas 1 ano, as versões LTS são suportadas por 6 anos após o seu lançamento
17 Verifique se está navegando, entre em algum site como o Google, e certifique se de que esteja com conectividade. De maneira geral, todos os comandos que deverão ser dados no terminal estarão com o $ precedendo eles. Atualize os repositórios, abra o terminal e digite ~$ sudo apt-get update. Instale e configure algumas dependências necessárias para o processo, executando os seguintes comandos: ~$ sudo apt-get install gawk wget git-core diffstat unzip textinfo build-essential ~$ sudo apt-get install chrpath libsdl1.2-dev xterm curl autoconf automake libtool ~$ mkdir ~/bin ~$ curl > ~/bin/repo ~$ chmod a+x ~/bin/repo ~$ PATH=${PATH}:~/bin Com os conhecimentos adquiridos até agora sobre o Projeto Yocto, e o sistema Ubuntu instalado e funcionando em um computador, podemos começar o processo de obtenção dos arquivos base para funcionamento do nosso sistema de criação de distribuições do Linux para a Thunderboard, para isso siga o nosso mão na massa. Configurando o ambiente Para manter uma organização, indicaremos as configurações a serem feitas, mas sinta-se livre para escolher outras localidades para o salvamento do nosso pre-build. Quando se logar no sistema, abra o terminal, ele já estará apontado para a pasta do seu usuário e como já dito anteriormente, nossa intenção é apresentar o passo-a-passo para o aprendizado, vamos criar uma pasta na área de usuário para facilitar a visualização e o acesso. Execute os comandos que estão após o $: ~$ mkdir p thunderboard-bsp ~$ cd thunderboard-bsp Baixando o BSP ~$ curl > repo ~$ chmod a+x repo ~$ repo init -u https://github.com/phiinnovations/bsp-phi-thunderboard -b dora ~$ repo sync Configurando o diretório de compilação Configure o diretório de trabalho, e aceite o acordo de licença de usuário final, se for exibido, digitando y ao final
18 ~$ source setup-environment build Compilando uma imagem mínima para a Thunderboard Execute o comando de compilação a seguir, devendo demorar algumas horas dependendo do seu hardware. ~$ bitbake core-image-minimal Gravando a imagem no cartão SD Coloque o cartão SD no computador que está utilizando para o desenvolvimento e execute os comandos a seguir, substituindo o <dispositivo> pelo endereçamento da memória que foi criada no sistema, por exemplo, /dev/sdb ~$ cd tmp/deploy/images/wandboard-solo/ ~$ sudo dd if=core-image-minimal-imx28evk.sdcard of=<dispositivo> bs=1m ~$ sync Após o término do processo de cópia e inserir o cartão SD no conector CN5, a Thunderboard já estará pronta para poder bootar e ser inicializada, para isso conecte a ela o TTL, utilizando a porta serial identificada no conector CN8 e abra um software terminal, como o PUTTY, em N 1 na porta especificada. Entendendo as pastas da compilação fsl-community-bsp: Base (BASE) diretório onde todo o Yocto se localiza (recipes, código fonte, built packages, imagens, etc) BASE/sources: Source (SOURCE) diretório onde o metadata (layers) fica BASE/build: Build (BUILD) diretório onde os comandos do bitbake são executados BASE/build/tmp: Target (TMP) diretório para todos os comandos do bitbake BASE/build/tmp/work: Working (WORKING) diretório para as tarefas de receitas BASE/build/tmp/deploy: Deploy (DEPLOY) diretório onde são encontrados os dados de compilação do bitbake BASE/build/tmp/deploy/images: Imagens completas e parciais são encontradas nessa pasta
19 Referências de auxílio ao desenvolvimento do guia Desenvolvedor da imagem para a Thunderboard: https://github.com/phiinnovations/bsp-phi-thunderboard Projeto criado pelo desenvolvedor do processador e suporte à comunidade: https://github.com/freescale https://community.freescale.com/ Desenvolvedor do projeto para administração dos processos de compilação: https://www.yoctoproject.org/ Desenvolvimento e manutenção dos processos: Livro Embedded Linux Development with Yocto Project Otavio Salvador/Daiane Angolini Desenvolvimento do BSP: Suporte e Contato Técnico: Comercial: Telefone: