Exemplo de Sistema Embarcado
com Conectividade Web
Andrey Brito
[email protected]
www.lsd.ufcg.edu.br/~andrey
Objetivo
• Apresentar um exemplo de sistema
embarcado completo
– Sensores, atuadores, processamento,
interface com usuário e conectividade de rede
• Ilustrar a arquitetura de um “computador
com interface de rede”
30 de maio de 2005
Arquitetura de Computadores
2
Introdução
• O que é um sistema embarcado?
– Um sistema encapsulado pelo dispositivo que
controla
– Podem ser isolados ou em rede
– Dificilmente possuem um SO
– Microcontroladores são bons candidatos
• São basicamente utilizados para controle
e monitoramento
30 de maio de 2005
Arquitetura de Computadores
3
Exemplo de sistema em rede
• O sistema embarcado controla/monitora o
dispositivo
– Pode ser distribuído
• O PC possui uma GUI (supervisório)
– Visualização e ajuste de ponto de operação
30 de maio de 2005
Arquitetura de Computadores
4
Exemplo de supervisório
30 de maio de 2005
Arquitetura de Computadores
5
Roteiro
• O Hardware
– MSP430 Internet Connectivity
• MSP430F149
• CS8900A
• O Software
– Organização do Software
– uIP
• A Aplicação
30 de maio de 2005
Arquitetura de Computadores
6
Nosso hardware
• Kit de desenvolvimento projetado pela Texas
– MSP430 Internet Connectivity – www.ti.com
– Vendido por vários montadores (por exemplo,
www.olimex.com)
30 de maio de 2005
Arquitetura de Computadores
7
Arquitetura do hardware
LCD
Controlador Ethernet
Microcontrolador
Sensores
Relés
30 de maio de 2005
Arquitetura de Computadores
8
Arquitetura do hardware
30 de maio de 2005
Arquitetura de Computadores
9
O microcontrolador MSP430F149
• Custo: US$ 0,50 a 8
• Velocidade: 0 a 8 MHz, mas instruções podem
consumir até 6 ciclos de clock
• Consumo: 2,5 µA em 4 KHz a 2,4 mA em 8 MHz
• Periféricos: 6 portas E/S, ADC, Timers, UART,
Multiplicadores
30 de maio de 2005
Arquitetura de Computadores
10
O microcontrolador MSP430F149
• Memória: 60 KB Flash, 2 KB RAM
• CPU: RISC, 27 instruções (+ 24 emuladas), 16
registradores
30 de maio de 2005
Arquitetura de Computadores
11
O microcontrolador MSP430F149
30 de maio de 2005
Arquitetura de Computadores
12
O microcontrolador MSP430F149
30 de maio de 2005
Arquitetura de Computadores
13
O microcontrolador MSP430F149
MSP430F149
30 de maio de 2005
ADC
E/S Digital
FLASH
CPU
RAM
Timers
Arquitetura de Computadores
14
O Controlador Ethernet CS8900A
30 de maio de 2005
Arquitetura de Computadores
15
O Controlador Ethernet CS8900A
CS8900A
RAM
Control
En/Decoder
30 de maio de 2005
Arquitetura de Computadores
16
Funcionamento do Controlador
Ethernet
• Configuração
– Que interface usar (por exemplo, RJ45?)
– Que frames aceitar
– Que eventos causam interrupções
• Recebimentos, transmissões, colisões, etc.
– Como os frames recebidos são transferidos
para o hospedeiro
30 de maio de 2005
Arquitetura de Computadores
17
Recebendo um pacote
30 de maio de 2005
Arquitetura de Computadores
18
Transmitindo um pacote
30 de maio de 2005
Arquitetura de Computadores
19
Transmitindo um pacote
Preamble + Start_of_Frame + Data + PAD + CRC
30 de maio de 2005
Arquitetura de Computadores
20
Roteiro
• O Hardware
– MSP430 Internet Connectivity
– MSP430F149
• Aquisição de dados e ativação/desativação de saídas
– CS8900A
• Configuração, recepção e transmissão de pacotes
• O Software
– Organização do Software
– uIP
• A Aplicação
30 de maio de 2005
Arquitetura de Computadores
21
“The uIP Embedded TCP/IP Stack”
• Pilha de protocolos open-source para
pequenos processadores
– http://www.sics.se/~adam/uip
• Cabe em 6 KB de ROM e 1,5 KB de RAM
• Já foi portado para MSP430, 8051, AVR,
etc.
30 de maio de 2005
Arquitetura de Computadores
22
“The uIP Embedded TCP/IP Stack”
• Suporta IP, TCP, UDP, ICMP, ARP
– Faz toda a parte de abertura e gerenciamento de conexões, falta
só gerar os dados
– Possui um arcabouço de uma linguagem de script para páginas
HTML dinâmicas
• Desvantagem: armazenamento das páginas
static const char data_index_html[] = {
/* /index.html */
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74,
0x6d, 0x6c, 0, 0x48, 0x54, 0x54, 0x50, 0x2f, ... };
30 de maio de 2005
Arquitetura de Computadores
23
Ambiente de desenvolvimento
• Rowley Associates CrossWorks Studio
– ARM, AVR e MSP430
– Oferece uma versão do uIP com driver do
controlador CS8900A para o MSP430 Internet
Connectivity
– Muitos recursos
– Demo de 30 dias
– Caro! (£495)
30 de maio de 2005
Arquitetura de Computadores
24
Ambiente de desenvolvimento
30 de maio de 2005
Arquitetura de Computadores
25
Funcionamento do software (local)
void main(void) {
// Iniciação
// periféricos
// CS8900A
// httpd e aplicação
while(1) {
// Processa entradas/saídas da aplicação local
// Trata botões, faz aquisição de dados
// Processa pacotes e eventos de rede
}
}
30 de maio de 2005
Arquitetura de Computadores
26
Funcionamento do Software (rede)
Pacote Recebido
ARP
IP
uip_arp_arpin()
uip_process()
httpd_appcall()
Endereço começa
com /cmd/
handleCommand()
30 de maio de 2005
Endereço começa
com /cgi/
Envia /arq.html
Arquitetura de Computadores
Envia o arquivo
solicitado
interpretaScript()
27
Funcionamento do Software (rede)
• handleCommand()
– pressYellowButton();
– pressBlackButton();
– pressWhiteButton();
– pressGreenButton();
30 de maio de 2005
Arquitetura de Computadores
28
Funcionamento do Software (rede)
• interpretaScript()
– Exemplo “/cgi/arq”
i /arq_header.html
c d
i /arq_footer.html
.
30 de maio de 2005
Arquitetura de Computadores
29
Roteiro
• O Hardware
– MSP430 Internet Connectivity
– MSP430F149
• Aquisição de dados e ativação/desativação de saídas
– CS8900A
• Configuração, recepção e transmissão de pacotes
• O Software
– Organização do Software
– uIP
• A Aplicação
30 de maio de 2005
Arquitetura de Computadores
30
A Aplicação
• Um sistema que gerencia uma caixa de
abastecimento de água
– Tanque
– Bomba
– Válvula
– Alarme
• O sistema é automático
– Exceto, talvez, pela válvula
30 de maio de 2005
Arquitetura de Computadores
31
A Aplicação
• No entanto, pode ser necessário atuar no
sistema remotamente
– Verificar se o alarme está ativado
– Verificar se o tanque está enchendo
• Será que o reservatório secou?
– Ligar/desligar a válvula que libera o
fornecimento
• Durante períodos de racionamento
30 de maio de 2005
Arquitetura de Computadores
32
A Aplicação
Flash
Dinâmico
Flash
30 de maio de 2005
Arquitetura de Computadores
33
Funcionamento do Software (rede)
• interpretaScript()
– Exemplo “/cgi/arq”
i /arq_header.html
c d
i /arq_footer.html
.
– “c d”
• constrói a tabela
– bombaState, alarmState, energySaveState, valvulaState
e getLevel
30 de maio de 2005
Arquitetura de Computadores
34
Executando a aplicação (visão de
Hardware)
CS8900A
Sensor
ADC
FLASH
RAM
Botão
Botões
E/S Digital
CPU
Control
RAM
Timers
En/Decoder
Relés
Relés
Ethernet/Internet
MSP430F149
Página Web
30 de maio de 2005
Arquitetura de Computadores
35
Executando a aplicação (visão de
Hardware)
CS8900A
Sensor
ADC
FLASH
RAM
Botão
Botões
E/S Digital
CPU
Control
RAM
Timers
En/Decoder
Relés
Relés
Ethernet/Internet
MSP430F149
Página Web
30 de maio de 2005
Arquitetura de Computadores
36
Executando a aplicação (visão de
Hardware)
CS8900A
Sensor
ADC
FLASH
RAM
Botão
Botões
E/S Digital
CPU
Control
RAM
Timers
En/Decoder
Relés
Relés
Ethernet/Internet
MSP430F149
Página Web
30 de maio de 2005
Arquitetura de Computadores
37
Considerações finais
• Usar um kit de desenvolvimento e o uIP
reduz o trabalho de fazer um sistema “útil”
de meses para dias.
– Mas o resultado não é muito flexível, você
deve montar o seu framework em cima disso
• Sistemas embarcados ilustram muitos
aspectos importantes de um computador
comum
30 de maio de 2005
Arquitetura de Computadores
38