Hélder Silva, responsável pela Área de Software e Sistemas para o Espaço da Edisoft, lidera aquele que é um dos sistemas operativos criados em Portugal mais bem-sucedidos de todos os tempos. O RTEMS by Edisoft pode não ter o número de instalações do Caixa Mágica, mas terá garantido seguramente níveis de rentabilidade superiores, com a venda de licenças para cerca de 40 missões espaciais – entre elas alguns satélites Galileo, da Agência Espacial Europeia. Desenvolvido pela Edisoft desde 2006, o RTEMS By Edisoft foi programado para executar missões com precisões do âmbito dos microssegundos, com ciclos de processamento lentos e sem grande capacidade de memória. Em breve, ficará concluída a primeira versão deste sistema operativo que corre em processadores ARM.
Que sistemas operativos foram desenvolvidos pela Edisoft para o segmento espacial?
Estamos a trabalhar já há muitos anos num sistema operativo em tempo real para satélites e que já vai em mais de 40 missões, tanto na Europa como fora da Europa. Na Turquia, (o sistema operativo) está presente no Göktürk-3, e na Coreia do Sul os ComSat 6 e 7… Começámos a desenvolver este sistema operativo em 2006 e começámos a desenvolver uma nova versão do sistema operativo. É uma evolução tecnológica, que permite que um sistema operativo controle vários processadores ao mesmo tempo. Até há pouco tempo, só se usava um único processador (em cada módulo espacial controlado pelo sistema operativo), e agora já se usam vários processadores. Porquê? Por causa daquilo que é necessário processar a bordo… imagens, comunicações com Terra…
Segundo me constou, há também uma versão que já deverá operar com processadores ARM…
Sim, há um protótipo que estamos a desenvolver, que já tem em conta o envio de processadores ARM para o Espaço.
O uso de processadores ARM implica alguma mudança na programação de sistemas operativos?
Para quem desenvolve aplicações que correm em cima do sistema operativo não… mas para quem desenvolve o sistema operativo tem de adicionar um board supported package para essa família de processadores.
Que linguagens costumam usar?
Usamos a linguagem C para a parte superior e o Assembly para a parte que liga o sistema operativo ao hardware… às drivers, ou aos próprios operadores.
Pergunta típica de pessoa que não percebe nada do assunto: não era possível fazer o mesmo com um Windows ou um iOS?
Não, porque não funcionam em tempo real. Vou dar um exemplo não com satélites, mas sim com centrais nucleares. Se o núcleo das centrais nucleares começar a aquecer, há um x tempo para reagir – o que significa reagir até uma determinada hora, um determinado minuto, milissegundo ou um determinado microssegundo. Se não reagir nesse momento, a central pode explodir. Nos satélites, as coisas são parecidas. Um exemplo: um satélite tem de abrir os painéis solares naquela hora. Os sistemas operativos, sejam eles Windows ou Linux, não conseguem cumprir esses requisitos.
E como é que se garantem esses requisitos? A programação é diferente?
Garantimos isso por desenho… e com a maneira como desenvolvemos os algoritmos. Temos cuidado com os algoritmos que são colocados dentro do sistema operativo, para que os tempos sejam respeitados. E depois fazemos baterias de desempenho que garantem que esses requisitos são usados no desenvolvimento de aplicações (que correm sobre o sistema operativo). Para isso, temos de garantir que consegue executar o pior cenário de execução. Sem passar esses testes, o sistema operativo não sai daqui.
Que testes são esses?
São testes automáticos. Se usarmos de forma sequencial, estes testes podem demorar um mês a executar. Quando chumba um teste, repete-se tudo outra vez… o que significa que pode demorar mais um mês a fazer os testes.
O sistema indica sempre onde está o erro?
Lembro-me que nos satélites Galileo, havia um problema no tempo (de execução de tarefas). Nós descobrimos esse problema através da nossa suite de testes. Demorou um mês a descobrir… Às vezes, mudamos as coisas numa plataforma e aquilo tem efeitos colaterais noutras coisas e, por isso, temos de pensar no que é que aconteceu, para podermos fazer modificações, e correr tudo outra vez. Mas é preciso lembrar que não se trata de lançar apenas testes. Estamos a falar de algo que exige uma página de documentação por cada linha de código que existe.
Cada linha de código tem de ser justificada?
Cada linha de código é justificada e extremamente documentada – e é verificada por outras pessoas, que asseguram que o produto tem qualidade.
Estes sistemas operativos têm mais linhas de código?
Não. Têm menos. O que acontece é que cada linha de código tem de ser escrutinada por várias pessoas. Temos de dar alguma formação antes de fazer essas linhas de código. Quem programa este tipo de sistemas tem de seguir uma carrada de regras, para garantir que a qualidade do produto final é boa e que um satélite não se vai escangalhar todo por causa de uma linha de código.
O mais curioso é que os processadores que correm estes sistemas operativos não são propriamente poderosos!
Para aplicações terrestres não são muito poderosos, mas para nós são uma maravilha. Não é possível mandar para o Espaço um computador “normal”, porque não foi qualificado para isso, não passou pelos testes de radiação… e além disso, não há painéis solares para alimentar um computador desses. Um computador doméstico consome muito mais energia que um computador que vai para o Espaço. Um computador doméstico pode consumir 85 W, e aqui estamos a falar de processadores 3,5 ou 10 W. São processadores testados, até com radiação. Quando o satélite vai para órbita leva com radiação – e por isso tem de haver aquilo a que chamamos tolerância à radiação. Se houver falhas no processador, há uma compensação. O satélite não cai logo só porque levou com radiação.
O facto de os chips usados terem ciclos de processamento mais lentos não torna esse trabalho mais difícil?
Um exemplo: tivemos de fazer um bootloader para um satélite sul-coreano devido à falta de espaço. Não é toda a gente que começa a programar em Assembly para criar um bootloader ao mesmo tempo que desenvolve todas as funcionalidades para o desenvolvimento do satélite. São pessoas com perfis técnicos muito específicos. (Dando um exemplo de um dos requisitos) Não se pode fazer as “reentrâncias” de códigos, o que significa que não é possível usar uma parte código que chama o próprio código… não é possível fazer nada disso porque se estoira logo com a memória toda.
E quando é que haverá novas versões desses sistemas operativos da Edisoft?
A nova versão do RTEMS by Edisoft deverá estrear num lançamento em março. A versão para ARM deverá ficar pronta no final de março.
O vosso sistema operativo nunca foi usado em Terra?
Não, mas acreditamos que poderia ser usado em carros, uma vez que é um sistema operativo extremamente robusto e fiável. Mas ainda não conseguimos fazê-lo. Poderia funcionar com processadores mais potentes. Falta fazer a transferência de tecnologia. Também poderia ser usado para dispositivos para a área da saúde.