Software Embarcado

     

1. Introdução

O desenvolvimento do satélite universitário ITASAT-1, assim como o desenvolvimento de satélites operacionais de grande porte, abrange diferentes áreas do conhecimento, como por exemplo, mecânica estrutural, mecânica orbital, engenharia elétrica, engenharia eletrônica e computação. Cada vez mais, os satélites vêm se tornando sistemas mais complexos e com muitas funcionalidades. Para que o sistema seja capaz de lidar com essa complexidade crescente, é de suma importância o desenvolvimento de melhores sistemas computacionais, seja em relação à arquitetura de hardware ou ao software.

 

2014-09-11 12.21.04

Bancada de trabalho da computação

 

2. Computação em satélites

Como citado anteriormente, o desenvolvimento de novas tecnologias no contexto da computação é de grande importância no desenvolvimento de satélites, porém o termo “computação” abrange um leque muito grande de áreas relacionadas, mesmo se particionarmos em hardware e software.

2.1.   Hardware

Olhando exclusivamente para o hardware de um satélite, há vários pontos que devem ser estudados; a seguir, são apresentados alguns deles.

2.1.1.      Hardware Eficiente

Quando pensamos em um computador comum, que utilizamos nas atividades do dia-a-dia, geralmente associamos a eficiência da máquina ao tempo de resposta, ou seja, se o computador executa rapidamente os programas instalados. Não é dada muita (ou nenhuma) atenção, por exemplo, ao consumo de energia do PC ou ao quanto o equipamento aquece. Já quando estamos considerando um computador que será utilizado em um satélite, nos deparamos com muitos outros detalhes que devem ser muito bem analisados. No ambiente operacional de um satélite, geralmente a energia elétrica disponível é um recurso escasso, o que faz com o que o hardware deva consumir o mínimo de energia possível. Nesse contexto o consumo de energia do hardware passa a ser um ponto muito importante em relação a sua eficiência. Isso nos leva a outro ponto: a perda de energia com aquecimento deve ser minimizada o máximo possível, e essa não é uma tarefa fácil. Para se ter uma ideia, existe uma brincadeira entre os profissionais da computação de que um computador não passa de um aquecedor que realiza algumas contas como subproduto. No ambiente espacial, o hardware fica exposto ao vácuo, e isso faz com que a perda de calor dos equipamentos eletrônicos do satélite ocorra apenas por radiação e não por contato com o ar (como ocorre nos equipamentos na terra). A perda de calor por radiação ocorre de maneira muito mais lenta do que com o contato com o ar; isso ressalta ainda mais a importância do hardware utilizado em satélite ser eficiente em relação ao consumo e dissipação de energia em forma de calor. Alguns processadores desenvolvidos para aplicações espaciais (ou semelhantes), implementam algumas medidas para aumentar eficiência de processamento, ou seja, para que o computador de um satélite gaste mais energia processando algo útil do que aguardando operações externas. Por exemplo, o processador utilizado no CubeComputer (http://www.esl.sun.ac.za/) implementa um sistema de modos de operação, onde em casos de baixa carga de bateria o computador consuma pouquíssima energia, porém ainda possa executar algumas funções vitais.

 

DSC_0022

 

2.1.2.      Ambiente de Operação Hostil

Satélite funcionam fora da atmosfera terrestre, o que faz com que os equipamentos fiquem expostos à grande quantidade de radiação, proveniente principalmente do sol. Essa exposição pode causar vários problemas no funcionamento dos equipamentos, como por exemplo, causando o reboot devido a descargas excessivas de energia, queima de equipamentos e até mesmo alteração da execução de um programa. Para minimizar esses problemas, são implementadas soluções tanto de hardware quanto de software. Ainda no contexto de hardware, algumas soluções comuns são: escolha de materiais com maior resistência a radiação para a confecção do hardware, projeto de equipamentos redundantes, ou seja, a utilização de um equipamento substituto e implementação de circuitos de proteção contra curtos e descargas inesperadas de energia. Além da radiação existente fora da atmosfera, o próprio vácuo contribui para que o espaço seja um ambiente de operação ainda mais hostil, pois é necessário que todos os equipamentos sejam construídos de forma a resistirem a baixíssima pressão e não sublimem nem apresentem mal funcionamento.

2.2.   Software

O desenvolvimento de software é uma parte bastante importante do desenvolvimento de um satélite em si, pois é o software que irá controlar as funcionalidades do sistema como um todo. O software desenvolvido para sistemas desse tipo é considerado de baixo nível, em decorrência à proximidade da programação e o hardware. No contexto de software existem várias áreas explorados no desenvolvimento, e a seguir serão apresentadas algumas.

2.2.1.      Arquitetura de Computadores

Em um computador pessoal, os programas são desenvolvidos geralmente para serem executados “em cima” de um sistema operacional, seja Windows, Linux, Mac, etc. Isso elimina, na maioria dos casos, a necessidade do programador conhecer características específicas do hardware da máquina. Já no caso de um software desenvolvido para um satélite (baixo nível) o programador deve não apenas se preocupar com a lógica do algoritmo, mas também com as peculiaridades do hardware em que o programa será executado, demandando assim conhecimento mais claro sobre Arquitetura de Computadores. O conhecimento nessa área também permite ao programador aproveitar de maneira mais eficiente o hardware sendo utilizado, pois o mesmo tem controle total sobre o processamento de tarefas, controle de memórias (voláteis e não-voláteis) e periféricos.

 

DSC_0009

 

2.2.2.      Análise de Complexidade de Algoritmos

Como já citado algumas vezes nos tópicos anteriores, o funcionamento dos equipamentos de um satélite deve ser otimizado, tanto em relação ao hardware quanto ao software. É de grande valia que um programador de um sistema desse tipo tenha conhecimentos sobre a Análise de Complexidade de Algoritmos, para que o mesmo consiga desenvolver um software eficiente, não apenas em relação ao hardware mas também em relação à própria lógica do programa. O estudo dessa área também faz-se necessário, pois sistemas embarcados (forte relação entre hardware e software) geralmente possuem recursos extremamente limitados, seja de processamento ou de memória. Dessa forma, os programas desenvolvimentos devem ser otimizados o máximo possível, para ocupar pouca memória e pouco tempo no processador.

2.2.3.      Redes de Computadores

Uma das principais atividades de um satélite é a comunicação com o solo; isso é feito através da troca de informações no formato de pacotes de dados. Essas transmissões podem ser telemetrias (do satélite para o solo) ou telecomandos (do solo para o satélite). Em ambos os casos, é necessário utilizar diferentes protocolos de comunicação para empacotamento e controle das informações trocadas entre o satélite e as estações em solo. O satélite em si é composto por diferentes equipamentos que se comunicam. Para cada par de equipamentos também é necessário a utilização de protocolos de comunicação; em casos específicos, é interessante criar uma rede entre os equipamentos internos do satélite, implementando, por exemplo, algumas camadas do modelo OSI amplamente estudado na área de Redes de Computadores.

2.2.4.      Sistemas Operacionais

O software desenvolvido para um satélite geralmente possui diferentes funções independentes, como por exemplo, verificação de status de equipamentos, execução de telecomandos, aquisição de dados de telemetrias, controle de atitude (posicionamento do satélite) e comunicação com a terra. Essas diversas atividades de um software desenvolvido para um satélite devem ser executadas de maneira concorrente, geralmente periodicamente e com diferentes prioridades, fazendo com que a utilização de um Sistema Operacional seja interessante, por trazer uma maior abstração na implementação do programa, pois com um sistema operacional cada atividade pode ser considerada um processo com uma determinada prioridade e o escalonador se encarrega do controle de suas execuções. A utilização de um sistema operacional também ajuda no sentido de que um software de satélite deve ser de tempo real, ou seja, suas atividades têm momentos e prazos de execução muito bem definidos.

3. Desenvolvimento no ITASAT-1

No desenvolvimento do satélite ITASAT-1, todas as áreas da computação citadas no texto acima são exploradas. Porém, nesse satélite especificamente, o foco está no desenvolvimento de software. O satélite conta com dois computadores de bordo independentes, um alocado para atividades de housekeeping (controle das funções internas do satélite) e outro para as atividades de controle de atitude. O desenvolvimento de software ocorre para ambos os computadores e para isso é utilizado um sistema operacional de tempo real (FreeRTOS - http://www.freertos.org/ ) e um protocolo de rede para comunicação de equipamentos (CSP - Cubesat_Space_Protocol ). Todo o desenvolvimento é feito utilizando a linguagem de programação C (C Book) e Assembly (Assembly language). São realizadas também atividades de Engenharia de Software, tais como especificação de requisitos, modelagem de sistema, processos de Validação, Verificação & Teste, etc.

 

2014-09-23 09.55.51