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