Linux comercial x BSP
Autor: Flavio Alves | Publicado: 2011-11-14T08:41:00-08:00

Este artigo tem o intuito de esclarecer, ou pelo menos informar, qual é o real valor de uma distribuição Linux comercial para o desenvolvimento de um novo produto.Este artigo tem o intuito de esclarecer, ou pelo menos informar, qual é o real valor de uma distribuição Linux comercial para o desenvolvimento de um novo produto.Não pretendo neste artigo argumentar entre o desenvolvimento de uma distribuição comercial em função de uma distribuição realizada por equipes internas de desenvolvimento. Pretendo abordar este tema em um outro artigo.O objetivo aqui neste artigo é ilustrar a principal diferença entre uma distribuição Linux comercial em relação a um BSP fornecido por um fabricante de System On Chip (SoC).Quando um fabricante desenvolve um novo processador (ou SoC), ele tem interesse com que os engenheiros desenvolvam rapidamente novas soluções com este novo produto recém-lançado. Para isso, o fabricante deve realizar dois trabalhos: o desenvolvimento de uma placa reference-design, na qual os novos projetos serão construídos a partir deste projeto original; e uma distribuição Linux inicial, na qual funciona perfeitamente para esta placa e de onde se tem os componentes principais para desenvolvimento do software aplicativo que será o produto propriamente dito.Acredito que a questão do hardware de reference-design é bem resolvida. A empresa compra o hardware e realiza o download do material de projeto, que permite o projeto do novo hardware. Se o fabricante do reference-design fornecer módulos (System On Modules - SOM), o trabalho de projeto é ainda mais simplificado.Porém, no que se refere ao BSP (Board Support Package), a questão é um pouco mais complexa. Resumidamente, o BSP é um pacote que contém os seguintes elementos:* Toolchain - compilador capaz de gerar os binários para o sistema embarcado* Bootloader - previamente preparado para inicializar a placa com a CPU apropriada* Kernel do Linux - adaptado especificamente para atender às especificações do reference-design* Sistema de arquivos - distribuição Linux pré-preparadaA partir destes conceitos, aparente a questão de infra-estrutura de software está minimamente resolvida.Na grande maioria dos casos, o BSP inicial serve para o desenvolvimento de um protótipo. Esta solução não é necessariamente apropriada para uma aplicação final. E a razão para isso são os requisitos que o produto exige. São requisitos de hardware e não de produto. São questões do tipo:* Qual é o tempo de boot necessário para o sistema?* Qual é a quantidade máxima de memória do produto? Flash? Ram?* Quais são os componentes de acessibilidade ao sistema? Web server? Telnet? SSH? Nada disso?* O Linux será executado a partir da RAM? Existe arquivos salvos com persistência?* Quais os drivers que serão necessários? Quais protocolos? Quais não serão usados?Um BSP fornecido por um fabricante não atende a estas necessidades. O BSP fornecido pelos fabricantes devem ter um caráter genérico, de maneira a permitir a implementação rápida de diferentes soluções, que abrange todos os possíveis cenários de desenvolvimento de aplicações para os quais o SoC foi concebido. E, para ajustes específicos, dificilmente o fabricante dará o suporte necessário para personalização.A explicação para o não-suporte é o fato de o BSP ser um ponto de partida para realização do trabalho. Não é interesse dos fabricantes de SoC dar suporte ao Linux usado por seus usuários. É uma atividade complexa e honerosa.E é nessas horas que surgem os fornecedores de soluções em Linux. Podem ser tanto empresas de consultoria em Linux embarcado como fornecedoras de produtos em Linux embarcado. Estas empresas conhecem detalhamente os reference-design e oferecem todo o suporte necessário para a empresa obter o máximo do Linux embarcado em seu produto. E, com o suporte, é possível já nos estágios iniciais de projeto preparar uma solução dedicada, personalizada e otimizada.A conclusão deste artigo é que os projetistas de equipamentos eletrônicos devem levar em consideração já no início do projeto a possibilidade de contar com suporte especializado na infra-estrutura de software baseado em Linux embarcado. Este suporte pode ocorrer através de consultoria ou de uma distribuição comercial de Linux embarcado. Este suporte é fundamental para redução de risco e tempo de projeto do produto e garantia da melhor solução em Linux embarcado.Este artigo tem o intuito de esclarecer, ou pelo menos informar, qual é o real valor de uma distribuição Linux comercial para o desenvolvimento de um novo produto.Não pretendo neste artigo argumentar entre o desenvolvimento de uma distribuição comercial em função de uma distribuição realizada por equipes internas de desenvolvimento. Pretendo abordar este tema em um outro artigo.O objetivo aqui neste artigo é ilustrar a principal diferença entre uma distribuição Linux comercial em relação a um BSP fornecido por um fabricante de System On Chip (SoC).Quando um fabricante desenvolve um novo processador (ou SoC), ele tem interesse com que os engenheiros desenvolvam rapidamente novas soluções com este novo produto recém-lançado. Para isso, o fabricante deve realizar dois trabalhos: o desenvolvimento de uma placa reference-design, na qual os novos projetos serão construídos a partir deste projeto original; e uma distribuição Linux inicial, na qual funciona perfeitamente para esta placa e de onde se tem os componentes principais para desenvolvimento do software aplicativo que será o produto propriamente dito.Acredito que a questão do hardware de reference-design é bem resolvida. A empresa compra o hardware e realiza o download do material de projeto, que permite o projeto do novo hardware. Se o fabricante do reference-design fornecer módulos (System On Modules - SOM), o trabalho de projeto é ainda mais simplificado.Porém, no que se refere ao BSP (Board Support Package), a questão é um pouco mais complexa. Resumidamente, o BSP é um pacote que contém os seguintes elementos:Toolchain - compilador capaz de gerar os binários para o sistema embarcado
Bootloader - previamente preparado para inicializar a placa com a CPU apropriada
Kernel do Linux - adaptado especificamente para atender às especificações do reference-design
Sistema de arquivos - distribuição Linux pré-preparada
A partir destes conceitos, aparente a questão de infra-estrutura de software está minimamente resolvida.Na grande maioria dos casos, o BSP inicial serve para o desenvolvimento de um protótipo. Esta solução não é necessariamente apropriada para uma aplicação final. E a razão para isso são os requisitos que o produto exige. São requisitos de hardware e não de produto. São questões do tipo:Qual é o tempo de boot necessário para o sistema?
Qual é a quantidade máxima de memória do produto? Flash? Ram?
Quais são os componentes de acessibilidade ao sistema? Web server? Telnet? SSH? Nada disso?
O Linux será executado a partir da RAM? Existe arquivos salvos com persistência?* Quais os drivers que serão necessários? Quais protocolos? Quais não serão usados?
Um BSP fornecido por um fabricante não atende a estas necessidades. O BSP fornecido pelos fabricantes devem ter um caráter genérico, de maneira a permitir a implementação rápida de diferentes soluções, que abrange todos os possíveis cenários de desenvolvimento de aplicações para os quais o SoC foi concebido. E, para ajustes específicos, dificilmente o fabricante dará o suporte necessário para personalização.A explicação para o não-suporte é o fato de o BSP ser um ponto de partida para realização do trabalho. Não é interesse dos fabricantes de SoC dar suporte ao Linux usado por seus usuários. É uma atividade complexa e honerosa.E é nessas horas que surgem os fornecedores de soluções em Linux. Podem ser tanto empresas de consultoria em Linux embarcado como fornecedoras de produtos em Linux embarcado. Estas empresas conhecem detalhamente os reference-design e oferecem todo o suporte necessário para a empresa obter o máximo do Linux embarcado em seu produto. E, com o suporte, é possível já nos estágios iniciais de projeto preparar uma solução dedicada, personalizada e otimizada.A conclusão deste artigo é que os projetistas de equipamentos eletrônicos devem levar em consideração já no início do projeto a possibilidade de contar com suporte especializado na infra-estrutura de software baseado em Linux embarcado. Este suporte pode ocorrer através de consultoria ou de uma distribuição comercial de Linux embarcado. Este suporte é fundamental para redução de risco e tempo de projeto do produto e garantia da melhor solução em Linux embarcado.