Utilizando um microcontrolador MSP430 (Texas Instruments) descrevemos o modo de se implementar conectividade a Internet com diagrama detalhado, código fonte em linguagem C e que pode ser emulado, rodado e gravado usado a ferramenta Flash Emulation Tool (FET), mas o ambiente de desenvolvimento Kickstart da IAR Systems que analisamos em edições anteriores desta revista. As exigências para a elaboração do projeto são a posse do kit de desenvolvimento e os componentes necessários à montagem da própria placa. (2002)
Quem assistiu os desenhos da família futurista dos Jetsons na época em que eles foram lançados pode até ter debochado do excesso de imaginação do autor das estórias, criando muitas coisas que, certamente aos olhos de quem conhecia a tecnologia da época, pareciam impossíveis senão extremamente longe do alcance dos humanos .
No entanto, com a presença cada vez mais frequente da Internet em nossas vidas, o avanço da tecnologia em todos os campos, vemos que muitas das coisas apresentadas naqueles desenhos (e que são repetidos até hoje) não estão muito longe e muitas tornam-se realidade a cada momento.
Assim, a possibilidade de monitorarmos tudo o que acontece numa propriedade distante (casa de campo ou sítio) usando a Internet, ou ainda trocarmos informações em nossa casa a partir do escritório usando a grande rede, torna-se cada vez mais simples, conforme ficará claro quando descrevermos este aplicativo que utiliza um microcontrolador que reune tanto as vantagens do processamento digital como dos DSPs em único componente.
O Projeto
Descrevemos neste artigo um projeto que implementa uma pilha TCP/IP, assim como uma interface ethernet para o microcontrolador MSP430 da Texas Instruments.
O diagrama e a descrição do projeto serão dados neste artigo, enquanto que o código fonte estará disponível no site da Texas Instruments
Dentre as aplicações possíveis para o projeto, podemos dar algumas bastante interessante tais como:
• Automação residencial
• Medidores de uso geral
• Sistemas de segurança
• Leitores de cartões inteligentes
• Controles prediais
• Eletrodomésticos inteligentes com conexão à Internet
A grande vantagem de se usar um servidor http num ambiente embutido está na possibilidade do navegador poder controlar toda a interface de usuário.
Conceitos Básicos Sobre os Protocolos
É comum descrever as pilhas de protocolo num modelo por camadas. Cada uma dessas camadas fornece suas próprias funções para os protocolos de níveis superiores e conta com a ajuda dos protocolos de níveis mais baixos para fornecer seus serviços. Isso simplifica tanto o projeto do software como também a manutenção.
Por exemplo, uma nova camada de transporte usando um meio de comunicação diferente pode ser criado, e para isso não é necessário mudar os códigos das camadas superiores.
O modelo de referência comumente usado para descrever a arquitetura de Internet é um subconjunto do modelo de sete camadas ISSO/OSI. A figura 1 mostra o relacionamento entre estes modelos e a tabela 1 mostra as funções das diversas camadas no modelo de referência para Internet.
Tabela 1
Nome da Camada | Função | |
Camada de Aplicação | Contum diversos protocolos definidos por diferentes aplicações para fornecer seus serviços | |
Camada de Transporte | Torna as comunicações entre pontos separados possível | |
Camada de Internet | Envia e roteia os conjuntos de dados entre os nodos de Internet | |
Camada de Rede | Implementação específica de hospedeiro para transmissão de conjunto de dados |
Começando com a aplicação onde os dados são enviados, cada camada adiciona sua própria presença à informação. Este procedimento é denominado "encapsulamento de dados", e é mostrado na figura 2.
Ao receber um quadro, por exemplo da Ethernet, a pilha TCP/IP tem de avaliar e remover passo a passo os blocos das diferentes camadas para extrair a informação desejada. No final do artigo teremos algumas referências sobre literatura mais profunda sobre o assunto.
Ethernet
Ethernet é hoje o meio mais usado para se transferir dados em redes locais (LAN). Ela pertence a camada de rede no modelo de referência de Internet. O padrão IEEE 802.3 define as velocidades possíveis de transmissão de bits, a realização física da codificação de bits e o formato dos datagramas (*) usados.
A Ethernet compartilha o barramento e cada nodo da rede tem os mesmos direitos de acesso a mídia pelo método do sensoriamento de portadora de acesso múltiplo com detecção de colisão (CSMA/CD). Se uma colosão é detectada, os nodos que enviam a informação param de transmitir e usam um algorítmo apropriado para a retransmissão. O fluxo de dados é codificado pelo sistema Manchester e transferido usando diferentes linhas de dois fios (par trançado, RJ45) ou cabos coaxiais (RG-58, BNC).
Cada nodo da rede tem seu próprio endereço físico. Este endereço usa 48 bits e é chamado de endereço "media access control" (MAC) . O comprimento máximo para um datagrama na Ethernet é de 1518 bytes.
Este tamanho cobre todo o datagrama, excluindo o preambulo. O preambulo ou cabeçário consiste em zeros e uns alternados usados para efeito de sincronização.
Após a transmissão dos 1500 bytes do datagrama que se seguem, são gerados automaticamente 4 bits para verificação cíclica de redundância (CRC). O CRC e usado para assegurar a integridade dos dados.
(*) O termo usado no original é "datagram" - usamos um termo novo que é uma meia "tradução", pois acreditamos que em breve este neologismo técnico também será comum na nossa literatura especializada. Uma definição técnica do que é um datagrama pode ser expressa como uma "entidade independente autocontida, de dados, carregando informação suficiente para ser roteada de um computador de origem a um computador de destino sem a necessidade de qualquer troca adicional de dados entre a origem, destino e rede de transporte"
Protocolo de Resolução de Endereço
O protocolo de resolução de endereço (ARP) é normalmente usado nas redes ethernet. Sua principal finalidade é determinar um endereço físico na rede (por exemplo, endereço ethernet/MAC) de um endereço IP para enviar pacotes de protocolos de alto nível. A estação da rede que deseja trocar dados com outra envia um datagrama para a LAN que é recebido e processado por todos os outros terminais.
Se uma uma estação encontra que o endereço do protocolo alvo coincide com o seu, ela envia de volta o datagrama ao emitente. Agora o emitente sabe qual é o endereço MAC do seu parceiro e com isso continua a enviar as informações em datagramas Unicast.
Protocolo de Internet
O protocolo de internet ou "internet protocol" (IP) destina-se ao uso em redes baseadas em pacotes como a Internet. Ele fornece os mecanismos para transmitir páginas ou blocos de informações de uma fonte a um destino (endereçamento), e para a fragmentação se necessário, para a transmissão através de rede que exigem menores pacotes de informação. A placa de demonstração usa o protocolo mais comum em nossos dias, na versão 4 ou IPv4.
Os parceiros das comunicações são identificados por endereços de comprimento fixo (endereços IP). Mas, não há garantia alguma de uma transmissão de dados de ponta a ponta, controle de fluxo, sequencialmente e outros serviços comumente encontrados nos protocolos de hospedeiro para hospedeiro. Se tais serviços são exigidos, um protocolo de nível mais elevado deve ser usado (o mais comum na internet é o TCP).
Não há segurança de que os dados enviados estejam livres de erros, no entanto o bloco IP é protegido por uma checagem. Cada pacote IP tem um campo de protocolo indicando a que camada superior de protocolos os dados enviados pertencem.
Cada datagrama ou pacotes de dados na Internet são tratados como entidades totalmente independentes de outros blocos, e com isso o IP está livre de conexões.
Os datagramas nos pacotes de dados precisam ser auto-contidos, sem reliância em outras trocas porque não existe conexão ou duração fixa entre dois pontos de comunicações como ocorrem por exemplo, no caso de uma comunicação telefônica. Este tipo de protocolo é indicado como "sem conexão" ou ainda pelo termo inglês "connectionless"
Protocolo de Controle de Mensagem da Internet
O protocolo de controle de mensagem da Internet ou internet control message protocol (ICMP) proporciona um mecanismo para indicar problemas e gerar mensagens de diagnóstico. Isso ocorre, por exemplo, quando um bloco de dados não consegue alcançar seu destino, ou quando uma porta não tem uma capacidade de "buferização" para passar adiante o bloco ou quando um roteador recomenda uma rota mais curta.
As duas únicas mensagens que são de interesse nesta aplicação são a ECHO e ECHO-REPLY. Elas são usadas principalmente pela linha de comando do sistema operacional PING. Ela envia uma mensagem ECHO para o outro hospedeiro que então responde com uma mensagem ECHO-REPLY e então envia de volta os dados recebidos.
A ferramenta PING segue a informação neste percurso de ida e volta (RT) e com isso verifica o desempenho da rede.
Protocolo de Controle de Transmissão
O Protocolo de Controle de Transmissão ou "transmission control protocol" (TCP) é um protocolo da camada de controle da pilha da rede TCP/IP.
Na verdade, TCP/IP é um conjunto de protocolos que foram desenvolvidos para permitir que computadores compartilhassem fontes comuns de dados numa rede. Este conjunto de protocolos foi desenvolvido por pesquisadores em torno da ARPAnet.
Os protocolos TCP e IP fazem parte de um pacote de protocolos para Internet, e sendo os mais conhecidos é comum fazermos a referência como TCP/IP para nos referirmos à família inteira.
É um protocolo altamente confiável, orientado para conexão hospedeiro-hospedeiro para uso em uma rede de pacotes comutados. É a mais estabelecida camada de transporte comumente usada dos protocolos de Internet (exemplo http, SMTP, FTP, telnet). Para fornecer este serviço os seguintes mecanismos são implantados:
• Transferência básica de dados: O TCP divide um fluxo contínuo de bytes em segmentos e os envia como blocos IP.
• Confiabilidade: a recuperação de dados danificados, perdidos ou duplicados é conseguida, associando-se um número de sequência a cada byte e algumas marcas especiais. O TCP que envia também pede um reconhecimento do TCP que recebe. Se este reconhecimento não for recebido em um certo intervalo de tempo, os dados são enviados novamente.
• Controle de fluxo: cada vez que um TCP recebe um bloco de dados, ele informa ao outro TCP quantos bytes ele tem permissão para enviar antes de uma permissão adicional ser necessária.
• Multiplexação: o TCP introduz números de portas que permitem a multiplexação dos endereços IP. Qualquer combinação de um endereço IP com um número de porta é denominada soquete (socket). Uma única conexão TCP é determinada por um par de soquetes.
• Conexões: antes da transferência de dados ocorrer, uma conexão entre o hospedeiro e o cliente deve ser estabelecida. Isso é feito utilizando um "handshake" de três vias. Durante esta "chacoalhada" os números de sequência são sincronizados. Somente depois disso a transferência normal de dados pode começar.
Uma seção TCP ocorre em diferentes estados do momento em que é estabelecida até o encerramento. As mudanças de estados ocorrem como reação a diversos eventos. Estes eventos podem ser devidos à chamadas do usuário como ações controladas no tempo pelo recebimento de segmentos.
O Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)
O "hypertext transfer protocol" (http) é um protocolo no nível de aplicação. Trata-se de um protocolo genérico, sem estados, orientado a objeto que pode ser usado para diversas tarefas como para servidores de nome, sistemas de gerenciamento de objetos distribuídos, através da extensão dos seus modos de requisição (comandos). Ele usa uma relação cliente-servidor e é baseado uma camada de transporte orientada a fluxo, como a TCP.
Atualmente, o uso mais importante deste protocolo e na transferência de documentos HTML com conteúdos de multimídia entre servidores de Internet e clientes (WWW).
O Hardware
Na segunda parte deste artigo mostraremos como podemos implementar um servidor Web com o MSP430, usando os protocolos descritos de forma embutida para aplicá-los em projetos de características futurísticas, como abordamos na introdução.
Na figura 3 temos o diagrama de blocos da configuração descrita.
O consumo ultrabaixo do MSP430, somado aos seus recursos de facilidade de interfaceamento com o controlador de ethernet CS8900A facilitam enormemente a elaboração dos projetos, conforme ficará claro no próximo artigo.