O facto de os Sistemas Embebidos estarem presentes em toda a parte e estarem em constante evolução, lança desafios na área da Investigação e Desenvolvimento científico. Sendo uma vertente das tecnologias de sistemas computacionais, a concretização destes desafios requer uma pesquisa e estudo contínuo para obter um elevado conhecimento sobre as tecnologias e permitir o seu desenvolvimento.
Com a inclusão do sistema operativo Linux nos sistemas embebidos, devido a disponibilidade do código fonte, á sua filosofia "one-size-fits-all" que proporciona um sistema operativo totalmente escalável, torna-se uma escolha aliciante para o desenvolvimento de dispositivos, desde os mais simples aos mais complexos.
Sendo o kernel visto como um gestor de recursos que é responsável pela gestão e escalonamento no acesso a todo o hardware e impor uma ordem na execução de todo o software do sistema, este é o componente de software mais importante em todos os sistemas operativos. Desta forma, através de um conjunto de abstracções disponíveis no software do utilizador é possível controlar os seus recursos permitindo visualizar a utilização e gestão da memória RAM, o tempo de CPU atribuído aos processos entre outras funcionalidades sobre outro tipo de hardware presente no sistema.
Através de tecnologias de compilação como o Buildroot é possível configurar e automatizar o processo de construção de um ambiente Linux que pode ser instalado em múltiplas plataformas respondendo ás restrições enfrentadas no desenvolvimento do sistema proposto. Ferramentas de configuração como o Kconfig usadas pelo Buildroot, através da sua linguagem própria usada na especificação das funcionalidades, dependências, restrições, visibilidade, entre outros, permitem a remoção de funcionalidades e serviços que não vão ser utilizadas na plataforma alvo.
Apesar do vasto suporte que o Linux oferece para o controlo do hardware disponível, a aplicação deste em sistemas embebidos do tipo hard real-time, apresenta dificuldades em satisfazer requisitos deste tipo de sistemas como latências e previsibilidade.
Embora questões como determinismo e preensão do sistema tenham vindo a ser melhoradas pela comunidade Linux, a utilização de plataformas multicore com processamento paralelo em hardware dedicado tem vindo a ser uma opção aliciante no desenvolvimento deste tipo de sistemas. Estas plataformas são denominadas por Field-Programable Gate Arrays (FPGA). A sua utilização promove de forma horizontal e integrada o design de sistemas embebidos baseados em Linux, o espaço de problema para o domínio da aplicação e a satisfação dos requisitos do sistema, beneficiando de aceleração na execução de processos de software do sistema em hardware dedicado, e sobretudo uma redução significativa do time-to-market no desenvolvimento de produtos.
Com a constante evolução tecnológica que temos presenciado, o uso de equipamentos eletrónicos baseados em microprocessadores e de conversores electrónicos de potência tem sido cada vez maior, o que veio introduzir nos sistemas elétricos novas cargas mais sensíveis às perturbações na rede elétrica. Estas perturbações podem causar o mau funcionamento de equipamentos, podendo resultar em tempo de vida reduzido ou até mesmo falha de equipamentos de alto custo. Desta maneira, a temática da Qualidade da Energia Elétrica passou a ser um assunto de elevada importância tanto para os distribuidores como para consumidores de energia elétrica.
Para mitigar as restrições impostas pela utilização da plataforma multicore, os requisitos hard real-time e a complexidade dos desafios impostos pela monitorização de energia, este documento propõem o desenvolvimento de um sistema que permita:
1. Implementar primeiramente o sistema utilizando apenas recursos software que permita visualizar grandezas físicas de um sistema elétrico e detetar eventos relacionados com Qualidade de Energia Elétrica como: flutuações de tensão, harmónicos, quedas de tensão (sags e swells), transientes, interrupções e flutuações de frequência.
2. Caracterizar as partes com maior custos de processamento, para lidar com a escalabilidade do sistema identificando os subsistemas do kernel do Linux e da aplicação que poderão ser ajustados.
3. Apresentar uma implementação alternativa recorrendo a hardware dedicado para substituir esses blocos que exigem elevado processamento, assegurando a sua correta execução na plataforma multicore.
4. Integrar e gerir os recursos software e hardware disponíveis, satisfazendo o determinismo e requisitos real-time do sistema.