Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
Artigo baseado em Relatrio de Iniciao Cientfica apresentado pelo Curso Superior de Tecnologia em Anlise de Sistemas e
Tecnologia da Informao da Faculdade de Tecnologia de Americana Fatec Americana depositado no 1 semestre de 2011
2
Discente do 8 Semestre do Curso Superior de Tecnologia em Anlise de Sistemas e Tecnologia da Informao da Faculdade de
Tecnologia de Americana ; Contato: thomas_tadeu_gallassi@msn.com
3
Prof.Dr. Fatec Americana Graduao em Processamento de Dados e Engenharia de Controle e Automao ; Mestrado em
Informtica e Doutorado em Engenharia Eltrica ; Contato: martinsleg@hotmail.com
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
78
1 INTRODUO
79
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
2 SISTEMAS OPERACIONAIS
Para que se possa falar sobre sistemas operacionais embarcados, necessrio conhecer um pouco
sobre sistemas operacionais tradicionais de informtica e seus conceitos, para assim entender as
similaridades e diferenas entre ambos os tipos de sistemas. Portanto, neste captulo so apresentados
alguns conceitos sobre sistemas operacionais que embasam o uso de sistemas operacionais embarcados.
2.1 Caractersticas
Um sistema computacional moderno consiste em pelo menos um processador, memria principal,
teclado, mouse, monitor, interfaces de rede, discos, impressoras, e outros dispositivos de entrada e sada de
dados. Isso significa que desenvolver programas para manter o controle de todos esses componentes e os
utilizar corretamente extremamente difcil. Por isso foram criados os sistemas operacionais, cujo trabalho
gerenciar esses recursos e fornecer aos programas dos usurios interfaces com o hardware simplificadas.
Com a evoluo e ramificao dos tipos de computadores e de sistemas, foram surgindo tambm sistemas
operacionais especficos e diversificados (TANENBAUM, 2003).
Como exemplificado na Tabela 1, um sistema computacional comum pode ser analisado e estudado
em camadas.
Tabela 1 Camadas de um Sistema Computacional
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
80
embarcados, que sero estudados posteriormente. As trs ltimas camadas juntas constituem o nvel de
hardware de um sistema (TANENBAUM, 2003).
2.2 Funes
Um sistema operacional pode ser visto como uma mquina estendida, ou seja, um simplificador dos
comandos de linguagem de mquina e do hardware e fornecedor de servios, tornando mais fcil a
programao, mas pode ser visto tambm como um gerenciador de recursos, que fornece uma alocao
ordenada e controlada de processadores, memrias e dispositivos de entrada e sada de dados, alm de
assegurar que as requisies de vrios programas ou mesmo de vrios usurios para um mesmo recurso,
sejam feitas de maneira segura e sem interferncias (TANENBAUM, 2003).
2.3 Hardware de Computadores
Um sistema operacional est intimamente ligado e precisa ter um grande conhecimento sobre o
hardware do computador no qual executado, j que estende o conjunto de instrues do computador e
gerencia seus recursos.
Conceitualmente, um computador pessoal simples pode ser abstrado para um modelo semelhante
ao da Figura 1, onde a CPU (Unidade de Processamento Central do ingls Central Processing Unit), a
memria e os dispositivos de entrada e sada de dados esto ligados por um barramento, o qual proporciona
a comunicao entre eles. Computadores mais modernos, porm, podem possuir mltiplos barramentos
(TANENBAUM, 2003).
Figura 1 Computador Pessoal Simples
2.3.1 Processadores
O processador o componente principal do computador, ele possui uma ou mais CPUs, que so
responsveis por buscar instrues na memria e as executarem. O ciclo bsico para isso :
Buscar instruo na memria;
Decodificar a instruo para determinar seus operandos e qual operao executar;
Executar a instruo;
Prosseguir com as instrues subsequentes.
assim que os programas so executados em um computador. Cada CPU possui um conjunto
especfico de instrues que consegue executar, e por isso que alguns computadores no conseguem
executar certos programas.
Alm disso, como o tempo de acesso memria para buscar instrues ou operandos menor do
que o tempo para execut-las, as CPUs possuem registradores internos para armazenamento de variveis
importantes e para armazenamento de resultados temporrios.
Alm desses registradores de propsito geral, h tambm os registradores especiais, que so
importantes e visveis aos programadores. Entre eles temos o contador de programa, que contm o endereo
de memria da prxima instruo a buscar, o ponteiro de pilha, o qual aponta para o topo da pilha atual de
memria. (As pilhas contm estruturas para cada procedimento chamado, mas que ainda no encerrou. Uma
estrutura de pilha contm parmetros de entrada e as variveis locais e temporrias que no so mantidas
nos registradores) e a PSW (Palavra de Estado do Programa do ingls Program Status Word), que contm
os bits do cdigo de condies, os quais podem ser alterados por instrues de comparaes, pelo nvel de
prioridade da CPU, e por vrios outros bits de controle.
Quando um sistema operacional compartilha o tempo de CPU, ele geralmente interrompe a execuo
de um programa e inicia a de outro. Toda vez que o sistema operacional faz isso, ele precisa salvar todos os
registradores para que eles possam ser restaurados quando o programa voltar a ser executado.
As CPUs antigas usavam um modelo simples de busca, decodificao e execuo de uma instruo
por vez, mas as CPUs modernas possuem recursos para trabalhar em mais de uma instruo por vez,
atravs de unidades separadas de busca, decodificao e execuo de instrues. Um modelo de pipeline
de trs estgios est exemplificado na Figura 2.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
81
82
A maioria das CPUs possuem dois modos de funcionamento, o modo ncleo, onde os programas
possuem acesso a todas as instrues das CPUs e podem usar todos os atributos do hardware, e o modo
usurio, onde o acesso e os atributos so restritos a apenas um subconjunto. O sistema operacional
sempre executado em modo ncleo, e se os programas precisarem de acesso a instrues ou atributos do
hardware que so restritos, estes podem fazer uma chamada ao sistema, que alterna o modo usurio para
modo ncleo e passa o controle para o sistema operacional. Quando a instruo completada, o sistema
operacional alterna novamente a CPU para o modo usurio e retorna o resultado para o programa que fez a
requisio (TANENBAUM, 2003).
2.3.2 Memria
O segundo principal componente dos computadores a memria. Idealmente, a memria deveria ser
grande, barata e mais veloz que a execuo de uma instruo (para que a CPU no fosse atrasada), porm
nenhuma tecnologia atende esses requisitos, e por isso, a memria dos sistemas construda baseada em
uma hierarquia de camadas, onde as memrias mais rpidas, porm menores e mais caras, esto mais
prximas (em termos de acesso) da(s) CPU(s), enquanto as que possuem maior capacidade de
armazenamento encontram-se mais distantes.
Seguindo a ordem de acesso pela CPU, podemos construir em modelo em cinco camadas. No nvel
superior temos os registradores internos, que, por serem feitos do mesmo material, so to rpidos quanto a
CPU. Geralmente possuem menos de 1 KB (Kilobytes do ingls Kylobytes) de espao. No segundo nvel
temos a memria cache, que controlada principalmente pelo hardware e guarda as instrues que esto
sendo muito usadas. Um computador pode ter mltiplos nveis de memria cache.
Em seguida temos a memria RAM (Memria de Acesso Aleatrio do ingls Random Access
Memory), que a memria principal. As requisies que no so atendidas pela memria cache so
procuradas na memria RAM.
O disco rgido vem em sequncia e, por ser um dispositivo mecnico, um dispositivo de memria
no voltil, o que significa que no perde informaes quando o computador desligado (ao contrrio das
camadas discutidas anteriormente). Por ltimo temos a fita magntica, outro dispositivo mecnico, e por isso,
de memria no voltil, que serve como backup (cpia de segurana) e pode ser descartado para certos
modelos de computadores. Geralmente comum para computadores de empresas.
H outros dispositivos de armazenamento que mudam ligeiramente o modelo de camadas especfico
para cada computador, como discos pticos, flash drives etc.
H ainda memrias especiais, como a ROM (Memria Somente de Leitura do ingls Ready-Only
Memory), que uma memria no voltil, programada de fbrica, que rpida e barata, mas no pode ser
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
alterada (mas as variaes, como a EEPROM (Memria Somente de Leitura Programvel do ingls
Electrically Erasabel Programmable Read-Only Memory) e flash RAM podem ser apagadas e reescritas,
permitindo atualizaes e correo de possveis erros). A ROM bastante usada como carregador, para
iniciar um computador, mas pode estar presente em placas de dispositivos de entrada e sada para controle
de baixo nvel.
2.3.3 Dispositivos de Entrada e Sada de Dados
Os dispositivos de entrada e sada tambm interagem intensivamente com o sistema operacional.
Eles so geralmente constitudos de duas partes: um controlador, e o dispositivo propriamente dito. Os
dispositivos em si, possuem interfaces simples, porque no fazem nada muito diferente um dos outros, o que
ajuda a padroniz-los.
J o controlador um chip ou um conjunto de chips em uma placa que controla fisicamente o
dispositivo. Ele recebe comandos do sistema operacional para interagir com o dispositivo. Como o controle
real de um dispositivo pode ser complexo, tarefa do controlador oferecer uma interface simplificada ao
sistema operacional.
Como cada controlador diferente, diferentes programas so necessrios para que o sistema possa
control-los. Estes programas chamam-se drivers de dispositivo, e cada fabricante de controlador deve
oferecer um driver apropriado para cada sistema operacional suportado. Majoritariamente, para funcionar, os
drivers devem ser executados em modo ncleo e precisam estar dentro do sistema operacional.
Todo controlador possui um pequeno nmero de registradores, que so usados na comunicao.
Para ativar um controlador, o driver recebe um comando do sistema operacional e o traduz em valores
apropriados para serem escritos nos registradores do controlador (TANENBAUM, 2003).
2.4 Conceitos sobre Sistemas Operacionais
No basta conhecer apenas o hardware de um sistema esperando entender o que um sistema
operacional, necessrio conhecer tambm os conceitos bsicos de um sistema operacional. Esta seo
aborda tais conceitos.
2.4.1 Processo
um conceito fundamental para todos os tipos de sistemas operacionais. Um processo pode ser
definido como um programa em execuo.
Associado a cada processo temos seu espao de endereamento, uma lista de posies na memria
as quais ele pode ler e escrever, e um conjunto de registradores (que inclui o contador de programas, o
ponteiro de pilha, alguns registradores do hardware e todas as demais informaes necessrias para
executar o programa). O espao de endereamento, por sua vez, contm o programa executvel, os dados
do programa e sua pilha.
Em sistemas de tempo compartilhados, periodicamente, o sistema operacional interrompe e salva
(geralmente em uma tabela de processos) todas as informaes de um processo em execuo, e comea a
executar outro programa, reiniciando a execuo do processo salvo mais tarde.
As principais chamadas ao sistema de gerenciamento de processos so aquelas que lidam com a
criao e trmino de processos, mas incluem tambm requisio de mais memria, liberao de memria e
sobreposio de um processo depois de seu trmino. Um processo pode criar outros processos (chamados
de processos filhos), e assim podemos montar uma estrutura de rvore.
Processos que cooperam para realizar uma tarefa precisam frequentemente se comunicar e
sincronizar suas atividades, o que chamado de comunicao interprocessos. Um processo pode pedir ao
sistema operacional para ser notificado caso no haja resposta de recebimento de uma mensagem (isso
mais comum entre processos que se comunicam atravs de uma rede de computadores), assim, quando o
sistema operacional enviar o sinal de alarme para o processo interromper e salvar tudo o que estiver
fazendo e inicie um procedimento especial para tratamento desse sinal (geralmente para reenviar a
mensagem).
Todo processo possui entre seus registradores, uma UID (Identificao de Usurio do ingls User
Identification), que serve para identificar o usurio sob o qual o processo foi criado. Geralmente usado
como proteo, para impedir que usurios sem permisses especiais interfiram em processos de outros
usurios.
Quando um processo est apenas esperando uma resposta de outro processo que, por algum
motivo, no existe mais, o chamamos de processo zumbi, j que ele consome tempo do processador e no
faz nada de til ao usurio ou ao sistema (TANENBAUM, 2003).
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
83
Cada arquivo ou diretrio pode ser especificado fornecendo-se o caminho a partir do topo da
hierarquia (diretrio raiz). Isso forma uma lista dos diretrios que devem ser percorridos a partir do diretrio
raiz para se chegar ao arquivo. Cada processo tem um diretrio de trabalho atual, ou seja, suas buscas e/ou
especificaes de arquivos iniciam desse diretrio de trabalho.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
84
H tambm arquivos chamados de pipes, que so arquivos que servem de comunicao entre dois
ou mais processos (um processo escreve no arquivo, e outro processo l) (TANENBAUM, 2003).
2.4.5 Segurana
Computadores contm informaes que seus usurios, muitas vezes, querem manter confidenciais,
e cabe ao sistema operacional gerenciar o sistema de segurana, para que os arquivos e recursos sejam
acessveis apenas a usurios autorizados e para que o computador no seja invadido por usurios externos
ou vrus (TANENBAUM, 2003).
2.4.6 Interpretador de Comandos
O sistema operacional serve como cdigo que executa as chamadas ao sistema, assim, editores,
compiladores, montadores, ligadores e interpretadores de comandos normalmente no fazem parte do
sistema operacional, mesmo que sejam importantes e teis.
Embora no seja parte de um sistema operacional, um interpretador de comandos utiliza
extensivamente os aspectos do sistema operacional, alm de poder ser a interface principal entre o usurio e
o sistema operacional (a outra possibilidade uma interface grfica de usurio) (TANENBAUM, 2003).
3 SISTEMAS EMBARCADOS
Houve muito interesse em tecnologia da informao na ltima dcada, mas pouca pesquisa tem sido
concentrada em reengenharia de produtos fsicos, responsvel por incorporar sensores simples em
microprocessadores embarcados complexos e sistemas de software (tecnologia embarcada da informao)
em produtos. Porm, com a competitividade em muitos setores, tem havido um crescente foco em tecnologia
embarcada da informao (KONANA, 2007).
Este captulo aborda diversos aspectos sobre os sistemas embarcados, suas caractersticas, seus
componentes, sua utilizao em projetos, assim como caractersticas de sistemas operacionais embarcados
usados atualmente no mercado.
3.1 Caractersticas
Um sistema embarcado um sistema computacional fisicamente limitado, geralmente com restries
de memria, tamanho, energia e, consecutivamente, potncia, que possui um nmero limitado, mas
especfico, de funes. Geralmente est associado ou mesmo embutido em outro produto, como um
eletrodomstico ou um veculo. Muitas vezes possuem caractersticas de sistemas de tempo real, como alta
velocidade de envio, tratamento e recebimento de dados (TANENBAUM, 2003).
Outras restries importantes so o custo e o baixo tempo de projeto. Porm, mesmo com todas
essas restries, o desempenho final no pode ser comprometido. Devido aos baixos custos tecnolgicos
atuais eles podem ser encontrados em produtos das atividades cotidianas, e a tendncia que cada vez
mais, eles entrem no cotidiano das pessoas.
O projeto desse tipo de sistema extremamente complexo por envolver conceitos pouco analisados
pela computao de propsitos gerais. Ao projetar um sistema ou programa embarcado, as principais
preocupaes so, devido aos limites fsicos, com portabilidade, baixo limite de potencia, baixa
disponibilidade de energia, baixa disponibilidade de memria, necessidade de segurana, confiabilidade, a
possibilidade de funcionamento em uma rede maior e o curto espao de tempo de projeto.
Um projeto de software embarcado pode ser muito caro caso ele tenha grande complexidade, pois
pode envolver equipes multidisciplinares (como hardware digital, hardware analgico, software e teste) e
utilizao de ferramentas computacionais de custo elevado. So ainda mais caros quando se tratam de
sistemas integrados em uma pastilha, o que obriga empresas a aceitarem projetos que tenham
garantidamente volume muito alto de produo. importante notar que grandes projetos necessitam de uma
modelagem melhor definida, com vrios nveis de abstrao e ferramentas de automao (CARRO, 2003).
Um exemplo de metodologia de um grande projeto de um sistema embarcado pode ser encontrado
na Figura 5:
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
85
86
Um atraso em um projeto de software embarcado pode causar perda considervel de lucros ou pode
at causar prejuzos (CARRO, 2003), como exemplificado na Figura 6.
Figura 6 Retorno Financeiro e Janelas de Tempo
O uso de tecnologia embarcada em produtos fsicos no nova. Como exemplo, na dcada de 80,
computadores de controle numricos obtiveram aumentos drsticos em produtividade e qualidade de
processos.
Produtos que usam tecnologia embarcada podem identificar e corrigir problemas antes que ocorra
uma falha, capturando e processando eventos (geralmente atravs de sensores). A tecnologia embarcada
torna fcil operar, diagnosticar, servir e personalizar produtos, alm de oferecer informaes crticas aos
fabricantes, o que os permitem oferecer novos servios, entrar em processo de inovao e construir relaes
diretas com os clientes. Assim, a tecnologia embarcada tem implicaes importantes para o escopo de
empresas, competio industrial e aplicaes em negcios.
Ela tambm permite a produtores e prestadores de servio mapear a sade de um produto atravs
de seu ciclo de vida, capturando o valor de servio durante seu ciclo de vida e integrando operaes fsicas
com processos de negcios. Esse mapeamento fornece informaes importantes (como problemas de
qualidade e estado de manuteno), o que permite melhorar futuros modelos, alm de permitir os produtores
a prover servios proativamente, fortalecendo a relao com os clientes.
Esse mapeamento pode ainda servir como guia para decises de estoque de produtos e partes,
especialmente quando h grande quantidade de modelos de um mesmo produto em uma mesma regio.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
Assim, empresas deveriam ter razes estratgicas para usar tecnologia embarcada, j que ela
permite oportunidades para inovao de produtos e processos. H trs tipos de iniciativas para incorporar
tecnologia embarcada em um produto:
Enriquecimento: produtos so redesenhados com tecnologia embarcada para melhorar qualidade,
convenincia e desempenho, mas a funcionalidade bsica do produto no alterada e funcionaria mesmo se
os sistemas embarcados fossem removidos. Desse modo, o objetivo primrio oferecer novas funes para
diferentes produtos. Exemplo: sapatos;
Digitalizao: partes fsicas e j existentes do produto so modificadas e ajustadas para prover
resultados digitais, mas h partes do produto que ainda so operadas manualmente. Esse tipo de
incorporao permite a empresa a oferecer outros produtos e servios. Exemplo: monitoramento cardaco;
Substituio: o produto totalmente redesenhado e substitudo por tecnologia digital. Exemplo:
mquinas fotogrficas.
Apesar de todas essas vantagens, produtos embarcados tambm trazem desafios, j que a
tecnologia embarcada difere dos modos tradicionais de produtos. Entre esses desafios, temos:
Projeto modular: produtos tradicionais ainda no seguem o projeto modular, optando pelos
modelos mais tradicionais. Para se aplicar tecnologia embarcada em um produto tradicional, o modo como o
produto projetado necessita ser atualizado;
Especificao: as interfaces com o produto fsico devem ser claramente especificadas;
Capacidades organizacionais: com a tecnologia embarcada e o projeto modular de produtos, a
frequncia de inovaes ir aumentar, o que por sua vez torna os produtos obsoletos mais rapidamente,
diminuindo sua vida til e seu ciclo de vida;
Conflitos com servios existentes: podero haver conflitos com servios criados quando o produto
no era embarcado, alm de conflito entre servios que a empresa necessitara oferecer que antes eram
oferecidos por outras empresas;
Treinamento e desenvolvimento da fora de trabalho: desenvolvedores de produtos necessitaro
ter conhecimentos de tecnologia da informao para reconhecer oportunidades, e os funcionrios que
prestam servios aos clientes tero que ter uma educao bsica sobre sistemas embarcados (KONANA,
2007).
3.2 Produtos que usam Tecnologia Embarcada
Empresas tm usado tecnologia embarcada em produtos tradicionais para adicionar novas
funcionalidades para melhorar a convenincia, desempenho e segurana dos produtos, incluindo veculos e
aparelhos eletrnicos em geral. Como exemplo de produtos, podemos citar avies, carros, geladeiras,
mquinas fotogrficas, televisores, telefones, celulares e computadores portteis entre diversos outros.
3.3 Componentes de um Sistema Embarcado
Projeto de sistemas eletrnicos embarcados enfrentam diversos desafios porque seu espao de
projeto arquitetural a ser explorado demasiado vasto. A arquitetura de hardware pode conter um ou mais
processadores ou microcontroladores (tipo de processador com recursos extras como memria e maior
suporte a perifricos), memria, interfaces para perifricos e blocos dedicados. Somente a estrutura de
comunicao pode variar de um barramento a uma rede complexa.
Alm disso, os processadores e microcontroladores disponveis possuem diversos modelos, os quais
devem ser considerados conforme sua aplicao, como RISC (Conjunto Reduzido de Construes de
Computao do ingls Reduced Instruction Set Computer), VLIW (Palavra de Instruo Bem Longa do ingls
Very Long Instruction Word), DSP (Processador de Sinal Digital do ingls Digital Signal Processor) e ASIP
(Processor de Conjunto de Instrues para Aplicaes Especficas do ingls Application-Specific InstructionSet Processor), entre outros.
Caso o sistema possua componentes programveis, o software de aplicao pode ser constitudo por
mltiplos processos, distribudos entre diferentes processadores e comunicando-se por meio de mecanismos
variados.
Um sistema operacional de tempo real tambm pode ser necessrio dependendo da aplicao ou do
projeto, pois oferece servios como comunicao e escalonamento de processos. Em muitas aplicaes,
mais adequada a integrao do sistema em SoC (Sistema em uma Pastilha do ingls System-on-a-chip), que
um projeto com custo geralmente mais elevado do que o normal (CARRO, 2003).
Nas situaes de criticidade de requisitos de rea, potncia e/ou desempenho, o projeto em uma
nica pastilha, na forma de ASIC (Circuito Integrado para Aplicao Especfica do ingls Application-Specific
Integrated System), pode ser mandatrio. Porm em situaes contrrias, mais indicada a implementao
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
87
de um sistema FPGA (Arranjo de Portas Programvel em Campo do ingls Field-Programmable Gate Array),
alternativa de customizao mais econmica para baixos custos, ou mesmo usar um sistema baseado em
famlias de microprocessadores.
Para acelerar o andamento dos projetos, as empresas tm adotado o paradigma de plataformas, que
uma arquitetura de hardware e de software especfica para um domnio de aplicaes, porm altamente
parametrizvel. Essa estratgia viabiliza a reutilizao de componentes previamente desenvolvidos e
testados, reduzindo o tempo de projeto. Esse reuso pode ser ainda mais reforado adotando-se padres para
a arquitetura e desenvolvimento (CARRO, 2003).
O projeto de um sistema embarcado consiste ento em encontrar um derivativo da plataforma que
atenda aos requisitos da aplicao. Partindo-se de uma especificao de alto nvel da aplicao, faz-se uma
explorao das solues arquiteturais possveis, estimando o impacto dos particionamentos de funes.
Aps isso, necessria a sntese da estrutura de comunicao, que integrar os componentes e o hardware.
Tambm vital implementar uma metodologia de testes para o sistema.
Nesse modelo de projeto, as inovaes dependem mais do software do que do hardware, j que o
ltimo est automatizado. Como a automao do projeto de hardware j foi alcanado pelas empresas, o
mercado no momento visa o mesmo para o projeto de software.
Aprofundando nos componentes de um sistema embarcado, o uso de memria deve ser calculado,
pois memrias rpidas ou grandes consomem mais energia, porm no permitem expanses, ento sua
capacidade de reuso e o tamanho tambm so importantes, especialmente se houver atualizaes
planejadas. H duas solues para o reuso: descarte dos dados usados, como em um computador comum, e
um buffer circular, que volta para o comeo da memria quando o final encher (s necessrio tomar
cuidado para a memria no preencher instrues ainda no resolvidas. Quando um buffer ultrapassa seu
limite e perde dados, chamamos este evento de buffer overflow).
Como as memrias so mais lentas do que os processadores, podemos ter problemas de
desempenho caso no sejam devidamente planejadas. Felizmente, o modelo de hierarquia utilizado em
sistemas mais comuns funciona bem para sistemas embarcados.
Para adquirir desempenho, o paralelismo e o pseudoparalelismo (uso de pipelines) podem ser
necessrios. No incomum encontrar em grandes projetos, processadores ou microcontroladores com
mltiplos ncleos ou mesmo mais de um processador, mas deve se tomar cuidado com a dependncia de
dados (instrues que dependem do resultado de outra), e a ordem correta de instrues.
O ltimo problema da arquitetura a comunicao entre componentes. Ligaes diretas (ponto-aponto) so as mais rpidas, porm devem ser refeitas para cada projeto, o que obviamente recai no tempo
de projeto. Barramentos so reusveis, mas permitem apenas uma transao por vez dentro de seu domnio,
o que causa uma enorme perda de desempenho quando o sistema grande. Uma hierarquia de barramentos
tambm uma opo, onde h vrios sub-barramentos espalhados, mas essa opo ainda pode paralisar
diversos recursos de comunicao. Assim, ainda no h um tipo de comunicao ideal.
Alguns trabalhos recentes propem o uso de uma rede em um chip (NoC), que um conjunto de
canais e roteadores dedicados comunicao. Como as conexes entre roteadores so ponto-a-ponto, a
rede pode transmitir mais mensagens ao mesmo tempo. Ela permite paralelismo e facilmente escalvel
(basta colocar mais roteadores). A eficincia de uma NoC porm depende de vrios fatores, como o tamanho
do canal de roteamento (quantidade de fios que fazem parte do mesmo), a poltica de prioridade de
mensagens, a topologia da prpria NoC e a estratgia de chaveamento. Alm disso, a distncia de certos
componentes do NoC pode ser crtica, como a memria e o processador. Por ltimo, importante enfatizar
que o custo de um roteador alto, e uma NoC possui vrios roteadores.
Na Figura 7, exemplificado trs modelos de NoCs (CARRO, 2003).
Figura 7 Modelos de NoCs
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
88
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
89
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
90
SO
VxWorks
QNX
WinCE
eCos
pSOSystem
RTAI
uClinux
L4
Minix
1
Parcial
Parcial
Parcial
Adequado
Adequado
Inadequado
Adequado
Parcial
Parcial
2
Parcial
Parcial
Parcial
Parcial
Parcial
Adequado
Inadequado
Parcial
Inadequado
3
Adequado
Adequado
Adequado
Adequado
Parcial
Parcial
Adequado
Parcial
Parcial
4
Adequado
Adequado
Parcial
Parcial
Parcial
Parcial
Parcial
Adequado
Adequado
5
Parcial
Parcial
Inadequado
Inadequado
Inadequado
Inadequado
Inadequado
Adequado
Adequado
6
Parcial
Parcial
Inadequado
Inadequado
Inadequado
Inadequado
Inadequado
Adequado
Adequado
7
Parcial
Parcial
Inadequado
Parcial
Parcial
Inadequado
Inadequado
Parcial
Parcial
8
Adequado
Adequado
Parcial
Parcial
Parcial
Parcial
Parcial
Adequado
Adequado
9
Parcial
Parcial
Parcial
Parcial
Inadequado
Inadequado
Inadequado
Adequado
Adequado
10
Adequado
Adequado
Parcial
Adequado
Parcial
Parcial
Parcial
Adequado
Adequado
11
Parcial
Parcial
Inadequado
Inadequado
Inadequado
Inadequado
Inadequado
Parcial
Parcial
4 FERRAMENTAS DE DESENVOLVIMENTO
H uma grande gama de ferramentas de desenvolvimento de sistemas embarcados, como
compiladores, simuladores de hardware, design de hardware e sistemas operacionais. Algumas dessas
ferramentas foram estudadas, as quais esto descritas nas sees a seguir:
4.1 Proteus
Um conjunto de ferramentas para design, simulao e esquematizao de sistemas embarcados,
assim como de componentes para sistemas embarcados, desenvolvida pela Labcenter Eletronics. Apesar de
ser um conjunto de ferramentas, o mdulo mais utilizado o ISIS, que permite o design e simulao de
sistemas embarcados, alm de permitir alterao de componentes caso esses no sirvam especificamente
para o sistema em mente.
4.1.1 ISIS
O ISIS permite, de forma simples, montar e simular os componentes de hardware de sistemas
embarcados e definir atributos para seus componentes. Um exemplo da tela de projeto do Isis pode ser
encontrada na Figura 8.
Figura 8 Tela de Projeto do ISIS
Os componentes necessitam ser adicionados ao projeto e podem ser ligados atravs de circuitos,
porm cada componente possui atributos especficos, e por isso no podem ser descritos de forma
generalizada.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
91
4.1.1.1 Energia
Alm de fornecer pilhas, baterias, motores e outras formas de energia, o ISIS fornece tambm fora e
aterramento eltricos padres, denominados apropriadamente de power e ground. Por serem
frequentemente usados e por no serem dispositivos propriamente ditos, estes se localizam separados dos
componentes do projeto, e sempre esto disponveis. H ainda inputs e outputs, que servem para
transferncia direta de sinal quando possuem o mesmo nome.
4.1.1.2 Resistores
Os resistores so extremamente importantes para qualquer projeto, pois impedem que dispositivos
fsicos sejam queimados ou danificados por uma corrente eltrica de tenso muito alta. Isso evidenciado no
ISIS, pois se uma tenso muito forte ou muito fraca passa por um componente, especialmente se o
componente em questo for um microcontrolador, esse componente no funcionar devidamente. possvel
configurar a resistncia de cada resistor.
4.1.1.3 Botes
Os botes servem de base para passar sinais atravs de um circuito apenas quando pressionados.
Podem ser usados junto a um microcontrolador que detecte alteraes em uma corrente para criar efeitos
mais duradores, como desligar certos aparelhos sem desligar o sistema inteiro, ou podem ser usados para
iniciar reaes que um usurio queira que acontea apenas quando os botes estejam pressionados.
4.1.1.4 Interruptores
Tambm conhecidos como switchs, os interruptores so parecidos com os botes, porm, por ser um
componente que muda de estado aps pressionado, o sinal torna-se contnuo, e o interruptor necessita ser
pressionado novamente para que volte ao estado anterior e interrompa o fornecimento do sinal.
Por fornecer sinal continuamente, geralmente usado diretamente com lmpadas, mas pode ser
usado tambm com microcontroladores que estejam configurados para detectar o estado de um sinal.
4.1.1.5 Portas Lgicas
Um componente emissor de sinal digital, que pode ser facilmente ligado e desligado como um
interruptor. Como o sinal j est em formato digital, isso facilita o uso de componentes que possuem pinos ou
ports que lem informaes digitais, como microcontroladores.
4.1.1.6 Lmpadas e LEDs
Lmpadas e LEDs (Diodo Emissor de Luz do ingls Light Emmiting Diode) so componentes que
emitem luz quando uma corrente eltrica suficientemente forte passa por eles. Geralmente usados para
iluminao ou sinalizao de algum evento.
4.1.1.7 Displays
Displays so monitores que mostram algo quando sinais passam por eles. Um display de segmentos
necessita apenas discernir tenso alta ou baixa para ligar seus segmentos, enquanto um display de LCD
(Display de Cristal Lquido do ingls Liquid Crystal Display) possui leitores lgicos para receber a mensagem
que deve ser mostrada.
4.1.1.8 Sensores de temperatura
Os sensores de temperatura so dispositivos que lem a temperatura de determinado objeto e
enviam um sinal analgico com as informaes para um circuito. Esse sinal analgico necessita ser
interpretado, funo a qual um microcontrolador bem til.
4.1.1.9 Microcontroladores
Microcontroladores so componentes complexos, com dezenas de pinos, cada pino com uma
configurao prpria dependendo do fabricante do microcontrolador. Eles possuem pinos e ports dos tipos
digitais e analgicas que podem ser usadas tanto para receber quanto para enviar sinais.
Um de seus parmetros, para efeito de simulao no ISIS, o caminho do arquivo hexadecimal do
programa que o microcontrolador dever executar. recomendvel que o programa possua loop infinito e
que o microcontrolador possua energia quase constantemente para que o programa no pare. Excees
podem ser necessrias dependendo da finalidade do sistema e tambm para poupar energia do sistema,
mas estes devem ser avaliados cuidadosamente.
A Figura 9 representa um projeto no ISIS com alguns dos componentes citados.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
92
93
4.2 MikroC
Desenvolvido pela MikroEletronika, o mikroC um compilador de linguagem C para
microcontroladores da famlia PIC (uma srie de microcontroladores projetados pela Microchip Technology).
O MikroC foi desenvolvido visando fornecer uma interface simplificada sem comprometer desempenho e
controle das aplicaes. Ele possui suporte a bibliotecas de C e tambm de compilao para arquivos HEX,
que podem ser usados pelos microcontroladores do Proteus.
Para que se possa compilar algo, necessrio criar um projeto e definir qual o microcontrolador
usado e definir sua freqncia e suas variveis de sinalizao (flags). J para que uma aplicao funcione
adequadamente, necessrio iniciar os ports do microcontrolador que sero usadas para entrada e sada de
dados (MIKROELETRONIKA, 2006). A Figura 10 exemplifica uma tela de projeto do MikroC.
Figura 10 Tela de Projeto do MikroC
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
4.3 FreeRTOS
O FreeRTOS um sistema operacional embarcado de cdigo aberto que ideal para tarefas de
tempo real exigentes que usam microcontroladores pequenos ou mdios (que possuem entre 16 KB e 256
KB de memria RAM). Ele escrito majoritariamente em C, e permite que aplicaes sejam organizadas em
colees independentes de threads e permite a categorizao de threads por prioridade, facilitando a
programao concorrente.
Ele d suporte a muitas famlias de microcontroladores e suportado por vrios compiladores. Isso
possvel porque uma de suas formas de uso atravs de cdigo source (no compilado) e pode ser
integrado facilmente na maioria dos compiladores usando seus arquivos como bibliotecas, atravs do
comando include. Isso permite uso de partes especficas do FreeRTOS, economizando poder de
processamento. Permite tambm modificao dos arquivos do FreeRTOS para atender as necessidades de
um sistema embarcado especfico
As funes do FreeRTOS podem ser classificadas por seu tipo de retorno, j que possuem um
prefixo de uma ou mais letras que especificam o tipo de retorno da funo, como o prefixo v, que significa
void e que significa que a funo no retorna nada para a funo que a invocou.
Para se aproveitar da maioria das caractersticas e at fazer uso de vrias funes do FreeRTOS,
necessrio o uso de tarefas, tambm conhecidas como tasks, uma das funes fundamentais para o
entendimento e uso do FreeRTOS (BARRY, 2010).
4.3.1 Tarefas
No FreeRTOS, as tarefas ou tasks so implementadas como funes e cada uma basicamente um
pequeno programa de loop (execuo) infinito e sem sada. Elas no devem no devem ter um retorno
(return) e no devem executar alm do fim da funo. Se uma task no for mais necessria, deve ser
prontamente excluda. Uma task, por outro lado, pode ser usada para criar um nmero indefinido de outras,
desde que tenham nomes diferentes
Cada task, seja ela criada diretamente ou seja ela criada por outra, possui sua prpria pilha e sua
prpria cpia de variveis definidas. Outra caracterstica das tasks que elas possuem dois estados:
executando (quando um dos ncleos est executando seu cdigo) e no executando (quando est pronta,
porm esperando, para ser executada). O modo de troca de tasks no ncleo feito de modo que as
informaes e variveis so salvas quando uma task interrompida e carregada quando chega sua vez de
execuo. No FreeRTOS, para que as tasks entrem no processo de execuo e espera no microcontrolador,
necessrio usar a entidade scheduler, uma entidade responsvel por gerenciar esse processo.
Tasks so criadas usando a funo de API FreeRTOSxTaskCreate(). Essa funo provavelmente
a mais complexa de todas as funes de API do FreeRTOS, mas tambm o componente fundamental de
todos para sistemas de multitarefas que usam o FreeRTOS, e por isso o primeiro a ser estudado no manual
de referncias. Seus parmetros so os seguintes:
1. Nome da funo de loop infinito que ser a task;
2. Nome descritivo da funo (para fins de depurao do cdigo);
3. Tamanho da pilha em palavras. O valor real da pilha calculado a partir desse valor e da largura
de pilhas (outro valor configurado separadamente que define o tamanho das palavras);
4. Parmetros que devem ser passados para a task quando ela for criada (usar NULL se nenhum
valor for necessrio);
5. Prioridade da task (quanto menor o valor, maior a prioridade);
6. Nome de um manuseador (para que a task possa ser alterada por outras tasks e vice-versa).
Se uma task for criada com sucesso, ela retornar uma mensagem durante a execuo do cdigo, e
outra mensagem caso contrrio (BARRY, 2010).
importante notar que as tasks funcionam como threads, pois apesar de trabalharem em conjunto
para um aplicativo e compartilhar informaes entre si, elas concorrem para usar os ncleos de um
microcontrolador, usando sua prioridade para obter vantagem nessa competio. Alm disso elas possuem
estados, algo comum entre processos e threads.
4.4 Open Watcom
O Open Watcom o sucessor de cdigo aberto dos conjuntos de compiladores e ferramentas de
desenvolvimento comercializados pela Sybase, Powersoft e WATCOM International Corp (OPEN WATCOM
COMMUNITY, 2010). Ele desenvolvido por uma comunidade, e est licenciado sob licena pblica pela
Sybase.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
94
uma ferramenta til para executar os exemplos do FreeRTOS que vm juntos ao manual de
referncia, til em especial para entender o funcionamento de tasks no FreeRTOS (BARRY, 2010).
Infelizmente, o Open Watcom no possui compatibilidade com o Proteus.
A Figura 11 demonstra uma tela de projeto do Open Watcom.
Figura 11 Tela de Projeto do Open Watcom
4.5 MPLAB
O MPLAB uma IDE (Ambiente Integrado de Desenvolvimento do ingls Integrated Development
Environment) para microcontroladores da Microchip Technology que facilita o desenvolvimento de projetos
com mltiplos arquivos, e possui compatibilidade com o uso do FreeRTOS. Por ser apenas um IDE, o
MPLAB precisa dos compiladores para funcionar (MICROCHIP TECHNOLOGY, 2005), como o MPLAB C18,
essencial para se trabalhar com microcontroladores PIC18. A Figura 12 demonstra a IDE do MPLAB.
Figura 12 IDE do MPLAB
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
95
5 EXPERIMENTOS
96
No decorrer do projeto, foram propostos alguns experimentos, cada um com uma finalidade
especfica. A descrio de cada um, assim como seus resultados, podem ser encontrados nas sees a
seguir. As partes em cinza nos quadros no fazem parte do programa propriamente dito, mas explicam os
cdigos acima delas com mais detalhes do que os comentrios dentro dos programas.
5.1 Desenvolvimento Gradual de um Sistema Embarcado
Durante o segundo experimento, foram usados o Proteus 7.4 SP3 (Build 6792) e MikroC 8.1.0.0. A
proposta deste experimento foi desenvolver um sistema embarcado para ler a temperatura informada por um
sensor e mostrar em displays de segmentos, evoluindo periodicamente esse sistema. As implementaes
incluram botes de ligar e desligar, um interruptor de emergncia e LEDs para indicar se a temperatura est
muito alta ou muito baixa. Para simplificao dos circuitos, foram usados inputs e outputs, que basicamente
transferem o sinal obtido entre si. Uma representao da verso mais recente do sistema pode ser
encontrada na Figura 13, enquanto a codificao do programa pode ser encontrada na subseo 5.2.1.
Figura 13 Sistema Embarcado Desenvolvido Gradualmente
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
Esse comando verifica se o segundo boto, conectado no stimo pino do port D, est ou foi pressionado, retornando um valor usado
para sinalizao. Na funo principal, o valor etornado verificado e usado para desligar os ports ligados do microcontrolador.
return (estadoanterior); // retorna o estado anterior se nenhum boto tiver sido
pressionado
}
Caso nenhum boto tenha sido pressionado, est funo deve retornar o valor de
sinalizao recebido, simulando o pressionamento de um dos botes, para que o programa
possa continuar executando.
float capturartemp(int pinoan) { // funo para capturar o valor de um pino analgico e
converte-lo para formato digital. Nesse caso ele est sendo usado para capturar um valor de um sensor de temperatura
Uma funo que deve receber um valor numrico do tipo inteiro e retornar um valor numrico do tipo real. Ela serve para capturar e
converter para o formato digital um valor que est sendo enviado para um pino analgico de um microcontrolador. Para tanto, essa
funo deve receber um valor que representa o pino que deve ser verificado. Essa funo foi construda com o objetivo de verificar os
dados emitidos por um sensor de temperatura .
return ((float)((5. * Adc_read(pinoan) * 100.) / 1024)); //frmula de converso de dados
analgicos
}
Esse comando usa uma frmula para converter um valor analgico (nesse caso recebido do sensor de temperatura) para o formato
digital e retorna o valor para a funo que pediu a verificao (nesse caso, a funo principal).
int disp7seg(int unidade) { // funo de ativao de pinos para displays de 7 segmentos
Uma funo que deve receber um valor numrico do tipo inteiro e retornar outro valor numrico do tipo inteiro. Ela tem como objetivo
verificar um algarismo e retornar a converso desse algarismo para um valor que o represente em um port conectado apropriadamente
a um display de sete segmentos do tipo ctodo.
switch(unidade) // verifica qual o digito obtido
{
Esse comando um comando condicional, ou seja, toma decises baseados em clculos, e comparaes de valores. O valor que esta
sendo verificado nesse caso o valor recebido como algarismo.
case 0: return(63); // cada valor representa um conjunto de pinos sequenciais que devem estar ativos para mostrar o nmero adequado
case 1: return(6);
case 2: return(91);
case 3: return(79);
case 4: return(102);
case 5: return(109);
case 6: return(125);
case 7: return(7);
case 8: return(127);
case 9: return(111);
Cada um desses comandos uma condio a qual o algarismo pode assumir. Para cada caso possvel, feita uma converso para um
formato legvel para um display de sete segmentos do tipo ctodo, e depois enviada como resposta chamada da funo.
default: return(0);
}
}
Caso o algarismo no seja legvel ou vlido, retornado um valor que no mostra nada em um display de sete segmentos do tipo
ctodo.
int tempalta(int tempalt, int valoralt) { // funo usada para comparar a temperatura atual e
a temperatura superior de alerta
Uma funo que recebe dois valores numricos do tipo inteiro e retorna outro valor numrico do tipo inteiro. Ela foi feita com o objetivo
de verificar se a temperatura ultrapassou um limite definido.
F (tempalt >= valoralt) return (1); // temperatura acima do limite
else return (0); // temperatura abaixo do limite
}
Esse comando condicional est verificando se a temperatura atual informada ultrapassou ou no o limite informado, retornando um
valor de sinalizao que deve ser interpretado pelo programa.
int tempbaixa(int tempabx, int valorabx) { // funo usada para comparar a temperatura atual e a temperatura inferior de alerta
Outra funo que recebe dois valores numricos do tipo inteiro e retorna um valor numrico do tipo inteiro. Similar a anterior, essa
funo foi feita com o objetivo de comparar se a temperatura ultrapassou um limite definido, porm essa funo verifica o limite de
temperatura mnima.
F (tempabx <= valorabx) return (1); // temperatura acima do limite inferior
else return (0); // temperatura abaixo do limite inferior
}
Esse comando condicional est verificando se a temperatura atual informada inferior ou no ao limite informado, retornando um valor
de sinalizao que deve ser interpretado pelo programa.
void desligar() { // funo para desligar/hibernar os ports
Essa uma funo apenas de ao, ela no recebe e nem retorna nenhum valor para a funo que a invocou. Ela foi feita para desligar
ou hibernar os ports do microcontrolador, mas no o microcontrolador em si.
PORTA = 0; // todas os ports usadas so hibernados, funcionando apenas os pinos de
entrada de dados
PORTB = 0;
PORTC = 0;
PORTD = 0;
PORTE = 0;
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
97
}
Esse conjunto de comandos faz com que os ports do microcontrolador emitam sinal de baixa freqncia, efetivamente hibernando-os e
impedindo os displays de sete segmentos do tipo ctodos conectados de emitir qualquer informao. Porm, devido a natureza das
configuraes dos pinos que recebem dados, esses no so hibernados e continuam funcionando normalmente.
void main() { // funo principal
A funo principal e essencial do programa. Devido s mudanas no estilo de programao desde o ltimo experimento, nesse
programa ela majoritariamente invoca as outras funes.
int inttemp10, centena, ligado = 0; // declarao de variveis
Declaraes de variveis para manipulao das funes. A primeira varivel usada para guardar o valor da temperatura multiplicado
por 10 para fins de clculos e comparaes, a segunda varivel usada para calcular e manipular a centena dos valores de
temperatura recebidos, j que esse necessitou um tratamento especial devido ao limite de pinos do microcontrolador, e a terceira
varivel usada para verificar e dizer se os ports esto hibernando ou no (o programa comea com os ports hibernando).
TRISA = 0, PORTA = 0; //inicia e configura os ports do microcontrolador
TRISB = 0; PORTB = 0;
TRISC = 0; PORTC = 0;
TRISD = 0; PORTD = 0;
TRISE = 0; PORTE = 0;
Esse conjunto de variveis serve para configurar os ports do microcontrolador, definindo o estado inicial e as permisses de
recebimento e envio de dados para cada port. Nesse caso, os ports A, B, C, D e E so configurados para envio de dados, mas
isto no impede que eles tambm recebam dados.
while(1) { // lao infinito
O comando while um comando de retorno condicional, ou seja, o programa ou funo retorna quando determinada condio
atingida, e prossegue com o programa ou funo caso no seja atingida. Nessa situao, a condicional 1, o que significa
verdadeiro e deixa o programa com uma condicional sempre verdadeira, criando o loop infinito recomendado para programas
embarcados.
ligado = ligdeslig(ligado); // verificar botes de ligar e desligar
if (ligado) { // o dispositivo est ligado
atribudo a uma varivel o retorno da funo que verifica se algum boto (de ligar ou hibernar o microcontrolador) foi pressionado, e
logo aps verificado, atravs do valor obtido, se o microcontrolador deve ser religado ou hibernado.
inttemp10 = (int)(capturartemp(5)*10); // captura a temperatura e multiplica por 10
para efeito de comparao de dados
Caso o microcontrolador no esteja hibernando, atribudo a uma varivel e multiplicado por 10 (para fins de clculos posteriores) o
valor de temperatura que um dos pinos analgicos est recebendo.
F ((inttemp10 / 1000) < 1) centena = 3; // calcula centenas
else centena = 1;
Esse comando calcula o valor necessrio para demonstrar a centena no display de sete segmentos do tipo ctodo, j que, devido ao
limite de temperatura que o sensor de temperatura aquenta e a necessidade de compartilhar pinos no port A devido ao limite de pinos
no microcontrolador, foi necessrio um tratamento especial.
PORTA = centena + tempbaixa(inttemp10/10, 10)*4; // verifica se a temperatura est baixa. Como compartilha pinos com o display de
centenas e alterar apenas um pino envolve o port inteiro, ajustes foram necessrios
Devido ao LED que representa se a temperatura est muito baixa estar ligado ao port que requer tratamento especial, foi necessrio
um calculo para que no houvesse conflito. Esse cdigo no somente demonstra o valor certo da centena da temperatura, como
tambm liga o LED se a temperatura estiver abaixo de 10C.
PORTE.RE2 = tempalta(inttemp10/10, 60); // verifica se a temperatura est alta
Essa chamada de funo em um pino em um pino do port E deve ligar o LED de temperatura alta se a temperatura estiver acima de
60C
PORTB = disp7seg(inttemp10 % 1000 / 100); // calcula dezenas
Essa chamada de funo em um pino do port B deve converter o algarismo de dezena da temperatura e demonstrar no display de
sete segmentos apropriado.
PORTC = disp7seg(inttemp10 % 100 / 10) + 128; // calcula unidades
Essa chamada de funo em um pino do port C deve converter o algarismo de unidade da temperatura e demonstrar no display de
sete segmentos apropriado. adicionado o nmero 128 ao clculo, pois o display de sete segmentos usado nesse caso possui um
ponto, usado para nmeros fracionados e acionado pela adio de 128 no clculo quando ligado apropriadamente no port do
microcontrolador.
PORTD = disp7seg(inttemp10 % 10); // calcula decimais
Essa chamada de funo em um pino do port D deve converter o algarismo do decimal da temperatura e demonstrar no display de
sete segmentos apropriado
}
Essa chave indica o fim da condicional para caso o microcontrolador esteja ativo. importante notar que toda a coleta de dados,
clculos e comparaes relacionados ao sensor de temperatura so feitos apenas nesse caso.
else desligar(); // o dispositivo est desligado
Caso o microcontrolador deva estar hibernando, toda a coleta de dados, clculos e comparaes relacionados ao sensor de
temperatura so pulados, e chamado uma funo para hibernar e para ter certeza de que os ports do microcontrolador estejam
hibernando.
}
Essa chave marca o fim do comando while definido anteriormente, e a parte final do loop infinito. Esse programa deve voltar ao inicio do
comando while em condies normais, j que a condicional definida ser sempre verdadeira.
}
Essa chave marca o fim do programa. O programa no deve chegar at essa marca em condies normais.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
98
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
99
Esse comando imprime no display de LCD ativo, comeando da primeira posio, o texto contido na varivel recebida. O motivo para
no usar um comando para limpar o display de LCD previamente porque o simulador estava religando o cursor, porm no houve
problemas com a demonstrao dos resultados porque os textos possuem sempre o mesmo tamanho e sobrescrevem os anteriores.
Delay_ms(200);
}
Esse comando faz com que o processador espere 200 ciclos de processamento antes de continuar a execuo do programa.
void main() { // funo principal
A funo principal e essencial do programa.
char temp0[17], temp1[17]; // variveis para guardar e transferir texto para os displays
Declaraes de variveis para manipulao das funes. Ambas as variveis so usadas para guardar as temperaturas dos sensores
em formato de texto, para facilitar a impresso delas.
TRISA = 0, PORTA = 0; // configurao dos ports do microcontrolador
TRISB = 0; PORTB = 0;
TRISC = 0; PORTC = 0;
TRISD = 0; PORTD = 0;
TRISE = 0; PORTE = 0;
Esse conjunto de variveis serve para configurar os ports do microcontrolador, definindo o estado inicial e as permisses de
recebimento e envio de dados para cada port. Nesse caso,
os ports A, B, C, D e E so configurados para envio de dados, mas isto no impede que eles tambm recebam dados.
LCD_Init(&PORTB); // inicia o LCD do port B
Esse comando ativa o display de LCD ligado ao port B.
LCD_Cmd(LCD_CLEAR); // limpa o contedo do LCD
Esse comando limpa qualquer texto que possa estar contido no display de LCD ativo, que deve ser o display ligado ao port B. O uso
desse comando o motivo pelo qual os displays de LCD j esto sendo ativados.
LCD_Cmd(LCD_CURSOR_OFF); // esconde o cursos do LCD
Esse comando desliga e esconde o cursor do display de LCD ativo.
LCD_Init(&PORTD); // inicia o LCD do port D
Esse comando ativa o display de LCD ligado ao port D, desligando qualquer outro display de LCD ativo
LCD_Cmd(LCD_CLEAR); // limpa o contedo do LCD
Esse comando limpa qualquer texto que possa estar contido no display de LCD ativo, que deve ser o display ligado ao port D. O uso
desse comando o motivo pelo qual os displays de LCD j esto sendo ativados.
LCD_Cmd(LCD_CURSOR_OFF); // esconde o cursos do LCD
Esse comando desliga e esconde o cursor do display de LCD ativo.
while(1) { // funo de loop infinito
O comando while um comando de retorno condicional, ou seja, o programa ou funo retorna quando determinada condio
atingida, e prossegue com o programa ou funo caso no seja atingida. Nessa situao, a condicional 1, o que significa
verdadeiro e deixa o programa com uma condicional sempre verdadeira, criando o loop infinito recomendado para programas
embarcados.
IntToStr(calctemp(0), temp0); // transforma um valor numrico em um valor de texto.
IntToStr(calctemp(1), temp1);
Cada um desses comandos serve para converter um valor numrico do tipo inteiro contido em seu primeiro parmetro, em um valor de
texto, que transferido para o segundo parmetro (que por sua vez necessita ser uma varivel). importante notar que o primeiro
parmetro usado em ambos os comandos foi uma funo, o que significa que essa funo ser invocada e seu retorno, desde que seja
vlido, ser convertido.
LCD_Init(&PORTB); // reinicia o LCD do port B
Esse comando reinicia e ativa o display de LCD conectado ao port B, desligando o conectado ao port D.
printlcd(temp0); // imprime o contedo da varivel no LCD
Esse comando invoca a funo para escrever um texto no display de LCD ativo, enviando o valor guardado na primeira varivel de
texto.
LCD_Init(&PORTD); // reinicia o LCD do port D, desabilitando o do port B
Esse comando reinicia e ativa o display de LCD conectado ao port D, desligando o conectado ao port B.
printlcd(temp1); // imprime o contedo da varivel no LCD
Esse comando invoca a funo para escrever um texto no display de LCD ativo, enviando o valor guardado na primeira varivel de
texto.
}
Essa chave marca o fim do comando while definido anteriormente, e a parte final do loop infinito. Esse programa deve voltar ao inicio do
comando while em condies normais, j que a condicional definida ser sempre verdadeira.
}
Essa chave marca o fim do programa. O programa no deve chegar at essa marca em condies normais.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
100
8.1.0.0. O mikroC PRO for ARM 2.50 foi necessrio para compilar o projeto de Milinkovic, j que este foi
desenvolvido para uso no microcontrolador ARM STM32 M3.
Em nota especial, o Isis do Proteus 7.4 SP3 (Build 6792) no possui suporte para este
microcontrolador (porm algumas bibliotecas de terceiros podem ser utilizadas para adicionar suporte a
diversos microcontroladores, incluindo este). A Figura 15 apresenta o projeto implementado, independente de
compilador ou de microcontrolador (mas vale lembrar que podem haver restries dependendo da
configurao de cada pino para cada microcontrolador).
Figura 15 Projeto de LEDs Piscantes
O Quadro 3 demonstra o cdigo para este projeto em um microcontrolador da famlia PIC, sem a
utilizao de um sistema operacional embarcado.
Quadro 3 LEDs Piscantes sem Sistema Operacional Embarcado
void main() {
A funo principal e essencial do programa.
PORTA = 0; TRISA = 0;
PORTB = 0; TRISB = 0;
PORTC = 0; TRISC = 0;
PORTD = 0; TRISD = 0;
PORTE = 0; TRISE = 0;
Este conjunto de variveis serve para configurar os ports do microcontrolador, definindo o estado inicial e as permisses de
recebimento e envio de dados para cada port. Neste caso, os ports A, B, C, D e E so configurados para envio e
recebimento de dados. Tambm inicia todos os ports em 0, o que significa que todos os pinos estaro desligados e
consecutivamente os LEDs.
while(1) {
O comando while um comando de retorno condicional, ou seja, o programa ou funo retorna quando determinada condio
atingida, e prossegue com o programa ou funo caso no seja atingida. Nessa situao, a condicional 1, o que significa
verdadeiro e deixa o programa com uma condicional sempre verdadeira, criando o loop infinito recomendado para
programas embarcados.
PORTA = ~PORTA;
PORTB = ~PORTB;
PORTC = ~PORTC;
PORTD = ~PORTD;
PORTE = ~PORTE;
Estes comandos utilizam o ~ para realizar uma inverso binria, acendendo os pinos do port caso ele esteja desligado e
desligando caso ele esteja aceso. Isto permite acender e apagar os LEDs conectados aos pinos.
Delay_ms(100);
Este comando faz com que o ncleo de processamento espere 100 ciclos antes de continuar a executar o programa. Neste
caso, ele utilizado para que um usurio humano possa observar o resultado antes que seja alterado novamente.
}
Esta chave marca o fim do comando while definido anteriormente, e a parte final do loop infinito. Este programa deve voltar ao
inicio do comando while em condies normais, j que a condicional definida ser sempre verdadeira.
}
Esta chave marca o fim do programa. O programa no deve chegar at essa marca em condies normais.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
101
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
102
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
103
Os sistemas operacionais embarcados, apesar de teis, trazem ainda mais desafios para seu uso
correto, mas no deixam de ser essenciais em projetos muito complexos.
REFERNCIAS
BARRY, R. Using the FreeRTOS Real Time Kernel, A Practical Guide. Manual tcnico digital, Verso
1.3.2, Real Time Engineers Ltd., 2010. Disponvel em: http://www.freertos.org/Documentation/FreeRTOSdocumentation-andbook.html
CARRO, L.; WAGNER, F. R.; Sistemas computacionais embarcados. Jornadas de Atualizao em
Informtica da SBC, 2003.
FRIEDRICH, L. F.; A Survey of operating systems infrastructure for embedded systems. Relatrio
Tcnico, Faculdade de Cincias da Universidade de Lisboa, Lisboa, 2009.
KONANA, P.; RAY G.. Physical product reengineering with embedded information technology. Artigo Tcnico,
Revista Communications of the ACM, vol. 50, n 10. Outubro, 2007.
MICROCHIP TECHNOLOGY. MPLAB IDE users Guide. Manual tcnico digital, 2005 Disponvel em:
http://ww1.microchip.com/downloads/en/devicedoc/51519a.pdf
MILINKOVIC, S. Porting FreeRTOS to mikroC for STM32 M3. Disponvel em:
<http://www.libstock.com/projects/view/370/porting-freertos-to-mikroc-for-stm32-m3>. Acesso em: 15 nov.
2012.
MIKROELETRONIKA. MikroC: users manual. Manual Tcnico Digital, 2006. Disponvel em:
http://www.mikroe.com/pdf/mikroC/mikroC_manual.pdf
OPEN WATCOM COMMUNITY , SYBASE. Open Watcom 1.9 C/C++: getting started help, Seo
Introduction to Open Watcom C/C++, Manual de Software, 2010. Disponvel em: instalao do Open
Watcom 1.9
TANENBAUM, A. S. Sistemas operacionais modernos. 2.ed. So Paulo: Livro Tcnico, Prentice Hall, 2003.
Leituras Complementares
CARRO, L.; WAGNER, F. R. Metodologias e tcnicas de engenharia de software para sistemas
embarcados, Jornadas de Atualizao em Informtica da SBC, 2003.
LABCENTER ELETRNICS. Proteus Design Sute Product Guide. Guia Online. Disponvel em:
http://downloads.labcenter.co.uk/proteus7brochure.pdf
TAURION, C. Software embarcado: a nova onda da informtica. Rio de Janeiro: Livro Tcnico, Brasport:
2005.
ANTI ESSAYS Mobile Os History Essay. Disponvel em: <http://www.antiessays.com/freeessays/189371.html>. Acesso em: 26 out. 2012.
BRAIN, M. How microcontrollers work. Disponvel em:
<http://www.howstuffworks.com/microcontroller.htm>. Acesso em: 26 out. 2012.
BURNSIDE, K. The History of Embedded Systems. Disponvel em:
<http://www.ehow.com/info_12030725_history-embedded-systems.html>. Acesso em: 30 out. 2012.
LABSPACE Computers: bits & bytes. Seo 4.2. Disponvel em:
<http://labspace.open.ac.uk/mod/oucontent/view.php?id=426285§ion=1.4.2>. Acesso em: 25 out. 2012.
LAKATOS, E. M.; MARCONI, M. de A. Tcnicas de pesquisa. So Paulo: Atlas, 1996.
MIKROELETRONIKA Creating the first project in mikroC PRO for ARM. Disponvel em:
<http://www.mikroe.com/downloads/get/1767/ctfp_mikroc_pro_for_arm.pdf>. Acesso em: 15 nov. 2012.
NATURAL INSTITUTE OF STANDARDS TECHNOLOGY Pervasive Computing Program. Disponvel em: <
http://www.itl.nist.gov/pervasivecomputing.html>. Acesso em: 30 out. 2012.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014
104
105
TYSON, J. How Video Game Systems Work. Disponvel em: < http://electronics.howstuffworks.com/videogame3.htm>. Acesso em: 26 out. 2012.
WEBOPEDIA Mobile Operating System. Disponvel em:
<http://www.webopedia.com/TERM/M/mobile_operating_system.html>. Acesso em: 26 out. 2012.
R.Tec.FatecAM
Americana
v.1
n.1
p.78-105
set.2013 / mar.2014