As melhores ferramentas de desenvolvimento para Linux embarcado
25 de agosto de 2020 -
📖 8 min
Autor:
Equipe de Relações Públicas da TuxCare
Vá direto para um resumo gerado por IA desta postagem do blog
A maioria dos desenvolvedores está acostumada a usar uma interface gráfica para o desenvolvimento; portanto, ao mergulhar no mundo da IoT e do desenvolvimento de Linux embarcado, essa é uma experiência nova que exige mais programação de baixo nível e execução por linha de comando. Se você quiser criar sistemas como IoT, GPS, tecnologia automotiva, manufatura ou qualquer outro tipo de programação eletrônica de baixo nível, precisará de um ambiente de desenvolvimento embarcado para trabalhar.
O Linux embarcado é comum na maioria desses sistemas porque é de código aberto, conta com ampla documentação para quem está começando e exige um custo inicial muito baixo para a utilização do sistema operacional. Por esse motivo, os desenvolvedores interessados nessa área geralmente trabalham com programação em Linux e baixam as ferramentas adequadas para conectar, programar e implantar seus produtos. Compilamos uma lista das melhores ferramentas de programação em Linux embarcado para você dar os primeiros passos, seja você um iniciante ou um profissional em busca de uma nova ferramenta.
Os desenvolvedores devem estar familiarizados com os editores de GUI mais comuns, pois é com eles que trabalham diariamente. Por exemplo, o Visual Studio é um editor comum para C# e VB.NET. Desenvolvedores de Java costumam usar o Eclipse ou o NetBeans. Desenvolvedores de Python usam o PyCharm. Cada desenvolvedor tem seus editores favoritos, e as melhores ferramentas facilitam a escrita de código com codificação por cores, para identificar mais facilmente as diferentes sintaxes. Como a programação embarcada é feita principalmente em C ou C++, a solução certa deve oferecer suporte a essas duas linguagens.
Geany: O Geany é uma interface gráfica de usuário (GUI) muito mais voltada para o realce de sintaxe e o suporte a tags HTML e XML. Ele também é compatível com Java, PHP, Python, Perl e Pascal. Estamos listando essa ferramenta em primeiro lugar, pois é a mais fácil de todas para a maioria dos desenvolvedores que não estão familiarizados com comandos no estilo Unix.
Lime: Os desenvolvedores familiarizados com o editor Sublime Text vão apreciar seu sucessor, o Lime. A interface é semelhante à do Sublime e ele foi desenvolvido na linguagem Go, que está em alta atualmente.
Nano: O Nano é útil tanto para programadores iniciantes quanto para os mais experientes. Ele é baseado em linha de comando, mas ainda assim destaca e codifica o texto com cores, de modo que a sintaxe do C seja facilmente compreensível.
Bluefish: O Bluefish possui alguns recursos adicionais em relação às ferramentas listadas acima. Ele é voltado para o desenvolvimento em Linux e também para o desenvolvimento web, mas também trabalha com arquivos remotos e oferece opções de verificação ortográfica e de desfazer. Para projetos maiores, o Bluefish oferece melhores recursos de organização e funciona bem com vários projetos.
Vim: editor de texto versátil e altamente configurável, presente literalmente em todas as plataformas. Apesar da curva de aprendizado relativamente íngreme, ele é utilizado por muitos desenvolvedores de sistemas embarcados, que o apreciam pela possibilidade de personalizar praticamente tudo e usá-lo em praticamente qualquer lugar, mesmo em pequenos sistemas embarcados onde não há modo gráfico disponível.
Compiladores
Depois que seu programa estiver escrito, é hora de compilá-lo. Um compilador transforma o código escrito por humanos em código binário para uso no sistema local, como um laptop ou servidor. No caso do Linux embarcado, você precisa de um compilador que crie arquivos binários para a CPU da máquina de destino, e não para a do seu host. Os compiladores para desenvolvimento embarcado também são conhecidos como cadeias de ferramentas de compilação cruzada.
Você poderia montar seu próprio ambiente, mas isso é trabalhoso, especialmente para um desenvolvedor iniciante. Em vez disso, existem várias ferramentas que permitem compilar, vincular e montar código em C. Se você usa um sistema Linux baseado no Debian, como o Ubuntu, para sua programação, o sistema operacional já vem com essas ferramentas disponíveis. Execute o comando a seguir para instalá-las:
Se você preferir montar sua cadeia de ferramentas de compilador cruzado, aqui estão algumas ferramentas que oferecem funcionalidades de compilador para que você não precise criá-las do zero:
Crosstool-NG: Esta cadeia de ferramentas básica de compilador cruzado irá compilar seu código e criar as bibliotecas de ligação necessárias.
Buildroot: O Buildroot é ótimo para iniciantes, pois possui um sistema de menus e uma interface muito mais robustos. Ele compila, cria bibliotecas e constrói uma hierarquia de diretórios, facilitando a navegação em projetos de grande porte.
Yocto: O Yocto vai além da compilação e cria pacotes para o sistema embarcado de destino. Ele também gera binários e bibliotecas, mas os pacotes facilitam a distribuição e a instalação em um sistema externo. O Yocto é a solução mais poderosa e versátil, mas isso tem um custo: sua extrema complexidade.
O código escrito por humanos precisa ser transformado em linguagem de máquina. Os compiladores convertem o código escrito por humanos em código-objeto e, em seguida, em arquivos binários. Os assemblers realizam uma conversão muito mais rápida, criando arquivos binários diretamente a partir de código de baixo nível, que se assemelha muito mais ao código de máquina. Os assemblers são muito mais rápidos que os compiladores, mas estão restritos a linguagens de baixo nível. Para desenvolvedores avançados que trabalham com linguagens de montagem de baixo nível, um assembler pode ser usado para mapear as instruções codificadas com a execução da CPU.
O Linux possui seu próprio assembler, chamado GNU Assembler (também conhecido como gas ou as). Ele está incluído no GNU Binutils, que é uma coleção de ferramentas binárias específicas para o sistema operacional Linux. Você pode ver uma lista das ferramentas incluídas na instalação aqui.
Para instalar o Binutils, execute o seguinte comando:
sudo apt install build-essential
Mas, se você precisar compilar para arm64, instale:
sudo apt install crossbuild-essential-arm64
Depurador
Todo desenvolvedor sabe que o código precisa ser testado e depurado. Um depurador permite que você veja o que acontece a cada linha de execução. Seu código pode estar sintaticamente correto, mas erros de lógica farão com que o programa trave. Você pode eliminar esses erros usando um depurador.
O Projeto GNU disponibiliza um depurador para download. Ele é específico para programação em C, por isso é perfeito para depurar código de sistemas embarcados. Para instalá-lo pela linha de comando, use o seguinte comando:
sudo apt-get install libc6-dbg gdb valgrind
Linker
Ao criar um programa, é comum haver vários arquivos e bibliotecas necessários para seu funcionamento. Esses arquivos são vinculados durante o processo de compilação por meio de um vinculador. Os compiladores geralmente realizam a vinculação automaticamente, mas se você usar assemblers para converter código de baixo nível em linguagem de máquina, talvez seja necessário um vinculador para unir os arquivos do projeto.
Se você usar um dos compiladores listados acima, provavelmente não precisará de um vinculador, mas o Projeto GNU disponibiliza um vinculador para compilações de projetos mais avançadas. O vinculador está disponível com o Binutils, mencionado na seção “Assemblers”. A instalação do Binutils incluirá o vinculador. Use o seguinte comando para instalar as ferramentas:
sudo apt-get install build-essential
Emuladores
Se você já programou para o sistema operacional Android, provavelmente já trabalhou com um emulador. Um emulador é um programa que reproduz o ambiente de destino. Todos os elementos da interface, comandos, imagens de saída e recursos são exibidos no seu computador local de maneira semelhante ao que seria exibido aos usuários em seus dispositivos embarcados.
A ferramenta gratuita mais popular é o QEMU. O QEMU permite que você visualize suas criações em várias distribuições do Linux. Para as distribuições Debian ou Ubuntu, execute o seguinte comando para instalá-lo:
sudo apt-get install qemu
Ambientes completos de desenvolvimento de software
A lista de softwares acima permite que você personalize seu ambiente de desenvolvimento, mas há vários pacotes completos de IDE disponíveis que realizam todas as tarefas de edição e compilação para você, sem a necessidade de instalar recursos separados. Os ambientes de desenvolvimento IDE apresentados a seguir oferecem uma interface gráfica completa, suporte multiplataforma e, em alguns casos, suporte a aplicativos web que podem ser incorporados aos seus projetos.
PyCharm: O PyCharm foi desenvolvido para desenvolvedores de Python, mas oferece suporte multiplataforma e funciona bem para desenvolvedores de Linux. A JetBrains, empresa desenvolvedora do PyCharm, disponibiliza um recurso adicional chamado CLion, destinado especificamente à programação de sistemas Linux embarcados.
Qt Creator: O Qt Creator foi projetado especificamente para a programação de sistemas embarcados. Ele possui um emulador para diversos dispositivos-alvo, incluindo veículos automotivos, IoT, TVs, aplicativos móveis e muito mais.
MPLAB X: Este IDE foi desenvolvido para o desenvolvimento de sistemas embarcados com microcontroladores PIC e controladores de sinal.
Visual Studio: A maioria dos desenvolvedores conhece o Visual Studio por sua programação .NET, mas o plug-in VisualGDB transforma a interface do Visual Studio em uma plataforma de desenvolvimento multiplataforma para Linux destinada a sistemas embarcados.
Eclipse: O Eclipse é um IDE comum para desenvolvimento em Java, mas o complemento “Eclipse IDE for Automotive Software Developers” oferece as ferramentas e o compilador necessários para a criação de soluções para o setor automotivo.
Arduino: Para desenvolvedores que desejam experimentar a programação de sistemas embarcados, o Arduino é um bom ponto de partida. Ele inclui o hardware e o software necessários para um ambiente completo que auxilia os iniciantes no aprendizado.
ARM Keil: Para uma plataforma de desenvolvimento completa, o ARM Keil pode ser usado para programar praticamente qualquer dispositivo baseado em ARM. É um IDE ideal para profissionais que precisam trabalhar com os dispositivos mais populares do mercado. O IDE oferece modelos de código e projetos de exemplo para os iniciantes aprenderem.
Conclusão
Se você deseja começar a desenvolver em Linux embarcado, as ferramentas acima constituem uma lista completa do que é necessário para colocar seu ambiente em funcionamento. A programação em Linux embarcado é um ambiente diferente da programação padrão para computadores de mesa, mas é uma ótima maneira de se familiarizar com o funcionamento dos sistemas de IoT e automotivos.
Inscreva-se em nosso popular boletim informativo
Junte-se a mais de 4.500 profissionais de Linux e código aberto!
2 vezes por mês. Sem spam.
Índice
Obtenha as respostas sobre segurança de código aberto de que você precisa