Programação de microcontroladores utilizando técnicas de tolerância a falhas - Kruger, Kleber (2014)
Os sistemas embarcados abrangem uma grande quantidade de sistemas computacionais e suas aplicações estão cada vez mais presentes no cotidiano das pessoas, principalmente com a expansão da computação ubíqua. Por isso, a ocorrência de falhas nesses sistemas tendem a trazer cada vez mais transtornos e prejuízos financeiros. As falhas podem ocorrer devido aos bugs de software, ao envelhecimento dos componentes de hardware, `as interferências eletromagnéticas, e por conta de outros fenômenos no meio ambiente que afetam os dispositivos semicondutores. O uso de t´técnicas de tolerância a falhas aumentam a segurança, pois permite que sistemas continuem funcionando adequadamente após a ocorrência de falhas. Seu princípio básico consiste na redundância, que pode fornecida por meio de hardware, software, dados e processamento. No entanto, a utilização das t´técnicas de tolerância a falhas ´e frequente apenas em sistemas de alto risco e de grande porte. O objetivo deste trabalho foi implementar as t´técnicas de tolerância a falhas mais viáveis na programação de uma plataforma de prototipagem rápida com microcontroladores. Para avaliar o desempenho das t´técnicas foi desenvolvido um injetor de falhas por software, e utilizou-se um sistema de estação meteorológica como estudo de caso. Os testes simularam falhas nas leituras dos sensores e falhas nas regiões de memória (por meio da alteração dos dados de alguns endereços de memória) da estação meteorológica. Ao final, são descritos os resultados mostrando o desempenho do sistema tolerante a falhas em comparação com o sistema não tolerante. Embora o primeiro tenha aumentado levemente o consumo de energia, o tamanho do programa, o uso de memória e o tempo de processamento, o desempenho deste se mostrou eficiente, dado que a quantidade de defeitos diminuiu, principalmente nos testes que injetaram falhas nas leituras dos sensores. Em um teste que injetou 16 falhas na região de memória de dados do microcontrolador a cada ciclo de leitura da estação meteorológica, e 25% de falhas nas leituras dos sensores, o firmware sem tolerância a falhas apresentou uma taxa de ocorrências de defeitos de 98,61%, enquanto o firmware com tolerância a falhas apresentou 9,21%. Sem a injeção de falhas nas leituras dos sensores e com essa mesma quantidade de falhas injetadas na região de memória de dados, o primeiro apresentou 19,6% enquanto o segundo 4,45%. Como resultado deste trabalho, uma biblioteca para tolerância e recuperação de falhas, chamada FaultRecovery foi criada, a fim de facilitar e auxiliar por meio de um conjunto de classes e macros, a escrita de códigos com implementação de t´técnicas de tolerância a falhas. Além disso, ela disponibiliza uma estrutura pronta para a recuperação de falhas, baseada em uma maquina de estados.