Projeto de Sistemas Embarcados
Projeto de Sistemas Embarcados
Projeto de Sistemas Embarcados
net/publication/267298521
Article
CITATION READS
1 743
1 author:
Marcos Zurita
Universidade Federal do Piauí
6 PUBLICATIONS 24 CITATIONS
SEE PROFILE
All content following this page was uploaded by Marcos Zurita on 20 November 2014.
Segundo uma recente pesquisa realizada pela IDC 1. São dedicados a tarefas específicas enquanto
[2], cerca de 19% de todos os sistemas eletrônicos PCs são plataformas genéricas de
vendidos hoje no mundo são sistemas embarcados, computação – Esta característica tem
e este número deverá crescer para 33% até 2015. impacto principalmente no poder
Eles são atualmente responsáveis por uma receita computacional da máquina. PCs devem
anual de 1 trilhão de dólares, o que deve dobrar nos poder rodar um grande número de
próximos 4 anos, quando então serão responsáveis aplicativos, com diferentes exigências de
pelo consumo de cerca de 14,5 bilhões de processamento, mantendo um bom
processadores por ano, mais de 2 para cada desempenho, enquanto SEs precisam realizar
habitante no mundo. apenas uma ou poucas tarefas bem
específicas;
O rápido crescimento desse setor implica numa
demanda igualmente crescente de recursos 2. São suportados por uma vasta gama de
humanos adequados para poder suplanta-lo. Em processadores e arquiteturas de
outras palavras, há uma imensa oportunidade para processadores – Atualmente, mais de 40
projetistas e desenvolvedores na área de projetos de empresas de semicondutores disputam o
mercado de microprocessadores e
microcontroladores [6]. Cada uma delas por grande variedade. A indústria automotiva,
sua vez oferece várias soluções distintas. por exemplo, possuí um padrão chamado
Apenas a Microchip [7], uma das líderes OSEK, no qual estão definidas uma série de
deste segmento, tem hoje uma lista de mais especificações a serem seguidas pelos seus
de 500 diferentes microcontroladores. RTOSs [13].
Naturalmente, um grande leque de opções
aumenta o grau de liberdade de escolha dos 6. Neles, as implicações de uma falha de
projetistas mas também requer deles software são muito mais severas do que num
conhecimento adequado para encontrar as desktop – muitos SEs interagem com o
soluções mais apropriadas a cada projeto; ambiente ou seres humanos, como é o caso
de sistemas de vida-críticos (life-critical
3. São geralmente sensíveis aos custos – a systems) [14][15], por exemplo. Falhas
maior parte dos sistemas embarcados podem ter consequências no ambiente, no
possuem bem menos componentes e custam próprio sistema ou até mesmo nas pessoas
bem menos do que um PC. Evidentemente o em torno dele. Um bug no software do
impacto nos custos da adição de meia dúzia sistema de injeção eletrônica de um
de componentes é bem mais significativo automóvel, por exemplo, pode reduzir a vida
num sistema que possui uma dúzia deles do útil de componentes do motor e aumentar o
que num que possui mais de uma centena. consumo e a emissão de gases poluentes. Um
Em alguns sistemas de identificação sem bug no software de controle da dosagem de
contato (RFId), um simples capacitor pode radiação de uma máquina de raios-X poderia
representar até 20% dos custos totais [8]. ter consequências sérias na saúde do
paciente. Por essa razão, muitos SEs
4. Possuem requisitos de tempo-real – neste possuem mecanismos de segurança para
aspecto, SEs geralmente podem ser divididos detectar e contornar falhas, tal como o
em dois grupos: os que possuem requisitos watchdog timer [16]. Neste aspecto, Peter
de “tempo sensível” e os que possuem Marwedel [17] estabelece 5 parâmetros de
requisitos de “tempo crítico”. As tarefas de caraterização de SEs:
tempo crítico são intolerantes a atrasos,
devem ser realizadas dentro de um intervalo • Confiabilidade: é a probabilidade do
preciso de tempo ou a tarefa falha. O sistema sistema de não falhar;
de acionamento dos airbags de um carro são
um bom exemplo disso. Nele, alguns • Manutenibilidade: é a probabilidade
milissegundos podem fazer a diferença entre que uma falha no sistema possa ser
salvar ou não a vida do motorista [9]. Tarefas corrigida em um certo intervalo de
de tempo sensível, por outro lado, são mais tempo;
tolerantes. Se a tarefa responsável pelo • Disponibilidade: é a probabilidade do
fechamento da válvula de água de uma sistema estar disponível. Será tanto
máquina de lavar atrasar um ou dois maior quanto maior for sua
segundos, a roupa será lavada com um pouco confiabilidade e manutenibilidade;
mais de água além do necessário, perdendo
um pouco da eficiência almejada; • Segurança: descreve a probabilidade
do sistema de não causar algum tipo de
5. Quando utilizam um sistema operacional, dano;
este é quase sempre um RTOS – A principal
• Confidencialidade: descreve quão
diferença entre um Sistema Operacional de
capaz é o sistema de manter dados
Tempo Real (RTOS – Real Time Operating
confidenciais e de garantir uma
System) e um sistema operacional
comunicação autenticada;
convencional é que num RTOS a importância
para o sistema da finalização de uma tarefa é 7. Costumam ter restrições no consumo de
um valor que varia com o tempo [10][11]. energia – Ao contrario dos PCs, grande parte
Este valor geralmente é descrito em termos dos sistemas embarcados são alimentados
de deadlines para finalização de cada tarefa. unicamente por pequenas baterias. Neles, a
Uma vez que o tempo de resposta é visto redução de alguns miliwatts/hora no
como parte crucial da exatidão do software consumo pode estender a duração das
(SW), ele deve poder ser comprovado sem baterias por dias ou meses. Frequentemente,
argumentos estatísticos [12]. Assim como os a responsabilidade de poupar energia é
microcontroladores, os RTOSs existem em atribuída unicamente aos engenheiros do
hardware (HW), mas em SEs essa memórias RAM de alta capacidade,
responsabilidade deve ser compartilhada processadores gráficos e monitores de alta
também pelos desenvolvedores do software. resolução, são recursos comuns dos desktops
Em um PDA, por exemplo, o consumo pode atuais. A capacidade de armazenamento da
ser reduzido em até 60% através de memória RAM desses computadores
alterações na forma como o software é pessoais é maior do que todo o disco rígido
escrito [18]. Evidentemente, as escolhas de um típico PC do final da década de 90.
feitas no projeto do hardware tem impacto Com isso, a maior parte dos aplicativos
crucial no consumo do sistema. Em muitos podem ser escritos assumindo a memória
SEs o principal vilão do consumo é o como um recurso infinito. Para um sistema
processador, mas esse nem sempre é o caso. embarcado a realidade é bem diferente. Na
A Pathfinder, sonda espacial enviada para maior parte deles a RAM não chega a
Marte, por exemplo, teve o consumo como quinhentos bytes, todo o SW deve caber em
uma das principais restrições de projeto. alguns poucos kB e rodar em um processador
Todos os módulos da sonda foram projetados cujo clock mal chega a 20 MHz. A
para poderem ser ligados e desligados quantidade de teclas é bastante limitada
individualmente e a sonda inteira permanecia fazendo com que precisem acumular funções.
em “sleep mode” durante a noite, quando as Muitos não tem sequer um display e a
células fotovoltaicas deixavam de captar interface com o usuário se dá através de
energia e a eficiência da bateria caía devido à LEDs e sons. Evidentemente, o código
queda de temperatura. Mesmo quando em escrito para essas aplicações precisa observar
modo operacional, o software não podia uma série de cuidados que os voltados para
manter ligado mais de um módulo ao mesmo PCs não precisam. Uma simples operação
tempo devido à escassez de energia matemática, pode consumir 1% ou 70% da
disponível [19]; memória em um dado microcontrolador,
dependendo apenas da forma como é escrita;
8. Devem poder operar em condições
ambientais extremas – A natureza portátil de 10. Geralmente todo seu programa fica
muitos sistemas embarcados implica que eles armazenado em uma ROM – Esta
devem ser capazes de suportar as mesmas característica pode parecer insignificante mas
condições que seus usuários ou sistemas não é. Ter seu código armazenado em uma
receptores. Um PDA deve poder funcionar à ROM impõe severas limitações ao sistema. A
40ºC na praia de Copacabana, a -15ºC nos primeira, discutida anteriormente, diz
Alpes ou a 11.000 metros de altitude na respeito ao tamanho do código. A outra está
cabine de um avião. Da mesma forma, o ligada aos métodos usados para projeta-lo.
sistema de frenagem ABS deve funcionar no Um código armazenado numa ROM não
calor de 45ºC de Teresina, no frio de -5ºC de pode ser depurado da mesma maneira como
Porto Alegre, em dias secos e dias chuvosos, ocorre nos PCs. Para inserir um breakpoint, o
e em todas essas mesmas condições após depurador precisa remover uma instrução do
5.000 km de estrada de terra trepidante. Os programa e substitui-la por outra responsável
requisitos ambientais de operação geralmente por desviar a execução para algum ponto do
têm consequências diretas no hardware e as depurador, tarefa impossível numa memória
vezes até mesmo no software. Um que não pode ser alterada aleatoriamente;
processador que precise ser selado em
borracha de silicone para poder suportar 11. Requerem ferramentas e métodos
elevados índices de umidade, terá sua especializados para serem eficientemente
capacidade de dissipação térmica projetados – O fato dos sistemas embarcados
comprometida e precisará ter seu clock serem compostos por hardware e software
reduzido, afetando o desempenho do integrados exige mudanças na sua forma de
software; concepção, teste e depuração, em relação a
um projeto de hardware e um projeto de
9. Seus recursos de sistema são extremamente software feitos isoladamente. Depurar um
menores do que os de um desktop – sistema de processamento de vídeo no qual
Processadores com múltiplos núcleos parte dos blocos são implementados em
rodando à frequências superiores a 2 GHz, software e outra parte em hardware não é
discos rígidos com capacidade da ordem de uma tarefa nada trivial e necessita bem mais
tera-bytes, barramentos de alto desempenho, do que um simples aplicativo de depuração.
portas de comunicação de alta vazão, Muitas vezes, é necessário projetar uma
plataforma que emule o sistema no qual o SE um modelo formal deve conter:
será integrado, paralelamente ao projeto
deste, para ser usado nas etapas de teste e • Uma especificação funcional, sob a forma
depuração. Depurar um sistema de controle de um conjunto de relações explícitas ou
de altitude usando o próprio avião não é implícitas que envolvem entradas, saídas, e
muito prático, tampouco uma boa ideia; possíveis estados internos;
Fase 4 – Projeto
subsistemas, e assim por diante, até que seja Detalhado
descrito em termos de componentes do HW e SW
Por outro lado, tem a desvantagem de não Fig. 2: Fluxo de projeto de sistemas embarcados
permitir conhecer com precisão as reais
métricas do sistema até que o último passo Neste fluxo, o ciclo de vida do projeto de sistemas
tenha sido completado. Quando elas não embarcados é divido em 7 fases:
atendem aos requisitos, o projeto precisa
1. Especificação do produto;
recuar e ser refeito repetidas vezes até que
eles sejam alcançados. Para minimizar esse 2. Particionamento do projeto em
inconveniente, são empregados os chamados componentes de hardware e software;
estimadores, ferramentas capazes de estimar
3. Iteração e refinamento do particionamento;
características de um nível mais baixo de
descrição, tais como consumo, desempenho, 4. Tarefas independentes de projeto do
área de silício ocupada, latência, vazão, etc., a hardware e do software;
partir de descrições em mais alto nível.
5. Integração dos componentes de hardware e CPU.
software;
Durante a fase de iteração e refinamento do
6. Testes, aceitação e lançamento do produto; particionamento, o particionamento definido na
7. Manutenção e atualização contínua. fase anterior é posto à prova por meio de
ferramentas de alto nível. Projetistas de hardware
Na fase de especificação o sistema é inicialmente poderão se valer de ferramentas de simulação
descrito de maneira informal através de uma série arquitetural, por exemplo, enquanto projetistas de
de especificações. Durante a especificação deve-se software poderão rodar ferramentas de benchmark
destacar de forma clara quais são os requisitos do em placas de avaliação do processador ou
projeto que se deseja realizar. Os requisitos são as microcontrolador escolhido. Em função dos
guias-mestre do projeto e estabelecem critérios resultados obtidos nesta fase, o particionamento
importantes à tomada de decisões durante as etapas pode ser revisto, repetindo-se o processo até que as
futuras. Pontos de otimização subjetiva, se simulações forneçam resultados satisfatórios,
existirem, devem ser colocados de forma indicando que o projeto atenderá aos requisitos
hierárquica, ou seja, devem ser estabelecidos em estabelecidos.
ordem decrescente de relevância, já que muitas
vezes sua implementação é conflitante, fazendo Uma vez concluída a fase de iteração e refinamento
com que a otimização de um deprecie as do particionamento, tem início a fase seguinte, na
características de outro. Um exemplo tipico é o qual os componentes de hardware e software
projeto de um smartphone, no qual o desempenho devem ser implementados de fato. Cada um deles
de processamento e o consumo da bateria são duas modelado separadamente. Durante essa fase,
características que comumente se deseja otimizar. O ferramentas e técnicas de verificação são
problema é que, geralmente, o aumento do empregadas tanto nos componentes de HW quanto
desempenho implica no aumento do consumo. Se, nos de SW e os erros encontrados, corrigidos. Após
ao final da fase 5, as duas características atenderem essa fase os componentes de HW e SW são
aos requisitos (com algum grau de liberdade), os reunidos e integrados (fase 5) de forma a compor o
projetistas deverão saber qual delas deverá ser sistema embarcado completo. Idealmente, ao se
priorizada na otimização. Ao final da fase de reunir os componentes tudo deveria funcionar
especificação, as especificações, inicialmente perfeitamente, mas a realidade costuma ser
informais, devem ter sido formalizadas diferente e erros aparecem. Por se tratarem de
(frequentemente através de alguma linguagem de sistemas complexos, a tarefa de se localizar e
alto nível, como UML, por exemplo), de tal sorte corrigir as fontes dos problemas não costuma ser
que um diagrama de blocos do sistema embarcado algo evidente. Além disso, alguns problemas podem
completo possa ser visualizado, e cada bloco ter seu mecanismo de ativação bastante complexo,
contenha especificações funcionais e dependendo, por exemplo, de uma sequência
comportamentais. específica de pressionamento de teclas quando o
sistema se encontra em um dado estado interno e a
Na fase de particionamento HW/SW, os projetistas temperatura ultrapassa um valor limite. Neste
deverão decidir quais partes do sistema serão ponto, ferramentas de co-simulação e verificação,
implementadas em hardware e quais serão em conjunto com instrumentos como osciloscópios
implementadas em software. Essas partes podem e analisadores lógicos costumam ser necessários.
tanto ser blocos definidos na fase de especificação,
como também frações deles (sub-blocos). Após a integração do sistema e depuração dos erros
Dependendo da metodologia utilizada, esse encontrados, vem a fase de testes e lançamento do
particionamento pode ser guiado em função dos produto. Nesta fase o sistema é testado
componente de HW e SW pré-existentes nas exaustivamente em condições idênticas às que ele
bibliotecas de projeto em uso. Deve-se notar no será submetido após o lançamento do produto.
entanto que essa decisão deve atender Durante esses testes, o sistema deverá responder e
prioritariamente os requisitos estabelecidos na fase comportar-se conforme os requisitos estabelecidos
de especificação. A decisão de implementar um no início do projeto.
dado bloco em hardware implica, na maioria das
vezes, num aumento da complexidade, tempo e Finalmente, após o lançamento do produto no
custos do projeto, mas permite um ganho de mercado, vem a fase de manutenção e atualização.
desempenho bem maior que sua implementação em Manter e atualizar o produto concebido costuma ser
software. Os aficionados por jogos de PC sabem bem mais lucrativo do que refazer todo um projeto
bem a diferença entre ter uma placa dedicada à novamente. Faz parte dessa fase também a busca
aceleração gráfica e emular OpenGL na própria por otimizar as características do produto lançado,
bem como o enriquecimento da documentação Springer, Novembro de 2004.
externa (para o público) e interna (para os atuais e [11] Jensen, E.D., Locke, C.D., Tokuda, H., “A
futuros projetistas) a respeito dele. Time-Driven Scheduling Model For Real-
Time Operating Systems”, IEEE Real-Time
4 Conclusão Systems Symposium, pp 112-122, 1985.
Foram apresentados alguns conceitos básicos sobre [12] Kopetz, Hermann., “Real-Time Systems –
sistemas computacionais embarcados, e as linhas Design Principles for Distributed Embedded
gerais das metodologias de projeto mais aplicadas, Applications”, 1ª ed., Kluwer Academic
bem como uma exposição sucinta de alguns dos Publishers, Boston, MA, USA, 1997.
formalismos importantes. Embora pontos relevantes [13] OSEK/VDX Steering Committe,
tenham sido citados, uma quantidade imensa de “OSEK/VDX Operating System”, Ver. 2.0,
informação foi omitida pela brevidade deste rev. 1, outubro de 1997.
documento. Por essa razão, literaturas que [14] Bowen, J.P, Stavridou, V., “Safety-Critical
considero imprescindíveis foram citadas ao longo Systems, Formal Methods and Standards”,
do texto, a fim de permitir aos seus leitores Software Engineering Journal, vol. 8, no. 4,
aprofundar seus conhecimentos a respeito do tema. pp: 189-209, Julho de 1993.
[15] Butler, R.W., Finelli, G.B., “The Infeasibility
5 Referências of Quantifying the Reliability of Life-Critical
Real-Time Software”, IEEE Transactions on
[1] Klaus Finkenzeller, “RFID Handbook:
Software Engineering, vol. 19, no. 1, pp. 3-12,
Fundamentals and Applications in
1993.
Contactless Smart Cards and Identification”,
[16] Fumihide Kitamura et al., “Watch Dog
2ª ed., Wiley, 2003.
timer”, United States Patent, Patent number:
[2] Morales, M., Rau, S., Palma, M.J.,
4752930, 21 de Junho de 1988.
Venkatesan, M., Pulskamp, F., Dugar, A.,
[17] Marwedel, P., “Embedded System Design -
“Worldwide Intelligent Systems 2011–2015
Embedded Systems Foundations of Cyber-
Forecast: The Next Big Opportunity”,
Physical Systems”, 2ª ed., Springer, 2011.
International Data Corporation - IDC,
[18] Ellis, C.S., “The Case for Higher-Level
Setembro de 2011.
Power Management”, 7th IEEE Workshop on
[3] “IEEE Standard Glossary of Software
Hot Topics in Operating Systems (HotOS-
Engineering Terminology”, Version 610.12-
VIII), pp. 162–167, Rio Rico, AZ, Março de
1990, Standards Coordinating Committee of
1999.
the IEEE Computer Society, pp. 30, USA,
[19] H. W. Stone, “Mars Pathfinder Microrover:
1990.
A Low-Cost, Low-Power Spacecraft”, 1996
[4] Heath, Steve, “Embedded System Design”, 2ª
AIAA Forum on Advanced Developments in
ed., Elsevier, 2003.
Space Robotics, Madison WI, 1996.
[5] Berger, A.S., “Embedded Systems Design –
[20] Wolf, W., “Computers as Components -
An Introduction to Process, Tools, &
Principles of Embedded Computing System
Techniques”, CMP Books, USA, 2002.
Design”, Morgan Kaufmann Publishers, San
[6] Levy, Marcus, “EDN
Francisco, 2ª ed., Junho de 2008.
Microprocessor/Microcontroller Directory”,
[21] Edwards, S., Lavagno, L., Lee, E.A.,
EDN, 14 de setembro de 2000.
Sangiovanni-Vincentelli, A., “Design of
[7] Microchip Technology Inc.,
Embedded Systems: Formal Models,
www.microchip.com, outubro de 2011.
Validation and Synthesis”, IEEE, vol. 85, No
[8] Swamy, G., Sarma S., “Manufacturing Cost
3, pp. 366–390, Março de 1997.
Simulations for Low Cost RFID Systems”,
[22] IEEE, “IEEE Std 1012-2004 - IEEE
Auto-ID Center, MIT, USA, fevereiro de
Standard for Software Verification and
2003.
Validation”, Revisão do padrão IEEE Std
[9] Jung, C. R.; Osório, F. S.; Kelber, C.; Heinen,
1012-1998, 2004.
F., “Computação Embarcada: Projeto e
[23] Gajski D., Kuhn, R., “New VLSI Tools”,
Implementação de Veículos Autônomos
Computer Magazine, pp 11–14, Dezembro de
Inteligentes”, Anais do CSBC’05 XXIV
1983.
Jornada de Atualização em Informática (JAI),
[24] Gajski, D.D., Abdi, S., Gerstlauer, A.,
v. 1, p. 1358–1406, São Leopoldo, RS: SBC,
Schirner, G., “Embedded System Design -
julho de 2005.
Modeling, Synthesis and Verification”,
[10] Stankovic, J.A., Rajkumar, R., “Real-Time
Springer, 2009.
Operating Systems”, Real-Time Systems
[25] Sangiovanni-Vincentelli, A., Martin, G.,
Journal, Vol. 28, Issue 2, pp. 237-253,
“Platform-based Design and Software
Design Methodology for Embedded
Systems”, IEEE Design and Test for
Computer, vol. 18, n. 6, p. 23-33, 2001.