Buscar

sistemas embarcados V


Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Embarcados
Material Teórico
Responsável pelo Conteúdo:
Prof. Me. Tales Gouveia Fernandes
Revisão Textual:
Prof.ª Me. Sandra Regina Fonseca Moreira
Projetos de Sistemas Embarcados 
• Interrupções no Microcontrolador;
• Co-projeto de Hardware e Software;
• Particionamento Hardware e Software;
• Plataforma para Desenvolvimento.
• Observar projetos de hardware e software de sistemas embarcados;
• Reconhecer e perceber tecnicamente projetos de hardware e software de sistemas embarcados;
• Conhecer plataformas para auxílio no desenvolvimento de sistemas microcontrolados;
• Aprender sobre processos de projetos.
OBJETIVOS DE APRENDIZADO
Projetos de Sistemas Embarcados
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem 
aproveitado e haja maior aplicabilidade na sua 
formação acadêmica e atuação profissional, siga 
algumas recomendações básicas: 
Assim:
Organize seus estudos de maneira que passem a fazer parte 
da sua rotina. Por exemplo, você poderá determinar um dia e 
horário fixos como seu “momento do estudo”;
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
alimentação saudável pode proporcionar melhor aproveitamento do estudo;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos 
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua 
interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o 
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de 
aprendizagem.
Organize seus estudos de maneira que passem a fazer parte 
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Mantenha o foco! 
Evite se distrair com 
as redes sociais.
Determine um 
horário fixo 
para estudar.
Aproveite as 
indicações 
de Material 
Complementar.
Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma 
Não se esqueça 
de se alimentar 
e de se manter 
hidratado.
Aproveite as 
Conserve seu 
material e local de 
estudos sempre 
organizados.
Procure manter 
contato com seus 
colegas e tutores 
para trocar ideias! 
Isso amplia a 
aprendizagem.
Seja original! 
Nunca plagie 
trabalhos.
UNIDADE Projetos de Sistemas Embarcados 
Interrupções no Microcontrolador
Na unidade anterior, o desenvolvimento de software focado no firmware para 
microcontroladores foi o tema levantado, além de ter destacado duas linguagens de 
programação típicas para sistemas embarcados, a linguagem Assembly e a lingua-
gem C. Atrelado ao desenvolvimento do firmware e ao controle desempenhado 
por ele na plataforma de hardware, a qual é independente da linguagem de pro-
gramação utilizada, há um evento que se destaca e auxilia na atividade do sistema 
embarcado, o qual é chamado de interrupção. Basicamente interrupção é tratado 
e definido como um evento que obriga o microcontrolador a suspender suas ati-
vidades temporariamente, para atender exclusivamente uma rotina indicada pelo 
evento que o interrompeu. A interrupção também pode ser considerada um desvio 
de um ponto do software para outro preestabelecido.
Com isso, a interrupção é criada através de métodos utilizados para a verificação 
do estado de um pino ou terminal de entrada do microcontrolador. Um método 
comum é através da leitura frequente do nível de tensão nele presente, essa técnica 
é chamada de polling, a qual é considerada um método de fácil implementação.
Polling: pode ser definido, no âmbito dos sistemas embarcados, como uma verificação peri-
ódica, feita pela microcontrolador, do estado de seus periféricos para detectar quando uma 
ação precisa ser tomada.
Ex
pl
or
A Figura 1 ilustra o fluxograma de ações tomadas pelo microcontrolador e suas 
interfaces, quando se implementa a técnica de polling em um sistema embarcado.
Figura 1 – Fluxograma da técnica de polling em sistemas embarcados
Fonte: Acervo do Conteudista
Entretanto, esse método não se mostra adequado em situações que demandem 
uma resposta imediata do microcontrolador assim que houver uma mudança no 
nível de um terminal. Para esses casos, é recomendado que seja utilizada uma inter-
rupção, ou seja, a chamada de uma função auxiliar que só é executada se houver 
ocorrido um evento externo específico, como por exemplo, a sinalização de mudan-
ça do estado de um pino. Nesse caso, após a chamada da função auxiliar, o fluxo 
original do programa principal só será retomado quando a interrupção for concluí-
da. Como o próprio nome indica, uma interrupção serve para interromper a execu-
ção normal do programa principal e, imediatamente, tratar do evento que a gerou.
8
9
Além das interrupções provocadas pela alteração do nível de tensão do terminal, 
alguns microcontroladores, como o PIC16F84A, possuem várias outras fontes de 
interrupção, que podem ser configuradas e usadas a partir de informações obtidas 
consultando o respectivo datasheet.
Como exemplo, para utilizar as interrupções, o registrador INTCON.GIE deve 
ser ativado, ou seja, ativar o endereço 0BH, correspondendo ao INTCON, e o bit 7, 
correspondendo ao GIE do INTCON. O GIE funciona como uma espécie de chave 
geral de todas as interrupções, sendo assim, ao configurar zero no INTCON.GIE 
todas as interrupções serão desabilitadas simultaneamente. 
Outro tipo de interrupção que os microcontroladores geralmente disponibilizam 
são as interrupções de timer, sendo que elas ocorrem sempre que o contador do 
timer estoura, isto é, quando atinge o valor máximo e é incrementado de uma 
unidade. Por exemplo, o timer 0, correspondente ao endereço 01H, é um tempori-
zador de 8 bits, ou seja, seu contador está na faixa do 0 a 255. Quando o contador 
atingir 255, no próximo incremento ele estourará, tentará contar o número 256, 
retornando a zero e disparando a interrupção de timer 0. Para que essa interrupção 
funcione, deve-se ter INTCON.GIE configurado como 1, ou seja, chave geral ligada, 
INTCON.T0IE configurado como 1 para ligar o timer 0. Desta forma, sempre que 
houver o estouro do contador, o bit INTCON.T0IF estará em 1 e a rotina de trata-
mento dessa interrupção será acionada.
Esse tipo de interrupção é muito útil quando se deseja medir intervalos de tem-
po de forma precisa. Por exemplo, considerando um clock interno de 1 MHz, o 
ciclo de máquina correspondente será de 1 µs. Carregando o timer 0 com o valor 
250, após 5 ciclos de máquina, ou seja, 5 µs haverá a ocorrência da interrupção 
de timer, a qual poderá ser utilizada para incrementar um contador que contará de 
forma precisa em uma frequência de 5 µs em 5 µs.
Existe também um tipo de interrupção chamada de interrupção externa, a qual 
se torna uma interrupção alternativa útil, pois permite a detecção exata do instante 
em que os eventos externos acontecem, podendo ser esses uma ativação do sensor 
de presença, um ciclo completo de um eixo acoplado a um motor ou quando a 
tensão da rede chegou a nível próximo de zero.
Essa interrupção pode ser disparada pela borda de subida ou pela borda de 
descida do sinal. Essa seleção é feita configurando o registrador OPTION_REG.IN-
TDEG de endereço 81H.6. A interrupção é ativada fazendo com que INTCON.GIE 
seja 1, ou seja, chave geral ligada e INTCON.INTE seja 1, ou seja, INT EXT esteja 
ligada. Sempre que ocorrer uma transição de sinal no terminal correspondente, 
INTCON.INTF de endereço 0BH.1, indo para nível alto 1, a rotina de tratamento 
dessa interrupção será acionada. Consequentemente, antes de sair da rotina de 
interrupção, essa flag deverá ser colocado em nível baixo, zero. 
Por fim, é possível encontrar nos microcontroladores da família PIC16F84A 
interrupções como: interrupção de mudança de estado, queocorre quando algum 
pino muda de nível de sinal e interrupção de escrita na EEPROM, ocorrendo 
9
UNIDADE Projetos de Sistemas Embarcados 
quando se conclui a escrita na memória EEPROM. Há também interrupção de 
fim de conversão A/D, que ocorre quando se conclui a conversão de analógico 
para digital de sinais. Pode-se encontrar a interrupção de WDT, a qual ocorre no 
estouro do WatchDog Timer e o sistema é reinicializado.
Para ter uma compreensão mais prática de como utilizar e implementar as interrupções em 
um sistema embarcado, há um vídeo que exemplifica alguns casos de uso com interrupção. 
Disponível em: http://bit.ly/2Ixp8KH
Ex
pl
or
Co-projeto de Hardware e Software
Levando em conta a definição de De Micheli e Gupta (1997), os sistemas de en-
genharia podem ser considerados como um grupo de componentes com operações 
combinadas, a fim de desenvolver alguma tarefa. 
Um sistema consiste em um número de elementos, concretos ou não, que intera-
gem entre si e com o ambiente como uma unidade de trabalho. Podendo ser grande 
e complexo ou relativamente pequeno e simples. Um sistema fica inteiramente defi-
nido quando se conhecem: seus objetivos; seus limites; seu funcionamento interno.
Atualmente, a maioria dos sistemas projetados são eletrônicos ou possuem sub-
sistemas eletrônicos para monitoramento, controle e execução de tarefas ou pro-
cessos. Faz parte desses sistemas uma interface programável, que remete a compo-
nentes que são implementados via hardware, e também componentes que podem 
ser implementados exclusivamente via software.
Como visto nas unidades anteriores, o projeto do sistema está diretamente rela-
cionado a área de aplicação dele. Um projeto consiste em um esforço temporário 
com um objetivo pré-estabelecido, seja para criar um novo produto, serviço ou pro-
cesso. Tem início, meio e fim bem definidos, duração e recursos limitados, numa 
sequência de atividades relacionadas, as quais serão inseridas para definir priori-
dades e acompanhamento de desenvolvimento. Por sua vez, essas podem estar 
relacionadas ao desempenho, ao custo total do produto, ao grau de dificuldade de 
programação ou até mesmo à complexidade tecnológica de viabilizar o desenvolvi-
mento do projeto.
Sendo assim, surge uma possível definição de Co-projeto (do inglês Co-design) 
de hardware e software, que consiste em unir todos os objetivos, limites e funcio-
nalidades do sistema, explorando a interação existente entre os componentes de 
hardware e de software durante o seu desenvolvimento.
O sistema estabelecido e utilizado no fluxo de projeto do Co-projeto ou Co-Design 
de hardware e software teve seu início durante a década de 90. Nesse momen-
to estava claro que os microcontroladores não estariam disponíveis apenas como 
10
11
componentes discretos para sistemas a nível de placas, ou seja, a nível exclusiva-
mente de hardware, mas também como componentes programáveis via software e 
utilizados em qualquer projeto de Circuitos Integrados (CIs).
Embora o Co-projeto de hardware e software já tenha sido exercido desde a 
introdução do primeiro microcontrolador, com a evolução dos sistemas e a cria-
ção de modelagens de projetos, novas definições surgiram. Uma delas considera o 
 Co-projeto como o processo de criação simultânea e coordenada de um sistema de 
hardware eletrônico e componentes de software com base na descrição da funcio-
nalidade do sistema e na automatização do fluxo do projeto.
Um dos primeiros problemas de Co-síntese foi formulado como um progra-
ma linear inteiro misto, que determinava simultaneamente uma topologia de mul-
tiprocessador e uma programação com atribuição de tarefas para a arquitetura. 
 Desde então, o problema de particionar automaticamente tarefas ou processos em 
 hardware e software foi reconhecido como um tema indispensável no desenvolvi-
mento de projetos.
A Figura 2 apresenta as fases básicas de um Co-projeto de hardware e software . 
Inicialmente, tem-se a especificação do sistema a ser desenvolvido, seguida pelas 
transformações de projeto. Um particionamento é proposto e a síntese de hardware , 
de interface e a geração de código do firmware são desenvolvidas e, por fim, uma 
verificação do projeto encerra o processo.
Figura 2 – Fluxo simplifi cado de um Co-projeto de Hardware e Software
Fonte: Acervo do Conteudista
11
UNIDADE Projetos de Sistemas Embarcados 
Uma especificação funcional de comunicação dos módulos ou tarefas desenvol-
vidas em uma linguagem de programação C, que compõem o firmware, pode ser 
mapeada sobre uma determinada plataforma de hardware. Essa, por sua vez, consis-
te de uma Unidade de Processamento Central (do inglês Central Processing Unit – 
CPU) e um bloco de hardware ou circuito integrado de aplicação específica (do inglês 
Application Specific Integrated Circuits – ASIC) ASIC, com ambas as partes se co-
municando através de um barramento e utilizando uma memória compartilhada, ou 
registros, para a implementação de um buffer. Dessa forma, a plataforma principal já 
está definida, dependendo apenas do hardware que seria implementado.
Com o passar do tempo, o Co-projeto de hardware e software evoluiu, e houve 
a necessidade de integrar ao sistema embarcado tipos mais complexos de arquite-
turas de projeto, como por exemplo, incluir mais de uma CPU, evoluir a execução 
de programas single thread, ou seja, ao invés do firmware embarcado rodar linear-
mente, foi necessário estender os algoritmos à multiprogramação e ao multiproces-
samento. Além disso, a Co-simulação começou a se tornar uma importante área de 
pesquisa para a validação inicial de decisões de projeto.
É possível conciliar a ideia do Co-Projeto com o aprimoramento das tecnologias 
hoje presentes nos sistemas em um chip (do inglês System-on-a-chip SoC), o que 
tornou as etapas de simulação e verificação automática dos projetos mais complexas. 
Com isso, até atrasos temporais causados por transporte de dados das tarefas de co-
municação através de links de comunicação são considerados. Além do mais, através 
do mapeamento de tarefas de comunicação entre as funções dependentes de dados 
e transferência de informação, recursos de comunicação são introduzidos e fazem 
parte do problema de particionamento de hardware e software. Também as redes de 
comunicações complexas precisam ser consideradas para o desempenho e análise 
de custos, incluindo não só os barramentos do processador e conexões ponto-a-
-ponto, mas também da network-on-chip (NOC), que nada mais é do que um tipo de 
interconexão criada para realizar a comunicação interna entre os dispositivos de um 
SoC. Um exemplo de uma complexa arquitetura de multiprocessadores SoCs são os 
multiprocessor system-on-chip (MPSoC), ou também os multi-core system-on-chip. 
A comunicação de tarefas, nesse caso, pode envolver vários saltos e exigir encami-
nhamentos a serem determinados em cima do mapeamento de tarefas.
A complexidade e evolução dos dispositivos eletrônicos usados hoje em dia trou-
xe a necessidade imprescindível de ter o conhecimento de técnicas de Co-projeto de 
hardware e software. Desta forma, é quase uma obrigação para todos aqueles que 
querem se manter atualizados com os desafios cada vez mais complexos de projetos 
de sistemas eletrônicos no futuro. Isto não só se sustenta para projetistas de SoCs, 
mas também para engenheiros de software e hardware envolvidos no desenvolvi-
mento de sistemas distribuídos, como complexos sistemas automotivos em rede, 
aviônicos, sistemas de manufatura e sistemas embarcados em geral.
As variadas configurações de plataformas de hardware para implementação de 
sistemas embarcados levantam algumas questões relevantes e de interesse para o 
projeto do produto. Uma destas questões está relacionada à classificação de sua 
12
13
área de atuação. Uma unidade anterior exemplificou muitas dessas áreas, relacio-
nadas ao processamento de informação, à indústria de celulares, veículos e sistemas 
de telecomunicação, dentre outros. Além disso, esses sistemasembarcados podem 
ser distribuídos geograficamente como sistemas de telefonia, distribuídos localmen-
te como sistemas de controle de aviões, ou fixos, em estações de trabalho.
Outra questão importante e relacionada diretamente ao firmware diz respeito ao 
quão flexível será o software para disponibilizar funcionalidades a sistemas de apli-
cações que estão na camada subsequente. Como exemplo, um computador pessoal 
possui alto grau de flexibilidade, pois para as aplicações a plataforma de hardware é 
praticamente transparente, sendo perceptível apenas quando é feito um benchmark 
de desempenho. De modo geral, esse grau de flexibilidade não é suportado pelos 
sistemas embarcados, pois o firmware é disponibilizado pelo fabricante do produto, 
tendo assim apenas algumas funções programáveis. Os vários níveis de programa-
ção em um sistema envolvem a programação de hardware, de instruções ou de 
aplicações. O nível mais alto é o nível de aplicação cujo sistema já possui programas 
dedicados sendo executados e o usuário só programa para executar as tarefas. Já o 
nível de instruções está presente na maioria dos sistemas eletrônicos que possuem 
um conjunto específico de instruções. Um exemplo desses sistemas são os micro-
controladores, os quais rodam em linguagem de máquina o software de controle. 
Por fim, a programação de hardware permite que este seja modificado da forma 
que o usuário desejar para atender às suas necessidades. Como exemplos de pro-
gramação de hardware, tem-se os dispositivos de hardware configuráveis como as 
FPGA’s (do inglês Field Programmable Gate Array) ou algo como matriz de portas 
programáveis em campo. Nada mais são do que chips programáveis a nível de 
portas lógicas, que correspondem à unidade elementar de qualquer circuito digital.
Por fim, uma questão relevante diz respeito ao estilo de desenvolvimento de cir-
cuitos, o nível de integração e a tecnologia de produção. Um sistema deve possuir 
componentes de diferentes escalas de integração e vários tipos de tecnologia de 
fabricação. A escolha dos componentes afeta diretamente o desempenho final do 
sistema, custo e sua importância. O nível de desempenho implementado e espe-
rado do produto pode ser atingido conforme a utilização de memórias de leitura e 
escrita, além das interconexões programáveis.
Como definido nas primeiras unidades, geralmente sistemas embarcados regu-
lam componentes mecânicos via atuadores e recebem informações do meio exter-
no através de sensores. Sistemas de controle são geralmente sistemas de reação, 
pois reagem a estímulos gerados pelo ambiente. Sistemas de tempo real imple-
mentam funções que devem ser executadas em uma certa janela de tempo. Desta 
forma, as funções requeridas e a complexidade dos sistemas embarcados variam de 
acordo com sua aplicação. A utilização de microcontroladores faz com que o custo 
do projeto diminua consideravelmente e possibilita soluções flexíveis, ou seja, que 
se adaptam a várias situações, tornando-se soluções comerciais. No entanto, muitos 
sistemas de controle são complexos e de tempo real, exigindo assim uma alta vazão 
de dados e processamento, tornando-se projetos específicos com componentes que 
possuam grande capacidade de processamento.
13
UNIDADE Projetos de Sistemas Embarcados 
Quando se inicia um projeto de uma solução eletrônica, deve-se ter em mente 
que as funções podem ser implementadas tanto em hardware quanto em software. 
Porém, nesse caso, devem ser seguidas regras de design para garantir o desem-
penho das principais características dos sistemas desenvolvidos. As técnicas de 
testes para desenvolvimento devem ser utilizadas para testar e garantir que a opção 
escolhida realmente foi a melhor, ou se atingiu o desempenho mínimo requisitado 
e esperado.
Os possíveis problemas no Co-projeto de sistemas embarcados incluem mo-
delagem, validação e implementação. Essas operações são críticas devido a hete-
rogeneidade dos componentes que estão interagindo no sistema, além da imple-
mentação que deve otimizar os objetivos do projeto, fazendo necessário o uso do 
particionamento de hardware e software específico.
 A modelagem de sistemas embarcados pode ser homogênea, quando uma lin-
guagem de programação ou formalismo gráfico é utilizado para representação do 
particionamento hardware/software, ou heterogênea, que consiste no particiona-
mento a partir do próprio modelo que, em suas fases iniciais, possui componentes 
que podem ser expandidos e modificados para atingir o objetivo do projeto. Para 
melhor exemplificar essa modelagem, a Figura 3 ilustra uma metodologia que apre-
senta o particionamento do hardware e software sendo influenciado pelos objeti-
vos de desempenho e projeto, pela descrição de um modelo e sua simulação, além 
da tecnologia envolvida.
Figura 3 – Exemplo de metodologia de Co-projeto
Fonte: Acervo do Conteudista
Para melhor compreender e se familiarizar com as etapas e necessidades de um Co-projeto de 
hardware e software, esse vídeo exemplifica a elaboração de funcionalidades e requisitos de 
um projeto. Além disso, é ilustrado o modelo Business Model Canvas, cuja finalidade é mapear 
os principais itens que constituem o projeto de forma visual: https://youtu.be/RHYGng_OBtw
Ex
pl
or
14
15
Particionamento Hardware e Software
O principal problema encontrado no desenvolvimento de projetos para sistemas 
embarcados é a escolha de qual parte do sistema será implementada em hardware 
e qual parte do sistema será implementada em software. Esse problema é conheci-
do e tratado como particionamento hardware e software.
Essa etapa levantada no início do projeto é um ponto chave na questão do de-
senvolvimento e implementação do projeto de uma solução embarcada, pois as 
decisões tomadas nessa etapa do projeto irão influenciar o projeto até o final de sua 
execução, impactando diretamente na performance, na dificuldade de implementa-
ção, no custo final da solução e na tecnologia que terá de ser empregada.
Dado um conjunto de objetos funcionais e um conjunto de componentes do sis-
tema, um algoritmo de particionamento procura pela melhor partição. A melhor 
partição é a que atende às restrições de projeto. A Figura 4 ilustra a relação entre 
funcionalidade, software e hardware. Sendo que os componentes correspondem 
ao microcontrolador, chips ASIC (do inglês Application Specific Integrated Circuit) 
com instruções otimizadas para aplicação e memória. Já as Restrições são do tipo 
consumo de energia, restrições temporais, custos e peso.
Figura 4 – Defi nição de particionamento relacionando componentes e restrições
Fonte: Acervo do Conteudista
O particionamento de hardware e software trata da implementação das partes 
do projeto em módulos heterogêneos, ou seja, considera duas plataformas, uma de 
hardware e uma de software. A etapa de particionamento hardware e software 
nada mais é do que uma parte do Co-projeto, cujo objetivo principal é encontrar 
um particionamento que represente uma implementação que preencha todos os 
requisitos especificados, otimizando seu funcionamento e diminuindo ao máximo 
os custos e riscos, para se ter, ao final do projeto, a solução requisitada pelo cliente 
ou pela própria proposta inicial.
É comum propor um design específico a um projeto; o arquiteto do projeto deci-
de quais partes serão implementadas em hardware e quais partes serão contempla-
das pelo software, através da sua bagagem de conhecimento atrelado aos requisitos 
estabelecidos pelo negócio que utilizará o produto. A fim de automatizar este árduo 
processo, vários algoritmos e técnicas vêm sendo desenvolvidos e propostos em 
vários projetos de Co-design. Esses modelos e abordagens funcionam muito bem 
15
UNIDADE Projetos de Sistemas Embarcados 
nos ambientes de desenvolvimento para os quais foram projetados, porém, há tan-
tas diferenças entre os modelos que não é possível comparar objetivamente com 
métricas os resultados de cada proposta. 
Segundo Sipser (2006), o particionamento hardware e software,de modo ge-
ral, são considerados NP-Completos. Ser NP-Completos diz respeito a possuir ca-
racterísticas de otimização NP-Difíceis, com isso, o problema de particionamento 
 hardware e software se enquadra nessa classificação. A classe de problemas NP 
não possui algoritmos de resolução em tempo polinomial conhecidos que apre-
sentem o resultado exato para o problema, sendo então necessária a utilização de 
heurísticas como forma de encontrar soluções aceitáveis em tempo hábil.
Há uma área relacionada à teoria da complexidade computacional, que classifica a comple-
xidade de problemas como o subconjunto dos problemas NP de tal modo que todo problema 
em NP pode ser reduzido a termos de tempo polinomial, para um dos problemas NP-com-
pleto. É levado em conta que os problemas de NP-completo são os problemas mais difíceis 
de NP e muito provavelmente não formem parte da classe de complexidade P. A motivação 
desta redução está relacionada a encontrar uma maneira de resolver qualquer problema 
NP-completo rapidamente, ou seja, em tempo polinomial. Desta forma, é possível utilizar 
algoritmos que resolvam todos problemas NP rapidamente.
Ex
pl
or
No particionamento hardware e software, tanto a parte de hardware, quanto 
a parte de software podem ter diferentes níveis de granularidade. Um alto nível 
de granularidade significa que as tarefas ou os módulos de hardware possuem um 
grande número de especificações de funcionalidade ou comportamento. Já um 
nível baixo de granularidade significa que essas especificações estão em menor nú-
mero. Implementar sistemas em hardware traz um ganho em tempo de execução e 
gasto de energia elétrica, porém, consome espaço físico e gera alto custo de imple-
mentação. Em contrapartida, implementar sistemas em software diminui o custo 
financeiro de implementação, no entanto, possui um custo de manutenção maior, o 
tempo de execução acaba sendo mais alto e os microcontroladores consomem mais 
energia devido a prolongação de seu uso.
Os dois primeiros algoritmos propostos (LÓPEZ-VALLEJO & LÓPEZ, 2003) 
para resolver problemas de particionamento de hardware e software foram Cosyma 
e Vulcan. O algoritmo Cosyma utiliza a técnica de simulated anealling com boa 
granularidade e no algoritmo Vulca II, através de processos interativos, blocos de 
software são extraídos da versão totalmente de hardware como solução, conside-
rando a questão de tempo de execução. Além desses dois algoritmos, surgiu um 
algoritmo, o apresentado por Ptolomey, o qual possuía duas características impor-
tantes: a primeira está relacionada à capacidade de adaptar sua função objetivo 
para ser global ou para priorizar operações críticas; já a segunda característica diz 
respeito à consideração de possíveis implementações de hardware com formas 
diferentes uma da outra.
16
17
Alguns aspectos são comuns e geralmente levados em conta na maioria dos 
ambientes de projeto que necessitam desse particionamento. A especificação inicial 
do projeto é muito importante, pois fixa o nível de abstração exigida pela solução, 
o tipo de aplicação para a qual serão voltados o projeto e o modelo computacional 
escolhido como representação, juntamente com sua granularidade escolhida.
De maneira geral, as definições encontradas na literatura sobre o problema de 
particionamento possuem duas falhas, uma delas está relacionada ao comporta-
mento insatisfatório em situações que a entrada de dados se torna muito grande, 
devido ao custo de resolução estar na ordem exponencial de complexidade em 
relação ao número de tarefas e módulos de hardware. A segunda diz respeito às 
heurísticas utilizadas, as quais acabam divergindo com relação aos resultados espe-
rados. No entanto, a complexidade desse problema é difícil de se determinar.
A ideia de um modelo simplificado de particionamento é de definir formalmente 
vários tipos de particionamentos, para assim analisar a complexidade desses par-
ticionamentos formalmente. Com isso é possível obter como resultado algoritmos 
que possam ser utilizados para um grande número de projetos, ou seja, tornando-
-se um modelo genérico de uso.
Plataforma para Desenvolvimento
Tendo o intuito de complementar as ideias do Co-projto e Particionamento 
 hardware e software, será apresentando o ambiente de desenvolvimento do firmware 
para microcontroladores da família PIC, do fabricante Microchip.
O ambiente de desenvolvimento de software é o MPLAB, fornecido pela própria 
Microchip. Esta IDE, ambiente de desenvolvimento integrado (do inglês Integrated 
Development Environment) oferece ao desenvolvedor um conjunto de ferramentas 
que permitirá escrever código fonte tanto em Assembly como em C, compilar e 
testar o seu microcontrolador PIC. Além do MPLAB existe o MPLAB X, fornecido 
pelo mesmo fabricante, porém é baseado na IDE open-source NetBeans. Ambas 
as plataformas oferecem suporte ao desenvolvimento de firmwares para microcon-
troladores PIC de 8, 16 ou 32 bits.
Tendo desenvolvido o código fonte do firmware no editor do MPLAB, é possível 
então compila-lo pelo próprio compilador da IDE e ter seu binário com a extensão 
HEX, de hexadecimal, gerado. Com isso, esse código fonte poderá ser testado e 
simulado pelo MPLAB.
Executando a IDE, inicialmente irão aparecer duas janelas, uma sendo o Workspace 
e a outra o Output. A janela do Workspace é responsável por mostrar a estrutura 
dos arquivos associados ao projeto em andamento de desenvolvimento. Já a janela 
Output irá indicar as informações sobre os resultados do processo de compilação, 
debug e também de uma possível simulação.
17
UNIDADE Projetos de Sistemas Embarcados 
Para melhor clarificar a utilização da ferramenta, tudo será feito com base em 
um exemplo de criação de um firmware simples, o qual será desenvolvido em 
 Assembly e terá seu conteúdo salvo em um arquivo com a extensão ASM (do in-
glês Assembly Language Source Code File). Além disso, a IDE fornece suporte a 
criação de projetos com múltiplos arquivos desenvolvidos em diferentes linguagens 
de programação como ASM, C, BASIC e outros. Utilizando este recurso ou não, é 
necessário manter os arquivos do projeto em uma mesma pasta, para que assim a 
IDE possa reconhecer os recursos em desenvolvimento.
Para criar um projeto, deve-se acessar o menu Project, escolher New Project e, 
na sequência, a opção Project Wizard.
A próxima caixa de diálogo, chamada Step One, é responsável por selecionar 
qual será o microcontrolador que terá o firmware desenvolvido. No caso deste 
exemplo, será utilizado o PIC16F84A, pois é o mesmo utilizado nas unidades 
anteriores como referência na descrição dos recursos da família de microcontro-
ladores PIC. Na segunda caixa de diálogo, Step Two, será selecionado o com-
pilador, o qual gerará o binário do firmware. O compilador para linguagem 
Assembly disponível é o Microship MPASM Toolsuite. Já na terceira etapa, Step 
Three, será atribuído o nome do projeto e o local onde serão armazenados os 
arquivos. A quarta e penúltima etapa, Step Four, será para adicionar o arquivo 
com o código fonte ou mesmo um arquivo com extensão ASM que ainda não 
contenha o código fonte. Também é possível criar o projeto sem associar um 
arquivo para posteriormente criá-lo ou adicioná-lo diretamente no Workspace. 
Finalmente é apresentado o resumo da criação do projeto, Summary, com as 
especificações do microcontrolador utilizado, do compilador, e local de armaze-
namento do projeto.
Essa é uma sugestão de conteúdo que explora a criação de um projeto de firmware na IDE 
MPLAB utilizando a linguagem C de programação. É possível acompanhar o passo a passo de 
criação, elaboração e compilação de um código fonte: https://youtu.be/r3U5oO8eyXA.
Ex
pl
or
A Figura 5 ilustra a janela da IDE com o código fonte de teste já escrito em 
 Assembly e compilado. Quando se compila o código fonte, através do menu Project 
e opção Make, é possível que surja uma caixa de diálogo ao final, questionando se 
deseja que o projeto gere um código absoluto ou realocável(do inglês absolute or 
relocatable). Basicamente, a opção absolute significa que as variáveis de código e 
memória RAM serão alocadas exatamente como foi pré-definido na configuração 
do compilador. Já a opção relocatable dará autonomia para que o compilador 
possa alocar pedaços do código e variáveis da memória RAM em posições que es-
tiverem disponíveis, ou que forem convenientes. Geralmente, a opção relocatable 
é a escolhida, mas isso pode ser alterado a qualquer momento.
18
19
Figura 5 – Exemplo de implementação e compilação de um fi rmware em assembly utilizando a IDE MPLAB
Após utilizar o MPLAB para desenvolvimento do firmware, é possível utilizar o 
binário compilado em uma plataforma de projeto, simulação e teste de hardware 
chamada Proteus. A utilização de um software para simular um circuito eletrônico 
contribui para a organização de ideias durante o projeto, e é uma forma mais didá-
tica de entender o funcionamento do circuito.
O Proteus possui duas ferramentas chamadas ISIS e Ares. O ISIS tem a função 
de criar esquemas elétricos de circuitos eletrônicos, além de suportar a montagem e 
simulações desses circuitos no próprio ambiente. Essa ferramenta é muito utilizada 
na elaboração de protótipos digitais de hardware de sistemas embarcados, uma vez 
que após a criação digital é possível simular e integrar o hardware ao firmware 
para avaliação de uma previa execução. Se durante a etapa de testes do sistema 
embarcado digital forem encontrados erros de software ou hardware, é possível 
fazer correções rápidas, sem demandar custos adicionais. A etapa seguinte seria 
elaborar o protótipo físico do sistema embarcado, para assim testar e avaliar as 
possíveis interferências do meio que poderiam influenciar no funcionamento corre-
to do projeto. A utilização da placa protoboard, que permite adicionar ou remover 
componentes físicos sem soldá-los, facilita os testes mesmo antes de criar a placa do 
hardware protótipo. Já na criação do protótipo físico, a ferramenta ARES, perten-
cente ao Proteus. permite a elaboração e criação dos layouts de circuitos impres-
sos, que podem ser utilizados na criação das trilhas e disposição dos componentes 
eletrônicos na placa.
Utilizando a ferramenta ISIS do software Proteus foi possível elaborar o circuito 
digital com o PIC16F84A, um LED vermelho, dois resistores, um de 330 Ohms e 
outro de 10k Ohms, além de um botão de ativação e o indicativo do uso de uma 
fonte de 5 V. Este hardware corresponde ao firmware desenvolvido e compilado 
anteriormente na IDE MPLAB. A Figura 6 ilustra o esquema elétrico montado com 
os componentes citados.
19
UNIDADE Projetos de Sistemas Embarcados 
Figura 6 – Circuito elétrico simulado na plataforma Proteus
Fonte: Acervo do Conteudista
Considerando que a simulação ocorreu como o esperado, funcionou correta-
mente e a prototipagem física do sistema embarcado foi construída, será necessário 
a utilização do software e hardware de gravação do binário do firmware no micro-
controlador, no caso da família PIC. O software chama MicroBRN, que é ligado à 
placa de gravação via conexão usb. A Figura 7 ilustra a utilização do MicroBRN na 
gravação do firmware.
Figura 7 – Ilustração do uso do software MicroBRN para gravação do fi rmware no microcontrolador PIC
20
21
Por fim, a placa PicStart Plus com o suporte de encaixe do microcontrolador, 
o qual aceita qualquer PIC de até vinte terminais, e conexão usb para transferência 
de dados provenientes do computador com uso do software MicroBRN, ilustrados 
o link a seguir.
Ilustração da placa de gravação de firmware em um microcontrolador: http://bit.ly/2IBBq4J
Ex
pl
or
Para exemplificar a integração hardware e software na plataforma de simulação Proteus, 
o vídeo sugerido ilustra os passos iniciais da elaboração do circuito na ferramenta ISIS. 
 Disponível em: https://youtu.be/BMEPamon6P4
Ex
pl
or
21
UNIDADE Projetos de Sistemas Embarcados 
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Sites
Microchip
Download do ambiente de desenvolvimento MPLAB IDE da Microchip.
http://bit.ly/2Ix7wPa
 Vídeos
Iniciando um Projeto Eletronico – Canvas para detalhamento
Explicação sobre a elaboração de um co-projeto de hardware e software utilizando o 
modelo Business Model Canvas.
https://youtu.be/RHYGng_OBtw
Primeiro Projeto em Linguagem C | Curso PIC
Material de apoio a construção e elaboração de um firmware com a IDE MPLAB.
https://youtu.be/r3U5oO8eyXA
Microcontrolador Aula 1 – Ligação Pic no Proteus
Material de apoio para uso da ferramenta de simulação ISIS pertencente ao 
software Proteus.
https://youtu.be/BMEPamon6P4
Descubra o princípio de funcionamento das INTERRUPÇÕES dos microcontroladores
Uso de interrupções no projeto de sistemas embarcados.
http://bit.ly/2Ixp8KH
22
23
Referências
BINDAL, A. Electronics for Embedded Systems. Cham: Springer International 
Publishing, 2017.
DE MICHELI, G.; GUPTA, R, K. Hardware/Software Co-Design. Proceedings of 
the IEEE, v. 85, n. 3, 1997, p. 349-365.
HOLT, A.; HUANG, C. Y. Embedded Operating Systems A Practical Approach . 
2. edition. ed. Cham: Springer International Publishing AG, 2018.
LÓPEZ-VALLEJO, M.; LÓPEZ, J. C. On the Hardware-Software Partitioning 
Problem: System Modeling and Partitioning Techniques. ACM Transactions on 
 Design Automation of Electronic Systems, v. 8, n. 3, p. 269-297, 2003.
QIAN, K.; HARING, D. D.; CAO, L. Embedded Software Development with C. 
New York: Springer Science+Business Media, 2009.
SCHNEIDER DE OLIVEIRA, A.; SOUZA DE ANDRADE, F. Sistemas Embarcados 
Hardware e Firmware na Prática. 2. ed. São Paulo: Érica, 2010.
SIPSER, M. Introduction to The Theory of Computation. 2. Ed. Thomson, 2006.
23

Continue navegando