Posts com Tag ‘Linux’

Caro(a) Colega,

o webinar de amanhã é sobre desenvolvimento Linux embarcado utilizando-se do Yocto. Confira a resenha:

Get your free registrations for Doulos webinar ‘Getting Started with Yocto: Meeting the challenge of Embedded Linux deployment’. Doulos brings forth an interesting training webinar, which delves into how a minimal Linux system can be extended to include custom, packaged software. Doulos demonstrates how standard Linux tools, such as gdbserver or the Target Communication Framework agent (TCF agent), drops out of the build system and can be used in a stand-alone SDK. In the process, key concepts of the Yocto Project build system such as recipes, tasks and layers will be introduced. A board from the Toradex Colibri ARM family of SoMs will be used as an example platform.

The webinar covers the following topics:

  • Managed Linux distributions
  • The Yocto build system
  • Creating custom software packages
  • Application development and systems development SDKs
  • Example BSP support

      REGISTER

Abraço,

.Henrique

consulte sempre um engenheiro eletrônico


Getting Started with Yocto: Meeting the challenge of Embedded Linux deployment

Caro(a) Colega,

o webinar de amanhã é sobre o desenvolvimento de sistemas com Linux embarcado. Confira a resenha:

A adoção do Linux como sistema operacional em dispositivos embarcados tem aumentado consideravelmente nos últimos anos por conta do aumento da complexidade das aplicações, diminuição de custo dos microprocessadores e do vasto ecossistema de soluções disponíveis pela comunidade através de licenças open-source.

No webinar Desenvolvendo com Linux Embarcado, faremos um bate bapo com Sergio Prado (Embedded Labworks) e Cleiton Bueno (B2Open) , dois especialistas da área e iremos abordar os seguintes tópicos:

  • O que é Linux Embarcado? (anatomia básica do sistema, diferenças entre o Linux convencional, vantagens e desvantagens)
  • Quais os tipos de aplicações que podem ser desenvolvidas (headless, GUI, networking, controle etc)
  • Considerações do uso do Linux em ambientes de sistemas de tempo real
  • Comparativos entre Distribuições Prontas e Customizadas
  • Comparativo entre aplicações Bare Metal/RTOS e Linux Embarcado
  • Como migrar de aplicações microcontroladas (bare metal/RTOS) para microprocessadas (Linux embarcado)
  • Quais os cuidados que devem ser tomados com relação a licenças de software aberto?

Aproveite essa oportunidade para participar e interagir com os convidados através da seção de perguntas e respostas, ao final do webinar

Inscrições

Abraço,

.

Henrique

consulte sempre um engenheiro eletrônico

Caro(a) Colega,

o webcast de amanhã é sobre “Desenvolvimento de sistemas de tempo real com Linux embarcado”, em português. Não perca!!! Confira a resenha:

A Internet das Coisas e o aumento de interfaces multimídia são tendências mundiais que afrontam os engenheiros no desenvolvimento de sistemas embarcados. A primeira, principalmente, em funções dos novos requisitos de conectividade e a segunda relativo às necessidades de interfaces de usuário ricas e intuitivas. Estes novos requisitos são desafiadores, principalmente para os projetos de sistemas existentes que ainda utilizam a abordagem de microcontroladores. Os application processors da linha i.MX são baseados em núcleos ARM® Cortex-A e permitem a utilização de sistemas operacionais ricos em recursos e de alto nível de abstração, sendo um subsídio para o desenvolvimento rápido e de baixo risco e atendendo as tendências mais modernas. O benefício de utilizar um SO de alta abstração proporciona, por outro lado, uma preocupação justificada quanto ao determinismo do controle a ser implementado no sistema.

Neste Webinar você conhecerá diferentes abordagens para desenvolvimento de sistemas determinísticos (Sistemas Embarcados de Tempo Real) em Application Processors das linhas i.MX6 e i.MX7. Você vai conhecer:

  • a utilização de Linux Embarcado com o Paths de tempo real, Real-time Linux;
  • a utilização de Linux Embarcado com Xenomai;
  • a utilização de processador multicore heterogêneo (i.MX7).

Para cada abordagem, serão consideradas as vantagens e desvantagens, custo e desempenho e uma pequena demonstração técnica que possibilita verificar a efetiva diferença entre utilizar o Linux puro e as ferramentas de tempo real.

Nota: A Toradex recomenda que todos os participantes façam perguntas durante a sessão de Q&A que acontecerá no final do webinar.

Data do Webinar: 14 de dezembro de 2016

Horário: 13:00 horário de Brasília

Palestrante: Guilherme Fernandes, CEO, Toradex Brasil

Linguagem: Português

Faça o seu registro gratuitamente: Desenvolvimento de Sistemas de Tempo Real com Linux Embarcado

.

Abraço,

.

Henrique

consulte sempre um engenheiro eletrônico


por Pedro Bertoleti

                Água é e será o mais precioso recurso que podemos ter, afinal não há vida sem ela. Logo, o uso consciente de água não é somente desejado, mas sim fundamental. Sendo assim, monitorar este consumo para garantir um bom uso de água é uma necessidade. É exatamente neste ponto que este projeto entra: monitorar, de forma inteligente e via Internet, o consumo de água.

                Este projeto se caracteriza por sua multidisciplinaridade, reunindo conceitos de leitura de sensores, processamento de dados, programação em diversas linguagens, utilização de sistema operacional Linux e comunicação de sistemas embarcados com a Internet. Por este motivo, este é um projeto completo para aprendizado de eletrônica e sistemas embarcados.

Em termos de funcionalidades, este projeto compreende:

  • Monitoramento de consumo de água acumulado (em litros)
  • Monitoramento de vazão instantânea (em litros / hora)
  • Estabelecer uma meta de consumo / período e um e-mail de contato. Desta forma, quando o consumo acumulado de água superar a meta informada, um aviso é enviado via e-mail para o e-mail de contato fornecido. Além disso, na página web de utilização do sistema é mostrado um aviso de que a meta de consumo foi atingida.
  • Totalmente acessível ao usuário pela Internet, por qualquer navegador em qualquer sistema operacional.

 

 

Organização do sistema

                O projeto é composto de partes distintas, as quais interagem e funcionam conforme mostra a Figura 1.

IoT Figura 1

Figura 1 – diagrama do projeto completo

Onde:

1) Sistema embarcado bare-metal

Sistema dedicado a ler os pulsos de um sensor de fluxo d´água e medir vazão instantânea e contabilizar o consumo acumulado. Este sistema pode ser calibrado, o que permite sua aplicação em quaisquer condições de fluxo de água e, ainda, possibilita o uso com qualquer sensor do mercado que seja compatível eletricamente e que opere com pulsos proporcionais ao fluxo de água passante.

2) Sistema embarcado Linux

Sistema responsável por se comunicar com o sistema medidor / bare-metal e a Internet. Este é a parte responsável por fazer a interface com a Internet (controle e monitoramento do usuário). Em termos de conectividade com a Internet, este sistema utiliza WiFi, o que permite maior liberdade de posicionamento do mesmo em uma residência, por exemplo.

3) ZigBEE

A comunicação entre o sistema embarcado bare metal e sistema embarcado Linux é feito sem fio, utilizando para isto ZIgBEE (um em cada sistema, ambos com antena chip).

4) Dispositivos finais

Quaisquer dispositivos com navegador web e conectividade com Internet (smartphones, tablets, computadores, etc.). É importante ressaltar que não há restrição quanto a sistemas operacionais, desde que suportem um navegador e permita conexão à Internet (algo que a grande maioria dos sistemas operacionais permite).

                Outro ponto interessante é a comunicação entre dispositivos finais e o sistema Linux embarcado. Esta é feita utilizando MQTT (Message Queue Telemetry Transport), um protocolo de comunicação baseado no TCP/IP e especificado com foco em transporte de mensagens curtas para Internet das Coisas. Ou seja, há garantia de entrega de 100% dos pacotes, além da rapidez devido a transmitir apenas mensagens curtas. Neste protocolo, tanto os dispositivos finais quanto o sistema Linux embarcado se comportam como clientes, sendo o servidor online (este servidor chama-se broker).
Logo, mesmo na ausência de um dos elementos (dispositivos finais ou sistema Linux embarcado), nenhum erro / feedback de sistema offline é emitido.

.

.

Recursos utilizados

Neste projeto, foram utilizados os seguintes recursos de hardware e software:

a) Recursos de hardware

                No sistema bare metal, foi utilizado um microcontrolador PIC 18F4520. A escolha foi devido ao grande número de material e ferramentas de desenvolvimento (inclusive ferramentas free de boa qualidade) disponíveis para este microcontrolador, além da facilidade em achá-lo no mercado (principalmente para compras de baixo volume, algo interessante para os “hobbystas”).
Já no sistema Linux embarcado, foi utilizado um Intel Edison em conjunto com uma placa expansora de I/O Arduino Expansion Board. A escolha do Intel Edison foi feita considerando suas reduzidas dimensões físicas, baixo consumo, alta conectividade (como WiFi já embutido, por exemplo) e boas configurações relacionadas a processamento e memória RAM.

b) Recursos de software

                Como recursos de software, no sistema bare metal foi utilizado a IDE MPLAB v8.83 em conjunto com o compilador CCS. O firmware foi escrito totalmente em linguagem C.

                No sistema embarcado Linux, todo o sistema foi feito utilizando a linguagem Python. A escolha foi feita baseado no grande número de tutoriais e manuais existentes para consulta, além de ser uma linguagem com altíssimo nível de abstração e de fácil aprendizado, permitindo desenvolver um sistema complexo com poucas linhas de código (em comparação a uma linguagem mais tradicional, como a linguagem C, por exemplo) e com pouca experiência na linguagem.

.

Veja o sistema funcionando por completo

Para conferir o sistema funcionando pra valer, veja estes vídeos:

O projeto está detalhadamente explicado e disponível na íntegra para livre consulta e uso nos seguintes links:

Caro(a) Colega,

o artigo Anatomia de um Sistema Linux embarcado foi publicado originalmente no site Embarcados e é de autoria de Diego Sueiro. É um ótimo artigo introdutório sobre esse assunto. Aproveite!

Abraço,

Henrique

consulte sempre um engenheiro eletrônico

==========================================

Anatomia de um Sistema Linux embarcado

 Pinguim

Um sistema Linux embarcado não se difere, no quesito sistêmico, de um sistema Linux desktop. A mesma estrutura e conceitos são aplicados em ambos os domínios. A principal diferença está nos requisitos de processamento, armazenamento, consumo de energia e confiabilidade. Na maioria dos sistemas Linux embarcado, os recursos disponíveis são limitados e muitas vezes a interface com usuário é bastante limitada ou simplesmente não existe.

Seguem alguns exemplos de sistemas embarcados que utilizam o Linux como sistema operacional:

  • Roteador;
  • Setup-box;
  • Smart TV;
  • Controlador Lógico Programável (CLP);
  • Câmera Digital.

.

Arquitetura Básica

Na arquitetura básica de um sistema Linux podemos identificar cinco componentes básicos:

arq_bas_linux_emb

 

  1. Hardware: o seu produto;
  2. Bootloader: iniciado pelo hardware, responsável pela inicialização básica, carregamento e execução do kernel Linux;
  3. Kernel Linux: núcleo do sistema operacional. Gerencia CPU, memória e I/O, exportando serviços para as aplicações do usuário;
  4. Rootfs: sistema de arquivos principal. Possui as bibliotecas do sistema para uso dos serviços exportados pelo kernel, além das bibliotecas e aplicações do usuário;
  5. Toolchain: conjunto de ferramentas para gerar os artefatos de software do sistema.

 .

Hardware

Vamos considerar um roteador Wi-Fi doméstico como exemplo de plataforma de hardware:

hw_linux_emb

.

O Linux kernel é capaz de rodar em mais de 20 arquiteturas de CPU diferentes. Como por exemplo: x86, ia64, ARM, PowerPC, MIPS, SuperH, Blackfin, Coldfire, Microbalze.

Tem suporte à arquiteturas de 32 e 64 bits e arquiteturas que não possuem MMU (Memory Management Unit).

Suporta armazenamento em memórias NAND, FLASH, MMC e hard disks.

No nosso exemplo, um sistema básico pode funcionar com até 8MB de RAM e 2MB de armazenamento, uma vez que, poucos drivers, funcionalidades do kernel e bibliotecas e aplicativos são necessárias para que o sistema desempenhe as funções desejadas.

 .

Toolchain

Conjunto de ferramentas de programação usadas para gerar determinado produto, seja um software ou mesmo um sistema completo. Quando a plataforma de desenvolvimento (host) é diferente da plataforma alvo (target), chamamos o toolchain de cross-compiling toolchain.

toolchain_linux_emb-660x284

Componentes principais:

  • Compilador (gcc);
  • Assembler e Linker (binutils);
  • Biblioteca C padrão (glibc, uclibc, dietlibc, musl, etc).

Algumas opções de toolchains prontas;

 .

Artefatos de software de um Sistema Linux embarcado

Os artefatos de software principais de um sistema Linux embarcado são: Bootloader, Kernel e Rootfs. Tomando-se como base o hardware proposto, estes artefatos estão organizados na memória flash da seguinte maneira:

flash_linux_emb

.

Bootloader

Toda CPU possui um mecanismo de inicialização, que é responsável por carregar e executar o bootloader. Em algumas arquiteturas de CPU é necessário o uso de um bootloader de primeiro estágio, no qual é carregado pelo processador e executado a partir de sua memória interna. Em alguns casos esse bootloader de primeiro estágio está concatenado junto ao bootaloader.

As principais funcionalidades do bootloader são:

  • Inicializar o hardware antes de executar o kernel como, por exemplo, configurar a controladora de SDRAM;
  • Passar parâmetros para o kernel;
  • Prover mecanismos para carregar e gravar o kernel e o sistema de arquivos na memória flash ou cartão SD;
  • Inicializar via rede ou pelo cartão SD;
  • Rotinas de diagnóstico de hardware.

Principais bootloaders utilizados em sistemas embarcados:

  • x86:
    • LILO;
    • Grub;
    • Syslinux.
  • ARM, MIPS, PPC e outras arquiteturas:
    • U-Boot;
    • Barebox;
    • Redboot.

 .

Kernel

O Kernel é o coração do nosso sistema. No boot ele é responsável por:

  • Inicializar CPU, memória e barramentos;
  • Configurar a memória virtual (se tiver MMU);
  • Inicializar os device drivers;
  • Iniciar o escalonador de tarefas;
  • Iniciar threads do kernel;
  • Montar sistema de arquivos principal (rootfs) e chamar o processo init.

Como principais características podemos apontar:

  • Gerencia execução de processos e controla acesso à memória e I/O;
  • Gerenciamento do kernel space X user space;
  • Interface de user space com kernel space via chamadas do sistema (system calls);
  • Acesso ao hardware via arquivos de dispositivo;
  • Gerenciamento dinâmico dos módulos do kernel.

 .

Rootfs

Após ter sido montado pelo kernel e ter o processo init (PID = 1) iniciado, o rootfs utiliza seu mecanismo de inicialização (ex.: SysVinit, Systemd etc) para inicializar os processos e aplicações do sistema. É responsável por prover as bibliotecas de sistema e de usuário.

Alguns exemplos de aplicações para sistemas embarcados:

  • Dropbear: cliente e servidor SSH;
  • Thttpd: servidor web;
  • DirectFB: biblioteca gráfica;
  • SQLite: banco de dados;
  • Busybox: o canivete suíço de sistemas embarcados com Linux.

 .

Referência

Material do Treinamento Desenvolvendo Sistemas Linux Embarcado da Embedded Labworks.

Caro Colega,

2013 já está começando a acelerar. Confira os treinamentos para os próximos dias na seção de cursos e webinários. Não deixe de ver a agenda de cursos da ABNT para esse mês.

Abraço!

Henrique

consulte sempre um engenheiro eletrônico

Publicado no Portal Embarcados (Sergio Prado):

————

Doc­u­men­tos do hands-on de Linux embar­cado real­izado na ESC Brazil 2012.

Para ler o artigo completo clique aqui.

______________________________________________________________________________________________________________________________

Hands-on de Linux embarcado na ESC Brazil 2012
Portal Embarcados – 02/07/12
———————————————————————————————————————————————————————————————————-