Um projeto open source pouco convencional chama a atenção ao apresentar uma proposta curiosa: executar um sistema operacional com interface gráfica completa em um microcontrolador. O projeto em questão é o FRANK OS, que acaba de lançar sua primeira versão estável, a 1.0.
A ideia por trás do sistema é transformar um microcontrolador simples em algo que se comporte como um pequeno computador com ambiente gráfico, janelas e aplicativos. Para isso, o FRANK OS utiliza uma arquitetura bastante diferente daquela encontrada em sistemas desktop tradicionais.
Em vez de usar o kernel do Linux ou outro sistema operacional voltado para computadores pessoais, o projeto foi construído sobre o FreeRTOS, um sistema operacional de tempo real bastante utilizado em dispositivos embarcados e equipamentos de Internet das Coisas.
Um desktop completo rodando em um microcontrolador
O FRANK OS foi projetado para rodar em hardware baseado no microcontrolador RP2350, um chip com cerca de 520 KB de memória SRAM e dois núcleos de processamento.
Dentro dessas limitações relativamente modestas de hardware, o sistema implementa um ambiente gráfico completo com gerenciamento de janelas, aplicativos e sistema de arquivos. Ele não tenta substituir sistemas tradicionais, mas demonstra até onde é possível levar a computação em dispositivos embarcados.

A arquitetura do sistema utiliza os dois núcleos do microcontrolador de forma separada. Um deles executa o agendador do FreeRTOS, a interface gráfica e os aplicativos, enquanto o outro fica dedicado à geração do sinal de vídeo em tempo real através de uma conexão DVI.
Essa divisão permite que o sistema mantenha a interface gráfica responsiva mesmo em um hardware extremamente limitado.
Interface inspirada no Windows 95
Visualmente, o ambiente gráfico do FRANK OS segue uma estética bastante familiar para quem utilizou computadores pessoais nos anos 1990. O design do desktop foi claramente inspirado no clássico Windows 95.

A interface apresenta elementos tradicionais como janelas sobrepostas, uma barra de tarefas na parte inferior da tela e um menu de aplicativos semelhante ao menu iniciar. Cada janela possui barra de título, botões de minimizar, maximizar e fechar, além de suporte para redimensionamento e movimentação com o mouse.
Também é possível alternar entre aplicativos utilizando um seletor de janelas semelhante ao tradicional atalho Alt+Tab.
A barra de tarefas exibe os aplicativos em execução e oferece acesso rápido ao menu principal do sistema. Um pequeno conjunto de indicadores também aparece na área equivalente à bandeja do sistema, incluindo relógio e controle de volume.
A interface foi construída especificamente para funcionar dentro das limitações do hardware, utilizando uma paleta de 16 cores e resolução de 640×480.
Aplicativos incluídos no sistema
Apesar das limitações de memória, o FRANK OS inclui um conjunto relativamente variado de aplicativos que demonstram as capacidades da plataforma.

Entre os programas disponíveis estão um terminal com interpretador de comandos, editor de texto, gerenciador de arquivos e alguns utilitários básicos. O sistema também traz pequenos jogos clássicos, incluindo versões de Campo Minado e Paciência.
Outros aplicativos incluídos são um player de MP3, um emulador do computador doméstico ZX Spectrum e um interpretador BASIC com interface gráfica.
Os aplicativos são compilados como binários ARM no formato ELF e carregados a partir de um cartão SD. Isso permite adicionar novos programas sem precisar recompilar o firmware completo do sistema.
Projeto voltado para experimentação
O objetivo do FRANK OS é experimental e voltada principalmente para entusiastas de eletrônica, sistemas embarcados e programação de baixo nível.
Ainda assim, o sistema demonstra como é possível implementar conceitos típicos de sistemas desktop, como multitarefa, janelas e gerenciamento de aplicativos, mesmo em dispositivos com recursos extremamente limitados.
Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter!