Você está na página 1de 10

Understanding MPLAB Harmony

Microchip MPLAB Harmony o resultado de uma abordagem abrangentes, agregada criao de solues
de firmware para sistemas embarcados utilizando microcontroladores Microchip.

MPLAB Harmony Overview


Projetado quase completamente na linguagem C (com suporte para C ++), MPLAB Harmony leva elementoschave do design modular e orientada a objeto, acrescenta a flexibilidade de usar um Sistema Operacional de
Tempo Real (RTOS) ou trabalhar sem um, se voc preferir, e fornece uma estrutura de mdulos de software que so
fceis de usar, configurvel para suas necessidades especficas, trabalhando em conjunto e em completa
harmonia.

Portability
A portabilidade uma preocupao que frequentemente esquecida quando um fabricante de silcio (circuito
integrado) fornece um software. No entanto, a amplitude de solues um ponto forte da marca Microchip, e
MPLAB Harmony fornece bibliotecas simples para abstrair parte especfica, detalhes e fazer com que um dispositivo
da Microchip seja fcil de usar, independentemente de qual dispositivo voc escolher. Toda vez que voc criar um
novo produto ou atualiza um j existente, o custo deve ser equilibrado com recursos; no entanto, o custo mais do
que apenas uma lista de materiais - tambm o custo No Reembolsvel de Engenharia (NRE) para projetar e
desenvolver sua soluo. MPLAB Harmony fornece bibliotecas de perifricos, drivers de dispositivos e outras
bibliotecas que usam interfaces claras e coerentes, que requerem pouca ou nenhuma mudana no cdigo da
aplicao e minimizando o tempo de engenharia e esforo para cada novo projeto.

Device Drivers
O objetivo principal de um driver de dispositivo (ou "driver") do MPLAB Harmony fornecer uma interface
simples e altamente abstrado a um perifrico, o que permite sua aplicao interagir com um perifrico (ou outro
mdulo do sistema) atravs de um conjunto consistente de funes. Um driver responsvel por gerenciar o

acesso a um perifrico, para que os pedidos de diferentes mdulos no entrem em conflito uns com os outros, e
para gerenciar o estado desse perifrico para que ele sempre funcione corretamente.

Peripheral Libraries
A Biblioteca de perifricos (PLIB) uma biblioteca de acesso simples que proporciona uma interface (nvel
muito baixo) consistente para um perifrico do MCU. PLIBs esconde detalhes de registros, tornando-o mais fcil de
escrever drivers que suportam mltiplas famlias de microcontroladores, mas eles no so normalmente usados por
aplicativos diretamente para interagir com os perifricos, como eles fornecem pouca abstrao, e porque eles
exigem o chamador para gerir a operao detalhada de um perifrico (incluindo a preveno de pedidos
incompatveis de outros mdulos). Por causa da falta de proteo de conflito em uma PLIB, apenas um mdulo em
um sistema deve acessar diretamente o PLIB para um perifrico. Portanto, PLIBs so usados principalmente para
implementar drivers de dispositivo (e alguns servios do sistema) para torn-los porttil.

Modularity
Bibliotecas MPLAB Harmony so software "blocos de construo" modulares que permitem que voc dividir e
dominar seu firmware. A interface para cada biblioteca consiste em um conjunto altamente coesivo de funes
(variveis que no podem ser acessadas de forma global ou registros compartilhados), de modo que cada mdulo
pode gerenciar seus prprios recursos. Se um mdulo precisa usar os recursos de outro mdulo, ele chama funes
de interface do mdulo para usar esses recursos. Interfaces entre os mdulos so mantidas de forma simples, com
o mnimo de interdependncias para que os mdulos possam ser livremente acoplados uns aos outros. Essa
abordagem ajuda a eliminar conflitos entre os mdulos e permite que eles sejam facilmente utilizados em conjunto
como blocos de construo para criar as solues que voc precisa.

Middleware Libraries
Middleware ou mediador, um programa de computador que faz a mediao entre duas aplicaes existentes e
independentes. Sua funo trazer independncias das aplicaes com os sistemas de transmisso.

Os modelos normais de uso de alguns dos perifricos mais complexos, (ou seja, USB, TCP...) exige interpretar
protocolos complexos ou pode exigir processamento adicional considervel para produzir resultados utilizveis, tais
como desenhar imagens grficas em uma tela de LCD com um perifrico controlador de LCD. Portanto, enquanto
um driver de dispositivo pode ser completamente suficiente para um perifrico simples como um UART (Perifrico
de Comunicao Serial), alguns perifricos exigem o que frequentemente chamado de "middleware",
apropriadamente chamado porque fica entre o aplicativo (camada Abstrata) e o hardware (camada Fsica). MPLAB
Harmony fornece vrias bibliotecas middleware "stacks" para gerenciar esses perifricos mais complexos e
fornecem a funcionalidade que voc precisa e espera.

System Services
MPLAB Harmony system services (Servios de Sistemas) so responsveis por gerenciar recursos compartilhados
para que outros mdulos, como drivers, middleware e aplicaes, no entrem em conflito sobre os recursos
compartilhados. Por exemplo, se as pilhas TCP/IP, USB e pilhas Grficas tentou usar simultaneamente o perifrico
Timer2 para executar alguma tarefa peridica, que muito provavelmente interferem uns com os outros. No entanto,
se em vez eles usaram um servio de sistema temporizador (como a seguinte imagem ilustra), de
responsabilidade do servio de sistema manter os pedidos separados de interferir uns com os outros. O servio de
timer pode ser configurado como desejado para um sistema especfico (por exemplo, voc pode decidir usar
Timer3 em vez de Timer2) isolar as alteraes necessrias para a configurao de um nico mdulo e prevenindo
potenciais conflitos. O uso de um servio de sistema muito semelhante utilizao de um driver de dispositivo,
exceto que um driver normalmente requer o chamador "abri-lo para criar uma associao nica de cliente para
um drive. Um servio de sistema normalmente no requer o chamador para abrir o servio antes de us-lo porque
os servios do sistema so frequentemente compartilhados por muitos clientes dentro do sistema.

Compatibility
Mdulos do MPLAB Harmony (drivers, system services e middleware - excluindo PLIBs) so "ativo". Isto
significa que quando um aplicativo chama a funo interface de um mdulo, a chamada geralmente retorna
imediatamente e o mdulo continuar a trabalhar por conta prpria para completar a operao. A maioria dos
mdulos, ento, fornecer um mecanismo de notificao para que o chamador (ou seja, cliente) possa determinar
quando a operao foi concluda. Mdulos do Harmony so implementados como mquinas de estado
cooperativas. A imagem seguinte mostra a ideia bsica de como isso funciona. Cada mdulo tem uma funo de
"Inicializar" e cada mdulo tem funo de uma (ou mais) Tarefa (s), para manter a sua mquina (s) de Estado. As
mquinas de estado de todos os mdulos so inicializadas, pouco depois que o sistema sai da redefinio no
"main". Depois que o sistema cai em um "super-loop", a funo de mquina de estado de cada mdulo
repetidamente chamada, uma aps a outra, para permitir que ela faa a "tarefa" mantendo a sua execuo da
mquina de estado. Isso permite que o sistema mantm todos os mdulos que funcionam utilizando uma tcnica
de "multi-tasking" cooperativa ou compartilhado. Mdulos (sob o controle de sua aplicao) interagem uns com os
outros, chamando as funes de interface de outros mdulos (como ilustrado na figura a seguir) e todo o sistema

"super-loop" mantm todos os mdulos no sistema em execuo para que fiquem "ativo" e executando seus
trabalhos.

Este mtodo no adequado para todas as necessidades; portanto, so possveis outras configuraes. No
entanto, uma configurao de pooling o mais simples de compreender e a melhor que ilustra o conceito bsico
de como mdulos do MPLAB Harmony trabalham em conjunto, como mostrado na figura a seguir. Tambm fcil
de implementar, fcil de entender e fcil de depurar.

Flexibility
O modelo bsico do MPLAB Harmony de mdulos de drivers de mquina de estados cooperando, quando
combinado com um pouco de configurabilidade, torna-se flexvel o suficiente para atender s necessidades de
praticamente qualquer sistema incorporado. Por exemplo, se voc estiver usando vrios perifricos idnticos,
MPLAB Harmony tem implementaes de driver "dinmicos" que podem gerenciar todas as instncias (objeto que
compartilha com outros o mesmo conjunto de atributos) de um perifrico com uma nica instncia do cdigo do
driver. Voc tambm pode ter uma necessidade de vrios mdulos de "cliente" para usar a mesma instncia de um
perifrico ao mesmo tempo (como o exemplo timer, descrito anteriormente). Para gerenciar essa necessidade,
MPLAB Harmony tem implementaes de driver que so inteligentes o suficiente para gerenciar solicitaes de
vrios clientes. Por outro lado, as necessidades podem ser mais simples do que isso. Assim, drivers cliente
estticos e individuais tambm esto disponveis para ajudar a reduzir a quantidade de cdigo e dados de
armazenamento necessrio para o seu sistema.

Ou, seu sistema pode precisar de combinar vrias pilhas de middleware, independente da sua aplicao. Se for
esse o caso, a operao simples, utilizando o mtodo de "Super loop" frequentemente observados em sistemas
embarcados simples podem no ser suficientes. No entanto, quando voc comear a adicionar mais mdulos,
torna-se cada vez mais difcil cumprir os requisitos de tempo de todos os perifricos usando um simples "Super
loop".
Felizmente, mdulos do MPLAB Harmony so escritos de modo que (quando apropriado) sua mquina de estado
possa ser executada diretamente de uma rotina de interrupo de servio (ISR) ou um RTOS. Usando um ISR
permite eliminar a latncia de espera para a execuo de outros mdulos no loop para terminar antes de um
evento de tempo crtico ser atendido, e que lhe permite usar os recursos de interrupo de priorizao disponveis
em alguns dispositivos da Microchip para garantir que o sistema responda a eventos no mundo real em tempo real.

Alm disso, a capacidade de programar e priorizar tarefas diferentes para diferentes mdulos podem ser obtidos
para os mdulos que no esto associados a uma interrupo de processador especfico (como muitos mdulos de
middleware e sua aplicao), utilizando um RTOS. Na verdade, essa uma das principais razes para usar um
RTOS. Quando o sistema se torna complexo o suficiente para que voc comece a se esforar para atender seus
requisitos de tempo usando o mtodo de super-loop, hora de usar um RTOS.
Felizmente, as funes de mquinas de estado do mdulo Harmony podem ser chamadas de um loop em um
segmento RTOS to facilmente como eles podem ser chamados a partir de um polling "super-loop" em um sistema
sem um RTOS. Para permitir isso, os mdulos so projetados para ser "thread-safe", chamando operaes de
semforo e mutex (e alguns outros, conforme necessrio) atravs de um Sistema Operacional Abstraction_Layer_
(Osal). O Osal fornece um conjunto consistente de funes de chamada, independentemente de qual RTOS est
sendo usado (ou mesmo se RTOS no usado). A escolha de utilizar RTOS, se for o caso, uma opo de
configurao. Harmony MPLAB suporta vrias configuraes e suporte do sistema operacional. Tudo que
necessrio implementar as funes Osal adequadamente para o sistema operacional desejado.
Project Structure

Para facilitar configurabilidade, projetos do Harmony normalmente so estruturados de maneira que isola o cdigo
necessrio para configurar um "sistema" dos mdulos de biblioteca e de seu cdigo da aplicao. A primeira figura
ilustra esse conceito, enquanto a segunda figura mostra como os arquivos podem aparecer em um projeto MPLAB
X IDE.

Você também pode gostar