Webinar Freescale Desenvolvimento de sistemas embarcados em Linux com a Thunderboard 11/12/2013 Índice • Sobre a Thunderboard – – – – Descrição do produto System on Module (SoM) – MDP i.MX28 Aplicações Vantagens • BSP – Linux – Yocto Project – Xenomai • Dúvidas SOBRE A THUNDERBOARD O que é a Thunderboard? Uma solução flexível e de baixo custo para aplicação em sistemas embarcados Hardware para aplicações embarcados • Contém recursos básicos de um microcomputador embarcado • De fácil integração em soluções personalizadas • Baixo custo Reference design para projeto de equipamentos dedicados • Placa base do System on Module MDP i.MX28 • Projeto base para projeto de novo hardware dedicado Thunderboard Sobre a Thunderboard • Projeto em parceria Phi Innovations – iTech • Motivação inicial: CPU base para aplicação em uma linha de produtos da área de soluções do Grupo iTech • Resultado final: uma CPU de custo baixo para uso geral, em diversos segmentos de mercado Características Um projeto de hardware em duas camadas SoM (System on Module) System on Module: Placa independente contendo todos os recursos computacionais necessários para projeto de hardwares dedicados com diferentes periféricos. Placa Base: Placa contendo todos os periféricos dedicados de um sistema embarcado específico Placa Base A comunicação entre as duas placas se dá através de conector ou soldagem Vantagens de projetos com SoM Utilizar um SoM reduz risco de projeto de um sistema embarcado • Projeto de hardware – Maior risco está no projeto dos componentes de CPU de um sistema embarcado • Riscos – Gerenciamento de componentes em fim de linha – Projeto de PCB de altas velocidades – Aumento na quantidade de camadas de placa Vantagens de projetos com SoM Tempo de desenvolvimento • Time to market reduzido ao usar um SoM Placa base de complexidade reduzida • Baixo custo • Poucas camadas Flexibilidade do projeto • É possível melhorar o desempenho e recursos do projeto através da substituição da unidade computacional do projeto Especificações da Thunderboard Recursos System on Module MDP i.MX28 Ethernet USB Host duplo USB On The Go (OTG) Conector UART (FTDI) Cartão Micro SD Acelerômetro Alimentação através de conector P4 – 5V • 4 Leds auxiliares • Barra de expansão • • • • • • • • Expansão • • • • • 3 seriais UARTs 2 interfaces CAN GPIO LCD ADC – 7 canais 12 bits e um canal 2 MSPS • SPI • I2C • I2S SoM MDP i.MX28 • • • • • • Microprocessador Freescale i.MX28 ARM926EJ-S de 454 MHz Cache 16 KB/32 KB 128 MB de memória RAM DDR2 512 MB de memória NAND Flash PHY Ethernet – Suporte a IEEE 1588 • Dimensão: 35 x 44 mm • Encapsulamento castellation de 146 pinos • Alimentação 5 V Vantagens do MDP i.MX28 • Baixo custo • Produção nacional • Fácil produção e manutenção – Encapsulamento castellation facilita montagem e reparo de placa • Versátil – Permite o emprego em diferentes aplicações APLICAÇÃO Cenários de uso • Utilização da Thunderboard em projetos específicos • Utilização do MDP i.MX28 em projetos específicos Uma placa para ser usada em equipamentos • Leds de um lado e conectores de outro – Apropriado para aproveitamento em caixas dedicadas • Conectores de expansão – Para inclusão de novas funcionalidades • Conectividade essencial – USB Host – USB Device – Ethernet • Armazenamento externo – Suporte a pendrive – Cartão SD Aplicações com Thunderboard • Automação comercial – Leitores de dados – Teclados – Microterminais • Sensoreamento – Aquisição e transmissão de dados • Interface Homem Máquina (IHM) • Telemetria • Expansão através de hardware adicional – – – – – – Modems 3G e GPRS Sensores (GPIO/I2C/SPI) Display LCD Touchscreen Wi-Fi Bluetooth Ethernet Adicional Aplicações com MDP i.MX28 • Networking – Roteadores personalizados • Automação industrial – CPU para CLPs e IHMs • Automação comercial – Microterminais – Coletores de dados – IHMs • Telemetria – Modems – Unidades remotas de monitoramento – Rastreadores de veículos • Computadores de bordo • Segurança – Sistemas de vigilância – Proxy BSP Definição de BSP • BSP – Board Support Package Conjunto de software necessário para execução de um determinado conjunto de software para um hardware específico Geralmente é composto pelo sistema operacional embarcado executado no equipamento eletrônico, juntamente com seus drivers de dispositivos e suas ferramentas de desenvolvimento de software aplicativo Linux • Suporte ao sistema operacional Linux • Linux implementado na ferramenta Yocto – Geração de todo o ambiente de desenvolvimento de software aplicativo para a Thunderboard/SoM Yocto Project • Projeto da Linux Foundation com o objetivo de uniformizar o desenvolvimento de BSPs Linux para diferentes microprocessadores e placas Fornece templates, ferramentas e métodos para auxiliar na criação de sistemas personalizados baseados em Linux para produtos embarcados independentemente da arquitetura de hardware Yocto Project Principais componentes • Openembedded – – – – http://www.openembedded.org Framework para criar distribuições Linux para sistemas embarcados Pode incluir bootloader, kernel Linux e aplicações É um conjunto de metadados usado para cross-compilar, empacotar e instalar pacotes de software • A partir de seu código fonte Yocto Project Principais componentes • Poky Platform Builder – http://www.pokylinux.org – É a ferramenta de construção de distribuição Linux (Linux build system) do Projeto Yocto – É derivado do OpenEmbedded – É um subconjunto do OpenEmbedded, com recursos compartilhados com o intuito de integração direta Yocto Project Principais componentes • Bitbake – http://bitbake.berlios.de/ – Ferramenta utilizada para execução de tarefas – Derivada do projeto de código aberto Portage • Sistema de gerenciamento de pacotes da distribuição Gentoo – Utilizado principalmente para compilação de pacotes – É base dos projetos Poky/OpenEmbedded Construção de uma imagem QEMU ou placa final Arquitetura Áreas funcionais • Configuração de usuário: metadados usados para controlar o processo de compilação • Camadas de metadados: várias camadas de metadados com configurações de software, de hardware e de distribuição • Arquivos fonte: versões oficiais, projetos locais ou repositórios remotos • Package feeds: diretórios contendo pacotes de saída que são usados para construção de uma imagem ou SDK (Software Development Kit) • Imagens: imagens produzidas pelo processo de desenvolvimento • SDK de desenvolvimento de aplicações: ferramentas de cross compilação Ambiente de trabalho Procedimento básico • Baixar o projeto poky • Executar configurações de variáveis de ambiente – source oe-init-build-env • Alterar os arquivos de configuração – bblayers.conf – local.conf • Executar a compilação desejada – bitbake <target> Exemplos de targets • core-image-minimal • meta-toolchain • openssh Cada imagem possui um arquivo .bb com a receita responsável pela execução das tarefas correspondentes a este procedimento MDP i.MX28 – Código fonte • Projeto hospedado no Github – https://github.com/PhiInnovations/mdp28-linux-bsp • Criada uma camada específica para a placa – meta-phi • Criada uma imagem específica para a placa – image-phi-mdp28 • Criada uma configuração específica de hardware – mdp28 Xenomai • Framework para desenvolvimento de sistemas de tempo real em Linux – Objetivo é permitir com que software criado em outros ambientes possam executar em Linux, mediante recompilação • Projeto criado em 2001 • Se fundiu com o RTAI em 2003 – RTAI/Fusion • Se separou do RTAI em 2005 Xenomai USER SPACE Aplicativo convencional Chamadas de sistema Linux Kernel KERNEL SPACE Aplicativo tempo real Chamadas de API Interrupções de hardware Xenomai RTOS (nucleus) Interrupções de hardware Chamadas de I/O Adeos/I-pipe Interrupções de hardware Hardware Chamadas de I/O Xenomai • Utiliza o ADEOS como tecnologia de separação de domínios – Tempo Real – Não tempo real • Possui um RTOS próprio (nucleus) – Skins para utilização de código de outros sistemas operacionais • Comunidade relativamente grande – Em comparação com outras iniciativas similares – Suporte a diversas plataformas Principais componentes • Xenomai Nucleus – Sistema operacional de tempo real. Implementa todas as funcionalidades necessárias para execução de aplicativo de tempo real • Real Time Driver Model (RTDM) – Infraestrutura para desenvolvimento de drivers e tasks para execução em kernel-space com Xenomai • Native API – Conjunto de funções que controlam o funcionamento do Xenomai Nucleus. Trata-se de uma biblioteca nativa e específica para um projeto de software escrito para Xenomai • POSIX Skin – Implementação de funcionalidades de tempo real para execução no Xenomai Nucleos conforme as especificações de API de tempo real definidas no padrão POSIX • Padrão POSIX é a principal referência de API dos principais vendors de RTOS do mercado • HAL – Hardware Abstraction Layer. Utilizada para comunicação com ADEOS • SCHED – Funcionalidades para controle de escalonadores Roadmap BSP • Fase 1 – suporte inicial – Configuração básica – Ambiente de desenvolvimento • Fase 2 – Qt – Suporte ao desenvolvimento de interface gráfica com o usuário • Fase 3 – Xenomai – Suporte ao desenvolvimento de software em tempo real PERGUNTAS ? Obrigado Informações para contato: • [email protected] • [email protected]