INSTITUTO DE INFORMTICA
PROGRAMA DE PS-GRADUAO EM COMPUTAO
Agradecimentos
Agradeo a Companhia Estadual de Energia Eltrica, na pessoa do Eng. Roberto Silva
Dias, ento chefe da Diviso Tcnica da Distribuio, pela boa vontade demostrada,
bem como pelo auxlio prestado, quando da minha inteno de desenvolver o presente
trabalho. Agradeo tambm ao professor Dr. Luigi Carro da Universidade Federal do
Rio Grande do Sul, meu orientador, sem o qual certamente este trabalho no teria a
qualidade que apresenta. Por fim agradeo a valiosa contribuio prestada pelo MSc.
Jlio Carlos Balzano de Mattos, com seu trabalho e dicas importantes, durante a fase de
desenvolvimento prtico do presente trabalho.
Sumrio
Lista de Abreviaturas............................................................................................... 6
Lista de Figuras .......................................................................................................... 8
Lista de Tabelas ......................................................................................................... 9
Resumo ........................................................................................................................ 10
Abstract ....................................................................................................................... 11
1 Introduo .............................................................................................................. 12
1.1 O Estgio Atual da Pesquisa Mundial .................................................................. 14
1.2 O Ambiente de Aplicao ...................................................................................... 15
1.3 Enfoque do Trabalho ............................................................................................. 18
1.4 Organizao do Trabalho ...................................................................................... 20
5
2.4.2 A Implementao do Protocolo ............................................................................. 45
2.5 O Protocolo ARP (Address Resolution Protocol) ................................................ 46
2.5.1 A Resposta ARP .................................................................................................... 46
2.5.2 A gerncia do cache ARP...................................................................................... 48
2.6 O Protocolo IP (Internet Protocol) ....................................................................... 50
2.6.1 As Simplificaes Utilizadas................................................................................. 51
2.6.2 A Implementao do Protocolo IP ........................................................................ 52
2.6.3 O Protocolo ICMP (Internet Control Message Protocol) ...................................... 53
2.6.4 A Implementao do Protocolo ICMP .................................................................. 54
2.7 O Protocolo TCP (Transmission Control Protocol) ............................................ 55
2.7.1 Simplificaes Utilizadas no TCP......................................................................... 56
2.7.2 A Mquina de Estados TCP .................................................................................. 57
2.7.3 O Cdigo TCP ....................................................................................................... 58
4 Concluso ................................................................................................................ 70
4.1 Desenvolvimentos Futuros ..................................................................................... 71
Lista de Abreviaturas
API
ARP
ASIP
AT
advanced technology
BIOS
CEEE
CI
circuito integrado
CRC
CSMA/CD
DMA
DOS
DSP
E2PROM
E/S
entrada / sada
FIFO
FPGA
FTP
GE
General Electric
HTML
HTTP
Hz
Hertz
ICMP
IEC
IEEE
IP
internet protocol
IRQ
interrupt request
ISO
ISA
LAN
LSB
MAC
MSB
MTU
7
OSI
PC
personal computer
PING
POP
PPP
RAM
RARP
RISC
RFC
SASHIMI
SFD
SMTP
TCP
UART
UDP
VHDL
WAN
Lista de Figuras
FIGURA 1.1 Sistema de comunicao com TCP/IP................................................... 13
FIGURA 1.2 Protocolos do centro de operao. ......................................................... 17
FIGURA 1.3 Encapsulamento de protocolos assncronos........................................... 18
FIGURA 2.1 - Comparao entre os modelos OSI e TCP/IP. ....................................... 21
FIGURA 2.2 Arquitetura da interface de rede. ........................................................... 23
FIGURA 2.3 Dados adicionados e removidos do quadro. .......................................... 23
FIGURA 2.4 Memria local da interface de rede. ...................................................... 24
FIGURA 2.5 Portas de E/S da interface de rede. ........................................................ 25
FIGURA 2.6 - Formato da mensagem de eco (ICMP)................................................... 33
FIGURA 2.7 Fluxo da rotina de tratamento de interrupes. ..................................... 34
FIGURA 2.8 Fluxo da rotina BuscaPct(). ................................................................... 35
FIGURA 2.9 Fluxo da rotina ExistePct(). ................................................................... 36
FIGURA 2.10 Fluxo da rotina EnviaPct()................................................................... 37
FIGURA 2.11 Fluxo da rotina de clculo de soma de verificao.............................. 40
FIGURA 2.12 Fluxo da rotina de temporizao. ........................................................ 42
FIGURA 2.13 - Cabealho do quadro Ethernet ............................................................. 43
FIGURA 2.14 Fluxo do protocolo Ethernet ................................................................ 45
FIGURA 2.15 - Formato dos dados dos protocolos ARP. ............................................. 47
FIGURA 2.16 Fluxo da funo de resposta ARP........................................................ 48
FIGURA 2.17 Fluxo da funo de procura na tabela ARP. ........................................ 49
FIGURA 2.18 - Formato do datagrama IP ..................................................................... 50
FIGURA 2.19 O fluxograma da rotina IP ................................................................... 52
FIGURA 2.20 - Formato da mensagem ICMP............................................................... 53
FIGURA 2.21 Fluxograma da rotina ICMP ................................................................ 54
FIGURA 2.22 - Formato do cabealho do TCP ............................................................. 55
FIGURA 2.23 Mquina de estados simplificada......................................................... 57
FIGURA 2.24 Fluxo do protocolo TCP. ..................................................................... 59
FIGURA 3.1 Arquitetura do microcontrolador FemtoJava......................................... 63
FIGURA 3.2 Ambiente de teste. ................................................................................. 64
FIGURA 3.3 Troca de dados entre cliente e servidor. ................................................ 65
FIGURA 3.4 Fluxo de sntese do microcontrolador TCP/IP....................................... 68
Lista de Tabelas
TABELA 2.1 Registradores de configurao, pgina 0. ............................................. 25
TABELA 2.2 Registradores de configurao, pgina 1. ............................................. 26
TABELA 2.3 Registradores de configurao, pgina 2. ............................................. 26
TABELA 2.4 Configurao do registrador CR. .......................................................... 27
TABELA 2.5 Configurao do registrador ISR. ......................................................... 27
TABELA 2.6 Configurao do registrador IMR......................................................... 28
TABELA 2.7 Configurao do registrador DCR. ....................................................... 28
TABELA 2.8 Configurao do registrador TCR......................................................... 29
TABELA 2.9 Configurao do registrador TSR. ........................................................ 29
TABELA 2.10 Configurao do registrador TCR....................................................... 29
TABELA 2.11 Configurao do registrador TSR. ...................................................... 30
TABELA 2.12 - Significado dos indicadores no cabealho TCP .................................. 56
TABELA 3.1 Conjunto de instrues implementadas no SASHIMI.......................... 64
TABELA 3.2 Comparao de cdigos fonte............................................................... 66
TABELA 3.3 Comparao de cdigos executveis. ................................................... 67
TABELA 3.4 Resultados da sntese do hardware ....................................................... 68
10
Resumo
Baseado na tecnologia de interligao de redes, este trabalho apresenta uma proposta de
conexo de dois sistemas com processamento prprio com o intuito de troca de
informaes, utilizando a pilha de protocolos TCP/IP.
Este sistema ser empregado em ambientes de controle industrial, permitindo o envio de
informaes do servidor de dados para o cliente. Os dados so constitudos de leituras
feitas em equipamentos de campo, apresentando ao cliente remoto, medies dos mais
diversos tipos. Por outro lado, o cliente poder enviar comandos aos equipamentos de
campo visando o telecontrole.
Como ponto de partida para a elaborao do trabalho prtico, foi utilizado o ambiente
de controle do sistema de potncia da companhia energtica do estado do Rio Grande do
Sul (CEEE). Um microcomputador com um browser acessa, atravs de uma rede local,
os equipamentos controlados, que podero ser qualquer tipo de equipamento de campo
empregado em subestaes de energia eltrica, como disjuntores, transformadores ou
chaves.
Para permitir o acesso remoto de tais equipamentos, foi elaborado um servidor de dados
constitudo de um controlador de rede do tipo Ethernet e um microcontrolador de
aplicao especfica que se encarrega do processamento da pilha de protocolos. O
controlador Ethernet utilizado um circuito integrado dedicado comercial, que executa
o tratamento dos sinais de nvel fsico e de enlace de dados conforme o padro IEEE
802.2. O processador TCP/IP, enfoque principal deste trabalho, foi elaborado atravs da
linguagem de programao C, e a seguir traduzido para o Java, que o ponto de partida
para a ferramenta SASHIMI, de gerao da descrio em VHDL do microcontrolador
de aplicao especfica utilizado. O processador TCP/IP encarrega-se da aquisio de
dados do equipamento de campo, do processamento da pilha de protocolos TCP/IP, e do
gerenciamento do controlador Ethernet.
A partir desta descrio VHDL, foi sintetizado o hardware do microcontrolador em um
FPGA, que juntamente com o software aplicativo, tambm fornecido pela ferramenta
utilizada, desempenha o papel de processador TCP/IP para o sistema proposto.
Neste ambiente, ento, o cliente localizado no centro de operao, acessa atravs de um
browser o equipamento de campo, visando obter suas medies, bem como enviar
comandos, destacando o aspecto bidirecional para a troca de dados e a facilidade de
conexo de dois sistemas heterogneos.
Este sistema pretende apresentar baixo custo de aquisio e de instalao, facilidade de
interconexo local ou remota e transparncia ao usurio final.
11
Abstract
Based on networks interconnection technologies, this work presents a proposal of
connection between two processing systems, aiming at information exchange employing
the TCP/IP protocol stack.
This system will be applied in the industrial control environments, allowing the
information exchange between the data server and the client. The data is composed of
readings made from field equipment, presenting to the remote client several kinds of
measurements. On the other hand, the client can send commands to the field equipment
implementing remote control.
As a starting point to the elaboration of this work, the control environment of the Power
Company of Rio Grande do Sul (CEEE) was utilized. A microcomputer is provided
with browser access, through the local network, to the controlled equipment, which can
be any kind of field equipment applied in power stations, as circuit breakers,
transformers or switches.
In order to allow the remote access of this equipment, a data server build with an
Ethernet network controller and an application specific microcontroller was developed.
The microcontroller does all the processing of the protocol stack. The Ethernet
controller employed is a commercial dedicated integrated circuit, which executes the
signal treatment on the physical and data link levels as the IEEE 802.2 standard. The
TCP/IP processor was the main goal of this work, and was developed with the C
language, and next translated to Java, which is the starting point to the VHDL
generation tool SASHIMI, to describe the used application specific microcontroller. The
TCP/IP processor is responsible for all data acquisition of field equipment, as well as
the TCP/IP stack processing and Ethernet controller management.
From the VHDL output description provided by the SASHIMI tool, the hardware of the
dedicated microcontroller was synthesized in a FPGA, with its application software,
also supplied by the tool, which plays the role of TCP/IP processor to the proposed
system.
In this environment, the client is placed in the operation center, and has access to the
field equipment through the browser. This way, it can check the status and send
commands, showing the two way path and the easiness of connection between two
heterogeneous systems.
This system is intended to present low cost of acquisition and installation, easy
interconnection between local and remote equipment and transparency of use to the end
user.
12
1 Introduo
13
resolvidos no TCP/IP, no grande laboratrio de testes da Internet, tornando-o uma
soluo bastante atraente.
A proposta do trabalho aqui apresentado, viabilizar a conexo de dois sistemas
heterogneos utilizando a pilha de protocolos do TCP/IP, baseado na infra-estrutura j
padronizada e bastante difundida das redes locais e globais (LAN Local Area
Network, WAN Wide Area Network). Para atingir tal objetivo foi desenvolvido um
hardware especfico que se encarrega do estabelecimento da conexo via rede e da troca
de dados entre os sistemas cliente e servidor. O hardware um processador para
aplicao especfica que possui a qualidade de gerenciar um controlador de rede do
padro Ethernet e processar os pacotes que chegam da rede, gerando uma resposta
adequada, segundo a pilha de protocolos. Este processador foi implementado com a
utilizao de um FPGA (Field Programmable Gate Array). Outra caracterstica
importante deste processador a sua integrao, uma vez que todo o gerenciamento do
protocolo ser diretamente inserido no hardware, liberando recursos de memria e
processamento. A figura 1.1 a seguir ilustra de forma simplificada o sistema proposto.
Fonte de
Dados
Processador
TCP/IP
Controlador
Ethernet
Rede LAN,
WAN
Cliente
14
enviados ao equipamento de campo, estes sero formatados de maneira adequada e em
seguida remetidos. Esta formatao, simplificadamente, poder ser a serial assncrona, a
qual amplamente utilizada em sistemas mais simples.
De forma semelhante, os dados que devam ser enviados do campo para o cliente
percorrem o sistema no sentido inverso. O processador TCP/IP se encarrega de todos os
processos que so necessrios antes e durante a conexo fim-a-fim entre cliente e
servidor de dados. Esta conexo estabelecida no nvel de transporte de dados com o
protocolo TCP, conforme ser visto mais adiante, e apresenta uma srie de processos de
troca de pacotes entre cliente e servidor, antes de se estabelecer a fase de troca de dados
propriamente dita.
A partir do ponto de estabelecimento da conexo os dados fluem em ambos sentidos,
facilitando o envio de dados do servidor para o cliente, bem como o envio de
requisies ou comandos do cliente para o servidor.
Com a inteno de alocar o sistema TCP/IP junto aos equipamentos de campo, e
portanto sujeito s intempries, foi proposto que o resultado final deve ser o mais
simples e robusto possvel. Com isto em mente, o hardware resultante deve ser pequeno,
leve e apresentar um pequeno consumo de energia, simplificando assim, sua aquisio,
instalao e manuteno.
Para atingir os objetivos propostos o trabalho aqui apresentado seguiu um fluxo de
tarefas, conforme a seguir:
1. Elaborao do software que implementa a pilha de protocolos TCP/IP.
2. Descrio do hardware de um microcontrolador ASIP com auxlio da ferramenta
SASHIMI.
3. Simulao do hardware com a ferramenta MAX + Plus II e levantamento de
alguns dados de desempenho.
15
Outro aspecto da pesquisa atual o desenvolvimento de CIs que integram, cada vez
mais, as funes sempre executadas por software. Um exemplo disto o CI
desenvolvido pela Osicom Technologies que integra em uma pastilha a interface
Ethernet juntamente com os protocolos TCP, UDP, RARP, ICMP, HTTP, POP, SMTP
e FTP chamado de system on silicon [VAR 98].
Algumas outras implementaes da pilha de protocolos TCP/IP notveis por sua
simplicidade e economia de recursos so as desenvolvidas com os microcontroladores
da Microchip [LOE 99], da Atmel [LIG 2000], e da Scenix [SCE 2000]. As trs
implementaes colocam a pilha de protocolos em software, o que os tornam um pouco
lentos e limitados, devido aos recursos escassos de memria e processamento, mas do
ponto de vista de custo de fabricao, consumo de potncia e de tamanho fsico, so
incomparveis.
O CI mais notvel sob o aspecto de conectividade com a grande rede , sem dvida, o
S7600A da Seiko Instruments Inc. [SEI 2001], o qual possui implementado em
hardware os protocolos TCP/UDP para o nvel de transporte, o protocolo IP para o nvel
de rede e para o nvel de enlace de dados utiliza o PPP. A parte fsica fica a cargo do
projetista atravs de uma UART (Universal Assynchronous Receiver Transmitter)
interna. Com grande parte da pilha TCP/IP implementada em hardware, a parte de
aplicao fica a cargo de um pequeno microcontrolador externo, que pode ser escolhido
dentre vrios modelos e marcas de possvel utilizao com a interface disponvel no CI
da Seiko.
O S7600A implementa a tecnologia conhecida por iReady, a qual apresenta ao usurio
uma extensa lista de funes (API Application Programming Interface) para a troca de
dados e gerenciamento do circuito como um todo, independente de sistema operacional,
sendo fornecida em linguagem C.
Outro circuito integrado interessante nesta rea o SC12 IPC@CHIP fabricado pela
empresa Beck [BEC 2001], este CI encapsula, em uma nica pastilha, um processador
80186, 512 kB de memria RAM (Random Access Memory), 512 kB de memria Flash
e um controlador Ethernet conforme o padro fsico 10Base T [SPU 2002]. Este sistema
executa uma verso simplificada do sistema operacional DOS (Disk Operating System),
e apresenta ao usurio uma ampla gama de rotinas de BIOS (Basic Input Output
System), que alm das rotinas de uso geral, apresentam funes de controle e
manipulao do ambiente de rede com o conjunto de protocolos TCP/IP.
16
Com o canal de transporte de dados entre sistemas heterogneos resolvido atravs da
aplicao do protocolo TCP/IP e seu nvel fsico, resta apenas a definio da camada de
aplicao, que embora bastante dependente da aplicao fim pode, de forma
simplificada, ser utilizado algum protocolo j em uso no Mundo Internet, como por
exemplo o HTTP (Hiper Text Transfer Protocol).
O ambiente de aplicao proposto por este trabalho foi o de um sistema de comunicao
de dados utilizado para o telecontrole e a telemedio de sistemas eltricos de potncia,
onde o nmero e a complexidade dos pontos de controle e medio possuem
caractersticas apropriadas s restries impostas pelo protocolo TCP/IP.
O sistema eltrico, de maneira geral, no possui caractersticas de tempo real, ou seja, o
tempo de resposta do ambiente como um todo no crtico, sendo observveis
intervalos de tempo entre comando e resposta na casa de segundos, tipicamente entre 3
a 10 segundos. Embora tais tempos no sejam desejveis, so tolerveis na aplicao em
que este trabalho se prope, vindo ao encontro com a caracterstica no determinstica
do protocolo TCP/IP.
Outro aspecto a crescente demanda e gerao de informaes por parte dos
equipamentos empregados no sistema de controle e proteo eltrico. Com o advento da
digitalizao dos rels de proteo, a quantidade de dados analgicos e digitais gerados
por tais dispositivos vem crescendo vertiginosamente ao longo do tempo. Como
exemplo, pode-se citar os rels de proteo eltrica fornecidos pela General Electric
(GE) onde se encontram a disposio do usurio dezenas de milhares de informaes
diferentes [GEN 2001]. Baseado na quantidade de dados disponvel, de se supor que a
largura de banda do canal de comunicao de dados utilizado por tais equipamentos
deva ser bastante larga. Neste particular, o protocolo TCP/IP fornece caractersticas de
velocidade de troca de dados baseado principalmente na camada fsica escolhida.
A confiabilidade dos dados transportados outro ponto que deve ser levado em conta,
porque a aplicao no tele controle de sistemas eltricos de potncia pressupe troca de
dados com alta qualidade, tendo em vista que o processo extremamente crtico sob o
ponto de vista de segurana pessoal. Neste particular, esto padronizados vrios
esquemas de controle e correo de erro pela pilha TCP/IP em diversas camadas,
redundando na troca de dados extremamente confivel.
No ambiente de aplicao de controle de sistemas de potncia existem atualmente vrios
protocolos de comunicao de dados em utilizao, com normatizao internacional.
Como exemplo, pode-se citar o protocolo IEC 870-101, baseado na norma de mesmo
nome [INT 95], e o protocolo DNP 3.0, tambm baseado nesta norma internacional,
embora incompatveis entre si. Protocolos industriais esto surgindo neste ambiente,
como o Modbus [MOD 96] lanado originalmente pela empresa Modicon, e o Profibus
[PRO 99], alm de vrios outros protocolos proprietrios de menor expresso.
17
18
Protocolo Assncrono
Protocolo Assncrono
TCP
TCP
IP
IP
Enlace de Dados
Fsico
Interconexo
Enlace de Dados
Fsico
19
encontra em um pas e o servidor em outro. Existe tambm a possibilidade de emprego,
conforme j abordado, em sistemas de controle industriais de grande porte, onde os
equipamentos envolvidos so mais robustos e confiveis.
O sistema que executar o papel de cliente na estrutura proposta, ou seja, o consumidor
de dados, por questo de facilidade, poder ser qualquer microcomputador que execute
um sistema operacional que suporte os padres fornecidos pela pilha de protocolos
TCP/IP. No nvel de aplicao ser utilizado um navegador, que utilize o protocolo
HTTP (Hiper Text Transfer Protocol) para apresentao dos dados.
No lado servidor, o sistema aqui elaborado fornecer os dados requeridos pelo cliente,
seguindo, de forma semelhante, os padres estabelecidos pelas diversas RFCs, com o
intuito de tornar o mais simples possvel a interconexo em rede dos lados cliente e
servidor. O desenvolvimento do equipamento servidor ser o objetivo do trabalho aqui
exposto, constituindo-se de alguns CIs (Circuitos Integrados) que, de forma compacta,
simples e econmica, atendero s requisies do cliente.
O desenvolvimento do processador TCP/IP foi feito utilizando-se uma ferramenta de
desenvolvimento de processadores de aplicao especfica, que toma por base o cdigo
desenvolvido em Java e produz o cdigo VHDL (VHSIC hardware description
language) correspondente ao hardware requerido. A ferramenta SASHIMI foi
desenvolvida em um trabalho de mestrado da Universidade Federal do Rio Grande do
Sul [ITO 2000], e fornece um processador especificamente voltado para uma aplicao
descrita em Java, com um conjunto de instrues bastante particular.
Uma simplificao importante utilizada neste ambiente, visando minimizar os recursos
empregados no processador TCP/IP, e em ltima anlise reduzir a rea de silcio
necessria durante a fase de integrao em hardware, implementado somente o lado
servidor no processador. Com este artifcio, grande parte do cdigo e dos recursos
necessrios deixaram de ser utilizados, reduzindo o tamanho do sistema como um todo.
Para tanto, parte-se do princpio que o servidor no ir solicitar uma conexo via rede,
mas aceitar conexes originadas remotamente. E, aps estabelecida a conexo, a troca
de dados poder se tornar bidirecional.
Para atingir tal objetivo, foram executadas as aes, conforme descrito a seguir.
20
gerar o cdigo VHDL de um processador para aplicao especfica, bem como o
cdigo pertinente.
Captulo 3: Trata da traduo do cdigo C para Java visando sua utilizao como
entrada na ferramenta SASHIMI, que gerar uma descrio em VHDL de um
processador de aplicao especfica, bem como o software compatvel.
21
2 O TCP/IP Implementado em C
TCP/IP
Aplicao
6. Apresentao
No esto presentes
no modelo.
5. Sesso
4. Transporte
3. Rede
Transporte
Interligao de redes
2. Enlace de dados
Rede / Hospedeiro
1. Fsica
No esto padronizadas
no modelo.
22
dados, ento o User Datagram Protocol (UDP) dever ser utilizado por ser mais
simples que o TCP. Deve-se observar que o ncleo do TCP/IP so exatamente os
protocolos constituintes das camadas de nvel trs e quatro mais alguns outros
protocolos auxiliares a estes dois nveis, alm de algumas aplicaes (nvel sete) de
implementao obrigatria segundo a padronizao [MUR 98].
O primeiro passo para a implementao do sistema a preparao e utilizao do
controlador Ethernet, que se encarregar de todo o protocolo de nvel de enlace de
dados e fsico. Este controlador segue um padro bastante difundido entre os ambientes
de comunicao de dados em rede conhecido por NE2000, simplificando bastante a
conexo dos protocolos de nvel de rede com o cabo de rede.
23
CI NE2000 Compatvel
RAM Local
64 kB
Rede
10Base-T,
10Base-2
Interface
de Rede
IEEE 802.3
Portas de I/O,
Registradores
Barramento
do Host
Processador
Interno
SFD
Destino
Origem
Tipo
Dados
CRC
62 bits
2 bits
6 bytes
6 bytes
2 bytes
46 - 1500
bytes
4 bytes
Recepo
Eliminado
Transmisso
Adicionado
Adicionado
24
facilidade e flexibilidade os processos envolvidos nos protocolos de rede e de driver de
dispositivo, neste caso especfico os padres IEEE 802.3 e NE 2000 respectivamente.
Esto disponveis ao usurio funes como reset, inicializao, envio de pacote pela
rede, configurao dos diversos formatos de dados e sinais, entre inmeras outras. O
processador responsvel tambm pela organizao dos dados recebidos e enviados
pela interface na memria local, baseado em alguns registradores de formatao
disponveis para este fim, proporcionando desta forma, a troca de dados de forma quase
transparente entre hospedeiro e rede.
0000h
D15
D8 D7
D0
PROM
001Fh
4000h
8k x 16bits
RAM Local
7FFFh
FFFFh
Na rea de endereos entre 0000h e 001Fh est localizada a E2PROM que mantm o
endereo MAC do dispositivo. interessante notar que este endereo est disponvel no
byte menos significativo (LSB) da palavra que forma o dado entre os endereos 0000h e
0005h (6 bytes). Tambm no byte LSB dos endereos entre 001Ch e 001Fh, estar
armazenado um cdigo numrico que indica o tamanho do barramento utilizado pela
interface para troca de dados com o hospedeiro. Este cdigo pode ser 42h, significando
25
largura de barramento de 8 bits, ou 57h, que significa barramento com 16 bits. Qualquer
outro cdigo no aceitvel pelo padro NE2000.
A rea de memria localizada entre os endereos 4000h e 7FFFh a que ser destinada
como buffer dos pacotes que chegam e saem da rede atravs da interface. O restante da
memria no utilizado conforme o padro estabelece.
D15
D8
Base + 00h
Base + 0Fh
Base + 17h
D7
D0
Registradores
de
configurao
Portas de
transferncia de
dados
Base + 1Fh
Portas de
reset
Leitura
CR Command
Escrita
CR - Command
01h
02h
03h
04h
05h
06h
FIFO
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
26
TABELA 2.2 Registradores de configurao, pgina 1.
Endereo
Leitura
Escrita
00h
CR Command
CR - Command
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
Leitura
CR Command
Escrita
CR - Command
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
27
Os registradores utilizados pela interface de rede tem funes distintas, como por
exemplo configurao, controle de DMA (direct memory access) interno, controle de
DMA externo, entre outras funes. Todos os registradores tem tamanho de 8 bits e so
acessados via endereos de E/S do hospedeiro.
2.1.4.1 CR Command Register
Utilizado para iniciar transmisses, habilitar o DMA remoto e na troca de pginas de
registradores. A tabela 2.4 demostra seu formato.
Smbolo
Valor
D0
STP
01
D1
STA
10
D2
TXP
Descrio
Comando de reset de software
Comando de inicializao de software
Comando de envio de pacote pela rede (resetado aps envio)
D3
RD0
001
D4
RD1
010
D5
RD2
011
1XX
D6
PS0
00
D7
PS1
01
10
Smbolo
Valor
D0
PRX
Descrio
D1
PTX
D2
RXE
Pacote recebido com erros (CRC, alinhamento, estouro no FIFO, pacote perdido)
D3
TXE
D4
OVW
D5
CNT
D6
RDC
D7
RST
Interface entrou em estado de reset por comando ou quando o anel de recepo estoura
28
todas as interrupes desabilitadas. Na tabela 2.6 podemos ver as configuraes deste
registrador.
Smbolo
Valor
D0
PRXE
Descrio
Habilita interrupo de pacote recebido sem erros
D1
PTXE
D2
RXEE
D3
TXEE
D4
OVWE
D5
CNTE
D6
RDCE
Smbolo
Valor
D0
WTS
0
1
D1
BOS
D2
LAS
D3
LS
D4
ARM
Descrio
Tamanho de palavra utilizado no DMA local e remoto igual a 8 bits
D5
FT0
00
D6
FT1
01
Nmero de bytes presentes no FIFO para buscar/enviar dados da mem. local (2 bytes)
Nmero de bytes presentes no FIFO para buscar/enviar dados da mem. local (4 bytes)
10
Nmero de bytes presentes no FIFO para buscar/enviar dados da mem. local (8 bytes)
11
Nmero de bytes presentes no FIFO para buscar/enviar dados da mem. local (12 bytes)
29
TABELA 2.8 Configurao do registrador TCR.
Bit
Smbolo
Valor
D0
CRC
Descrio
D1
LB0
00
Operao normal
D2
LB1
01
10
11
Loop externo
D3
ATD
D4
OFST
Smbolo
Valor
D0
PTX
Descrio
Pacote transmitido com sucesso
D1
D2
COL
D3
ABT
D4
CRS
D5
FU
D6
CDH
D7
OWC
Smbolo
Valor
D0
SEP
Descrio
D1
AR
D2
AB
D3
AM
D4
PRO
D5
MON
Recebe os pacotes destinados interface e com CRC correto, mas no os envia memria (CNTR2
incrementado)
30
2.1.4.8 RSR Receive Status Register
Registrador que mantm o status de uma recepo. limpo no incio de cada nova
recepo e ao seu trmino enviado juntamente com o pacote memria local. Na
tabela 2.11 podemos observar os possveis eventos de recepo.
Smbolo
Valor
D0
PRX
Descrio
D1
CRC
00
D2
FAE
01
11
D3
FO
D4
MPA
Pacote recebido, mas por algum motivo no pode ser enviado memria local (CNTR2
incrementado)
D5
PHY
D6
DIS
D7
DFR
31
forem iguais indicar que acontecer sobrescrita em dados ainda no requisitados pelo
hospedeiro. Neste caso a recepo suspensa e uma interrupo gerada, com o fim de
avisar o hospedeiro que os dados devem ser retirados do anel, utilizado-se para isto um
processo de reinicializao da interface definido pelo fabricante.
2.1.4.11
O DMA remoto utilizado com o fim de extrair dados da memria interna da interface
de rede, e envi-los memria do hospedeiro e vice-versa. Os registradores de controle
desta transferncia so RSAR0 e RSAR1 que apontam para a rea da memria local
onde deve se iniciar a transferncia e, RBCR0 e RBCR1 que contm o tamanho da rea
de dados a ser transmitida.
Aps preencher convenientemente o valor destes registradores, poder ser emitido um
comando de leitura remota, de escrita remota ou de envio de pacote, utilizando-se para
tanto os bits RD0, RD1 e RD2 do registrador de comando (CR).
Quando for emitido um comando de leitura remota cada posio de memria local ser
escrita na porta de E/S da interface aguardando ser lida pelo hospedeiro via um
comando de leitura de E/S do processador. A partir do ponto inicial indicado por RSAR,
a leitura continuar seqencialmente at atingir a quantidade mxima de dados indicada
por RBCR. O comando de escrita remota tem um procedimento semelhante, mas com a
direo do fluxo de dados inversa, ou seja, o hospedeiro escreve os dados a serem
enviados para a memria local na porta de E/S, e estes dados so encaminhados, via o
canal de DMA remoto, para a memria local.
O comando de envio de pacote possibilita a automao do processo de transferncia de
dados entre a memria local e o hospedeiro, movimentando adequadamente os ponteiros
RSAR, RBCR e BNRY com o fim de enviar o prximo pacote que se encontra na
memria local para o hospedeiro, liberando o programador da codificao de rotinas de
gerncia deste tipo de transferncia. Aps o ajuste deste bit do registrador de comando
(CR), o processador interno da interface de rede executa todos os procedimentos
necessrios visando a transferncia de um pacote completo da memria local para a
memria do hospedeiro. Fica a cargo do programador a codificao de uma rotina de
leitura da porta de E/S da interface, com o fim de colocar os dados disponibilizados, de
forma seqencial, na memria do hospedeiro.
32
utilizando o padro, evitando desta forma, o uso de drivers complexos ou outros
artifcios junto ao sistema operacional do microcomputador (DOS 6.22).
A linguagem C foi escolhida devido sua facilidade de acesso direto ao hardware,
utilizado no dispositivo de conexo de rede (Controlador Ethernet). Com o conjunto PC,
DOS e C, o ambiente de desenvolvimento tornou-se bastante flexvel e relativamente
fcil de programar. Esta facilidade de acesso ao hardware no estaria disponvel,
durante a fase de desenvolvimento, caso se optasse pelo uso da linguagem Java, o que
fatalmente levaria utilizao de drivers de dispositivo, transformando-se em um
empecilho a mais no cdigo resultante.
Como diretriz bsica do trabalho ficou estabelecido que o cdigo, bem como os recursos
de hardware utilizados, deveriam ser os mais simples possvel, evitando portanto,
sofisticaes desnecessrias ao correto funcionamento do protocolo. Esta simplificao
baseada no fato de que o cdigo resultante, devidamente traduzido para Java, servir
como fonte de entrada para a ferramenta SASHIMI, que por sua vez produzir o cdigo
necessrio para a sintetizao em hardware do processador de aplicao especfica
TCP/IP. Tendo em vista as limitaes que o hardware impe quanto rea de silcio
ocupada pelo cdigo produzido pela ferramenta utilizada, ficou estabelecido que quanto
menos recursos fossem utilizados na fase de desenvolvimento, mais simples e exeqvel
seria a integrao em hardware dos resultados finais. Para tanto, nesta primeira
implementao um pequeno subconjunto do universo de possibilidades dos protocolos
da pilha envolvidos no processo de PING foram utilizados.
A prpria linguagem de programao foi utilizada tendo em mente a simplicidade do
cdigo resultante, procurando-se, na medida do possvel, evitar o uso de construes
complexas. Funes de muitas bibliotecas disponveis no C foram evitadas, bem como a
utilizao de operadores mais sofisticados, como por exemplo, a multiplicao, a
diviso, entre outros.
33
Tamanho em bytes
Tipo
Cdigo
Soma de verificao
Identificador
Nmero de seqncia
Dados opcionais
O campo Tipo possui o valor 8 para a solicitao de eco, ou o valor 0 para a resposta. O
campo Cdigo sempre tem o valor 0, a Soma de verificao gerada na origem do
pacote e utilizada pelo destino para a verificao de erros de transmisso. Os campos
Identificador e Nmero de seqncia so utilizados pelo hospedeiro que solicita o eco
com o fim de combinar suas solicitaes com as respostas adequadas.
Alm do protocolo ICMP o PING verifica a funcionalidade do protocolo IP (Internet
Protocol) [POS 81], sobre o qual o ICMP transportado, e no caso do nvel fsico ser o
Ethernet, ento o protocolo ARP (Address Resolution Protocol) [PLU 82] dever estar
operacional tambm.
34
interrupes (ISR Interrupt Service Routine), que substituir a funcionalidade original
da rotina de tratamento de interrupes do sistema operacional, por uma nova
funcionalidade, de acordo com as necessidades do controlador de rede utilizado.
Esta ISR prev o tratamento de trs eventos bsicos, conforme demostra o fluxograma
apresentado na figura 2.7:
Incio ISR
Desabilita interrupes
Desabilita IRQ 5
ISR = PRX
?
ISR = OVW
?
N
Reseta OVW
BufTx0 =
TX ?
Reseta PTX
BufTx1 =
Aguarda?
S
Envia BufTx1
BuscaPct ( )
ISR = PTX
?
N
BufTx0 =
Aguarda?
ExistePct ( )
?
N
Desativa modo loop
S
Envia BufTx0
ISR = TXE
?
Habilita IRQ 5
S
Reseta TXE
BufTx0 =
Tx
BufTx0 = Vazio
N
BufTx0 = Vazio
Fim
35
Reseta PRX
ISR = RDC
?
S
Reseta RDC
Solicitao
ARP ?
ArpResp ( )
Solicitao
echo ICMP ?
IcmpResp ( )
Fim
36
ocupando espao de memria, e deixando de ser tratados pelo protocolo. A figura 2.9
ilustra seu processo interno.
ExistePct ( )
CURR =
BNRY ?
S
Retorna No
Retorna Sim
Fim
37
EnviaPct ( Tam )
BufTx0 =
Vazio ?
S
Envia Dado a Placa
(BufTx0)
ISR = RDC
?
S
ISR = RDC
?
S
Reseta RDC
Reseta RDC
BufTx0 = Aguarda
BufTx1 = Aguarda
Transmitindo
Pacote?
Envia Pacote
S
Fim
O primeiro passo verificar qual a rea de memria est vazia para o envio de um novo
pacote. Aps, a operao de E/S executada transferindo os dados da memria do
hospedeiro para a memria local do controlador. A seguir, se possvel, o controlador de
rede imediatamente ajustado para o envio do pacote pela rede. Caso o envio imediato
no seja vivel, porque o canal de transmisso de dados via rede est ocupado, ento a
rotina de tratamento de interrupes se responsabilizar pelo seu envio no devido
tempo.
2.2.5 O Protocolo
A implementao do software pingador bastante simplificada no que tange os recursos
dos protocolos aplicados, sendo desenvolvido apenas o necessrio para o correto
funcionamento com as caractersticas que o utilitrio PING deseja encontrar.
Sob este ponto de vista apenas trs funes se tornaram necessrias, a saber:
38
39
endereos de origem e destino so invertidos no pacote e as somas de verificao dos
cabealhos IP e ICMP so recalculadas. A seguir a funo de envio de pacotes
chamada, injetando a resposta elaborada localmente na rede, e o processo finaliza.
Funo de temporizao
40
A seguir as duas quantidades devem ser agrupadas novamente, voltando a possuir 16
bits de largura, e a quantidade final deve ser invertida bit a bit, resultando finalmente na
soma de verificao da rea de dados enviada para a funo de clculo.
A soma de verificao possui uma caracterstica interessante para o protocolo que a de
verificao de integridade dos dados recebidos da rede. Baseado nesta caracterstica, ao
ser executada tal verificao sobre os dados o resultado da operao dever ser zero,
desde que se inclua na rea de dados a soma de verificao que foi recebida juntamente
com o pacote de dados. A figura 2.11 ilustra o fluxo desta rotina.
CheckSum( )
Soma LSB
Soma MSB
Fim da rea
de Dados?
S
Fim
41
Com a utilizao deste artifcio fica simples o processo de, por exemplo, realizar a soma
de dois nmeros inteiros de 16 bits de largura, recebidos da rede pelo processador do
PC, e a seguir retornar o resultado de 16 bits novamente para a rede. importante notar
que esta preocupao no atinge valores codificados em 8 bits, onde neste caso a
aritmtica com dados vindos da rede direta.
42
ISRTimer( )
Desabilita interrupes
Incrementa CTempo
CTempo
= 18?
S
Zera CTempo
Incrementa Seg
Seg = 60
?
S
Zera Seg
Incrementa Min
Min = 60
?
S
Zera Min
Incrementa Hora
Fim
43
Os campos do cabealho TCP que utilizam inteiros de 32 bits so os dos nmeros de
seqncia e de reconhecimento, que para o caso aqui apresentado, nunca recebero ou
enviaro um segmento TCP com mais que 1460 bytes de dados. Isto ocorre devido
rea de dados mxima do quadro Ethernet ser de 1500 bytes, da subtraindo-se o
cabealho IP (20 bytes) e o cabealho TCP (20 bytes) obtm-se 1460 bytes. Adicione-se
a isto que os quadros de aplicao transmitidos neste trabalho so bastante sucintos, e
nunca atingiro os 1460 bytes disponveis .Por este motivo a funo de soma de 32 bits
que ser utilizada para gerar os nmeros de reconhecimento e de seqncia TCP, tem
como segundo operando um inteiro de 16 bits. Isto ocorre porque no so necessrios
mais que 11 bits para representar 1460, o maior nmero que poder ser acrescido a estes
campos.
Os protocolos utilizados na pilha TCP/IP, implementados neste trabalho, sero objeto de
anlise das sees seguintes, apresentando suas aproximaes e simplificaes visando
atingir o menor tamanho de cdigo possvel.
Prembulo
Delimitador de Incio de Quadro
Endereo de Destino
Endereo de Origem
Tipo de Dados
Dados ou Enchimento
CRC
44
Gerador / verificador de CRC: Mdulo que calcula o CRC de um pacote que deve
ser enviado pela rede, adicionando-o no local correto. No retorno de um pacote da
rede executa a verificao do CRC, descartando dados defeituosos.
45
local do controlador de um pacote que deve ser enviado pela rede, e a retirada de um
pacote que chega foram abordadas em detalhes anteriormente neste captulo.
Incio
MAC Dest
?
S
Prepara MAC destino
Prepara protocolo
< 46 bytes
?
Enchimento
N
Envia Pacote
Fim
46
47
Tamanho em bytes
Tipo de Hardware
Tipo de Protocolo
Tamanho do Endereo de Hardware
Tamanho do Endereo do Protocolo
Operao
Endereo de Hardware de Origem
Endereo IP de Origem
Endereo de Hardware de Destino
Endereo IP de Destino
48
posse dos endereos de origem a resposta ao solicitante pode ser elaborada, e a seguir
encaminhada funo EtherResp(), para encapsulamento no pacote Ethernet e
posterior envio para a rede.
Na figura 2.16, pode-se observar o fluxo de operaes envolvido na funo de gerao
de resposta ARP.
ArpResp( )
Copia endereo IP de
origem
Encontrou no
cache?
N
Adiciona a entrada no
cache
S
Ajusta TTL para 11 min
Prepara pacote de
resposta
Fim
49
deixe de ser utilizada. Aps estes tempos uma nova solicitao de resoluo de endereo
dever ser enviada rede, visando a atualizao da entrada no cache.
Como o sistema implementado no contempla o lado cliente, gerador de solicitaes de
resoluo de endereos, a estratgia utilizada foi colocar o tempo de vida de cada
entrada do cache local com um minuto a mais do que o maior tempo de TTL permitido
no protocolo ARP.
Segundo o protocolo, o tempo mximo permitido para a validade de uma entrada ARP
no cache de 10 minutos, desde que esta entrada esteja em uso regular pelos protocolos
superiores. Portanto cada entrada no hospedeiro local ter o seu TTL fixado em 11
minutos, forando assim com que os hospedeiros que se conectam ao hospedeiro local
sempre sejam obrigados a solicitar a resoluo de endereos, liberando o sistema local
desta tarefa. Com esta estratgia simples pode-se dispensar completamente o lado
cliente do protocolo, atingindo o objetivo de economia de recursos.
A funo que desempenha o papel de gerncia da tabela ARP local a ArpCache(),
que resume suas aes em duas:
1- Busca na tabela por uma entrada j resolvida, e vlida, de um determinado endereo
IP, para o qual se pretenda enviar um datagrama.
2- Retorno do ndice de entrada de uma entrada vazia, ou da entrada mais antiga (caso
a tabela j se encontre cheia), caso o endereo IP pretendido ainda no existir como
entrada vlida.
Esta funo bastante simples, visto que a funo de gerao de resposta ARP se
encarrega do acrscimo das novas entradas que eventualmente cheguem pela rede. A
figura 2.17 ilustra o fluxo da funo de gerncia do cache local.
ArpCache( )
Endereo IP
vlido?
S
Encontrou no
cache?
Retorna a entrada
encontrada
N
Retorna uma entrada
vazia ou a mais antiga
Fim
50
1~8
9 ~ 16
17 ~ 24
25 ~ 32
33 ~ 40
41 ~ 48
Verso
Tamanho do Cabealho
Tipo de Servio
Tamanho do Datagrama
Identificao
Flags
Deslocamento do Fragmento
TTL
Protocolo
Soma de Verificao do Cabealho
Endereo IP de Origem
Endereo IP de Destino
Opes e Enchimento
Dados
51
Tamanho do Datagrama especifica o tamanho total do datagrama em bytes,
Identificao identifica um datagrama univocamente e, no caso da necessidade de
fragmentao por motivo de uma rede com pequeno MTU (Maximum Transfer Unit),
cada fragmento pertencente a um determinado datagrama inicial contm a mesma
identificao. O campo Flags contm trs bits e controla a fragmentao, o primeiro bit
no utilizado, o segundo bit sinaliza se o datagrama pode ou no ser fragmentado, o
terceiro bit indica se o fragmento intermedirio ou se o ltimo fragmento de um
datagrama original. O campo Deslocamento do Fragmento de 13 bits identifica o
deslocamento dos dados originais que o fragmento atual carrega em mltiplos de oito
bytes, iniciando em zero at que o ltimo fragmento sinalize um deslocamento igual ao
tamanho do datagrama original. O campo Protocolo define qual o protocolo est
encapsulado nos dados do datagrama, Soma de Verificao um checksum da rea de
cabealho IP, TTL sinaliza o tempo mximo que o datagrama pode permanecer
transitando entre redes. Cada roteador o decrementa e, atingindo zero o datagrama
descartado. Os campos Endereo IP de Origem e Endereo IP de Destino especificam a
origem e o destino do datagrama e no so alterados, medida que o datagrama
roteado entre as redes.
O campo Opes e Enchimento no obrigatrio, mas existindo, possui comprimento
entre um byte at o tamanho mximo do cabealho limitado pelo campo Tamanho do
Cabealho e sempre deve ter comprimento mltiplo de 32 bits, da a necessidade do
enchimento. Este campo utilizado para testes e depurao da rede e, por fim seguem
os dados encapsulados.
52
1500 bytes. Contribuindo com isto a quantidade de dados enviados pelo nvel de
aplicao (HTTP) devero normalmente estar bem abaixo disto, ento a capacidade de
remontagem de datagramas IP foi completamente desconsiderada. Esta posio poder
ser reconsiderada no caso da utilizao do sistema proposto em conexes com a
Internet, onde redes com pequeno MTU podem ser factveis, conduzindo desta forma
fragmentao.
Montagem do cabealho
do datagrama
Encapsula no quadro
Ethernet
Fim
53
1~8
9 ~ 16
17 ~ 24
25 ~ 32
33 ~ 40
41 ~ 48
Tipo
Cdigo
Soma de verificao
Dados
54
Inicio
CheckSum
Correto?
S
Montagem do cabealho
ICMP
Clculo do CheckSum
Encapsula no quadro
Ethernet
Fim
55
1~8
9 ~ 16
17 ~ 24
25 ~ 32
Porta de Origem
Porta de Destino
Seqncia
Reconhecimento
Tamanho do Cabealho
Reservado
Bits de Cdigo
Janela
Soma de Verificao
Ponteiro de Urgente
Opes e Enchimento
Dados
56
reservado para aplicao futura e o segundo contm seis indicadores, conforme a tabela
2.12.
TABELA 2.12 - Significado dos indicadores no cabealho TCP
Indicador
Significado
URG
ACK
PUSH
RESET
Reinicializar a conexo
SYN
FIN
57
Estado =
Ouve
Recebe
SYN
Envia
FIN
Tempo de conexo
esgotado
Envia ACK.
Recebe
ACK
Envia ACK.
Estado =
FIN recebido
Recebe
FIN
Estado =
Conectado
Recebe
FIN
Envia HTTP e
FIN
Estado =
FIN enviado
58
A utilizao de conexes rpidas, isto , conecta, remete a pgina HTML e finaliza,
diminui a necessidade de gerenciamento de grandes quantidades de conexes ativas,
reduzindo as necessidades de recursos consumidos pelo servidor, com memria e
capacidade de processamento.
59
Incio
Prepara
pseudocabealho
CheckSum
Correto?
S
N
Erro !
Solicitao
SYN?
Conexo
Ativa?
S
Prepara nova
conexo
Falhou SYN
ACK?
Estado
Ouve?
Prepara cabealho
SYN ACK
Estado =
SYNEnv
Estado
SYNEnv?
SYN ACK,
Time out?
Estado =
Conex
Estado
Conex?
ACK,
GET?
Envia FIN,
Estado = FIN
Chama
HTTP
Estado
FIN?
N
ACK
?
Estado1 =
FINLoc
S
Estado =
Ouve
FINLoc e
FINRem?
Recebido
FIN?
Envia ACK,
Estado2 = FINRem
N
Erro !
N
Recebido
RES?
Fim
Estado =
Ouve
60
3 A Gerao de um ASIP
61
Mas embora sejam muitas as qualidades apresentadas pelos microcontroladores, uma
caracterstica fundamental: o custo reduzido. Este custo derivado principalmente da
adequabilidade do conjunto hardware / software aplicao fim, e dos volumes
envolvidos.
Considerando-se todas as vantagens apresentadas quando da utilizao de
microcontroladores em sistemas embarcados, deve-se levar em conta uma importante
caracterstica que pode ser agregada ao dispositivo visando otimizar ainda mais seu
conjunto de vantagens, ou seja, a implementao somente das instrues realmente
necessrias aplicao. Com este artifcio gera-se um processador com instrues
especficas para a aplicao (Application Specific Instuction set Processor - ASIP), que
apresentar o menor custo do conjunto hardware, embora o desenvolvimento de
software fique bastante limitado, uma vez que o carter de aplicabilidade ampla de um
conjunto completo de instrues deixa de existir. Devido a este fato, deve ser bastante
criteriosa a definio do conjunto de instrues que ser implementado no sistema.
Durante a fase de elaborao do software aplicativo para o sistema embarcado com a
utilizao de ASIPs, fundamental a utilizao de um compilador adequado ao
conjunto de instrues proporcionado pelo processador, recaindo sobre este ponto a
principal desvantagem desta abordagem. Como conseqncia, o programador fica
basicamente limitado elaborao de programas em Assembler, abrindo mo da
reutilizao, e com a desvantagem da difcil manuteno do cdigo resultante.
Conforme [KRE 97], quatro abordagens de soluo podem ser implementadas na
tentativa de resolver os problemas especficos gerados por uma determinada aplicao
fim. A adequabilidade de uma ou outra das possveis solues depende de uma anlise,
por muitas vezes complexa do ambiente da aplicao, de sua exeqibilidade, custo,
disponibilidade de ferramentas, prazos, entre outros tantos fatores que por ventura
surjam durante o desenvolvimento do sistema.
A primeira aproximao o desenvolvimento de um circuito integrado especfico para a
aplicao fim, onde a principal desvantagem o custo de desenvolvimento, mas por
outro lado apresenta, sem dvida, o melhor desempenho.
A segunda abordagem a elaborao de um processador especfico para a aplicao,
que, conforme j discutido, possui um conjunto de instrues reduzido e totalmente
voltado para a aplicao fim. Com esta abordagem o custo de desenvolvimento do
hardware grande, tendo em vista a sua adequao aplicao, mas o custo final do
sistema ser reduzido, uma vez que os elementos desnecessrios no sero
implementados, reduzindo assim o custo do hardware final.
Outra possibilidade o projeto resultante do projeto conjunto de software e hardware
onde ao processador central ser adicionado algum hardware especfico voltado para a
aplicao fim. Com esta aproximao, o desempenho final do sistema ser prximo do
processador de aplicao especfica, com a vantagem da programao fcil.
Por fim, h a soluo clssica do processador de propsito geral com a conduo do
problema totalmente orientada ao software. As vantagens do ponto de vista de
programabilidade so grandes e poderosas, mas com o custo gerado pelo hardware
grande e, por muitas vezes subutilizado desta aproximao, o maior que qualquer
outra abordagem anteriormente discutida.
62
No trabalho aqui apresentado, foi utilizada uma ferramenta de software com o propsito
de gerar o cdigo VHDL para a integrao em hardware do processador de aplicao
especfica TCP/IP. Esta ferramenta foi desenvolvida por Srgio Ito e chama-se
SASHIMI [ITO 2000]. Esta ferramenta foi escolhida devido sua facilidade de
aplicao ao ambiente aqui proposto, ou seja, a partir do cdigo gerado em um
computador utilizando a linguagem de programao C, foi simples a traduo para o
Java, que serve de fonte de entrada para o SASHIMI. Em adio a isto, a ferramenta
gera o hardware descrito em VHDL de um processador de aplicao especfica,
conforme a necessidade da aplicao fim. Alm disto, o software aplicativo que
executar no processador gerado anteriormente, tambm fornecido pela ferramenta em
questo.
Com todas as facilidades apresentadas, o SASHIMI tornou-se uma soluo bastante
atraente visando a gerao do hardware pretendido por este trabalho. Caso se leve em
considerao os esforos empregados por qualquer outro meio de desenvolvimento de
hardware e software dedicado a este fim, fica flagrante a aplicabilidade imediata desta
ferramenta, bem como a velocidade e simplicidade no fornecimento de resultados finais.
63
como um temporizador e dois nveis de interrupo. A figura 3.1 ilustra a arquitetura
utilizada no microcontrolador descrito pela ferramenta SASHIMI.
MUX
PC
RAM
IMM
MUX
Data Bus
MAR
Const
+/SP
FRM
MUX
Output
Ports
Input
Ports
Intruction Bus
ROM
MUX
VAR
A
ALU
Timer
Interrupt
Handler
IR
Control
64
Ao ser compilado o cdigo Java ser gerado um arquivo com bytecodes Java que ter a
extenso .class. A partir deste arquivo feita uma anlise dos bytecodes realmente
utilizados pela aplicao, e a partir desta definio do conjunto de instrues gerado o
processador especfico para esta aplicao fim.
Mnemnicos
Lgica Aritmtica
iadd, isub, imul, ineg, ishr, ishl, iushr, iand, ior, ixor
Controle de Fluxo
Operaes de Pilha
Load/Store
Array
Estendido
Outras
goto, ifeq, ifne, iflt, ifge, ifgt, ifle, if_icmpeq, if_icmpne, if_icmplt, if_icmpge, if_icmpgt, if_icmple,
return, invokestatic
iconst_m1, iconst_0, iconst_1, iconst_2, iconst_3, iconst_4, iconst_5, bipush, pop, pop2, dup,
dup_x1, dup_x2, dup2, dup2_x1, swap
Iload, iload_0, iload_1, iload_2, iload_3, istore, istore_0, istore_1, istore_2, istore_3
Iaload, baload, caload, saload, iastore, bastore, castore, sastore, arraylength
load_idx, store_idx, sleep
nop, iinc, getstatic, putstatic
3.3 A Implementao
O cdigo implementado em linguagem C foi testado em um ambiente de rede de
computadores com PCs, apresentando resultados positivos do ponto de vista de
conectividade e resposta. O ambiente utilizado foi o apresentado na figura 3.2.
Internet
Rede Local de
Computadores
Servidor
Sob Teste
Cliente
(Browser)
65
Aps a ativao do controlador Ethernet, o primeiro protocolo codificado foi o ARP,
responsvel pelo descobrimento na rede dos endereos de hardware de um dado
hospedeiro. A seguir o protocolo de nvel de rede foi codificado, o IP, visto que sobre
este nvel se estabelece toda a troca de informao entre hospedeiros, na forma de
datagramas.
Com a infra-estrutura de troca de dados funcional, foi codificado de forma simplificada
o protocolo ICMP, responsvel pelo utilitrio de descoberta de hospedeiros na rede
PING. Este utilitrio tambm utilizado para a depurao de problemas de
conectividade, sendo bastante til durante todo o processo de desenvolvimento e testes
deste trabalho.
Ainda sobre a infra-estrutura definida pelo protocolo IP, foi elaborado o protocolo TCP,
responsvel por toda a confiabilidade na troca de dados entre aplicaes. Sobre o TCP
foi elaborado um protocolo bastante simples, no nvel de aplicao, baseado no HTTP,
que tem por objetivo retornar ao cliente uma pequena pgina HTML.
Com toda a pilha de protocolos funcional, pde ser medido o tempo de resposta do
sistema a uma requisio do cliente, que de forma esquemtica, pode ser observada na
figura 3.3 a seguir.
Cliente
Servidor
Solicitao (ARP)
Resposta (ARP)
Tempo
SIN (TCP)
SIN, ACK (TCP)
ACK (TCP)
GET (HTTP)
Pgina HTML
Reconhecimento (TCP)
FIN ou RES (TCP)
O fluxo inicia com uma tentativa do cliente em resolver o endereo MAC do servidor
baseado em seu endereo IP. O protocolo utilizado neste instante o ARP, que retorna
do servidor uma resposta contendo o seu endereo de hardware.
Com o endereo MAC resolvido o cliente solicita o estabelecimento de uma conexo
TCP com o servidor, utilizando a seqncia de trs pacotes, conforme esplanado no
captulo anterior. Caso a conexo seja corretamente estabelecida entre os dois
hospedeiros, inicia-se a fase de troca de dados de aplicao, que no presente trabalho foi
escolhido o protocolo HTTP. Neste ponto o cliente envia ao servidor a requisio de
uma pgina HTML, e o servidor retorna a pgina solicitada, aguardando o recebimento
correto dos dados atravs dos esquemas previstos no TCP para deteco e correo de
erros.
66
Com a confirmao do recebimento correto dos dados enviados, o servidor
imediatamente inicia a seqncia de desconexo do protocolo TCP, liberando desta
forma recursos de para uma possvel conexo de outro cliente.
O cdigo implementado em C foi pensado de forma a ser o menor possvel, sem afetar o
desempenho ou a funcionalidade da pilha de protocolos. O processo de conexo, troca
de dados e desconexo foi medido e apresentou-se na faixa de 1 a 2 segundos. Este
tempo de resposta do sistema pode ser sobremaneira melhorado caso seja implementada
a possibilidade do servidor processar mais de um pacote de dados de forma paralela. Na
atual configurao, para cada pacote que chega ao servidor, executado seu
processamento de forma completa, elaborada uma resposta, caso seja pertinente, e
remetida ao cliente. Isto implica em que, chegando dois pacotes de dados, um em
seguida do outro, o segundo ser desprezado, enquanto o servidor processa o primeiro,
ficando a cargo do cliente reenvi-lo. Esta aproximao, embora tenha liberado valiosos
recursos de hardware e software, apresentou a desvantagem de adicionar um pequeno
atraso no fluxo de troca de informaes. Pode-se estimar que, caso fosse implementado
o processamento paralelo de pacotes, o tempo de resposta do sistema cairia para algo
em torno de 0,1 a 0,5 segundo, baseado nas observaes feitas em softwares de
depurao de redes conhecidos por sniffers.
Visando atingir o objetivo de consumir a menor rea de silcio possvel no processador
TCP/IP resultante, o cdigo gerado em C manteve-se o menor possvel. Como
comparao pode-se observar a tabela 3.2, onde mostrado o tamanho de cdigo fonte
de uma aplicao desenvolvida para ser utilizada em ambientes onde o meio de
comunicao so rdios [ACK 92] e o cdigo elaborado neste trabalho. A
implementao TCP/IP desenvolvida para ser utilizada com rdios foi escolhida como
parmetro de comparao porque foi totalmente elaborada em C, assim como o cdigo
aqui desenvolvido.
TABELA 3.2 Comparao de cdigos fonte.
Aplicao
ARP
IP
ICMP
TCP
Total
9 kB
16 kB
7 kB
44 kB
76 kB
TCP/IP em C
3 kB
2 kB
2 kB
7 kB
14 kB
67
TABELA 3.3 Comparao de cdigos executveis.
Aplicao
ARP
IP
ICMP
TCP
Total
TCP/IP em C
10 kB
10 kB
10 kB
12 kB
26 kB
TCP/IP em Java
0,4 kB
0,2 kB
0,2 kB
1,2 kB
2 kB
68
Cdigo em Linguagem C
Compliao (JVM)
Arquivo .CLASS
Ferramenta SASHIMI
Hardware (FPGA)
Aps a traduo para o Java do programa fonte, foi executada sua compilao para uma
Mquina Virtual Java, que gerou um arquivo com a extenso .class. Com base neste
arquivo a ferramenta SASHIMI produz a descrio VHDL do hardware do
microcontrolador de aplicao especfica, implementando no seu decodificador de
instrues apenas as instrues necessrias para o programa aplicativo que ser
executado por este sistema. A ferramenta produz tambm o cdigo do programa
aplicativo que dever ser armazenado na memria do microcontrolador.
O cdigo VHDL serviu de entrada para a segunda ferramenta utilizada no processo de
gerao do microcontrolador, Max + Plus II que executa a simulao e sntese do
hardware. O resultado desta sntese pode ser observado na tabela 3.3.
# Cl. lgicas
% FPGA
Freq.
(MHz)
# Intrues
FemtoJava
1979
85
3,93
68
Proc. TCP/IP
1764
61
8,71
42
69
Para efeito de comparao, est sendo mostrada a ocupao do FPGA que integra o
microcontrolador com todas as 68 instrues disponibilizadas, chamado de Femto Java
[ITO 2001] e a seguir o mesmo microcontrolador com apenas as instrues necessrias
aplicao TCP/IP. Nota-se a pequena reduo no nmero de clulas lgicas ocupadas
no FPGA utilizado para a sntese. Isto se verifica porque o decodificador de instrues
do processador TCP/IP possui apenas 42 instrues diferentes frente s 68 do
microcontrolador Femto Java.
Outro aspecto, no menos importante, da implementao a velocidade do circuito,
denotada pela sua freqncia de relgio. Nota-se que o processador TCP/IP pode
processar a praticamente o dobro da velocidade do microcontrolador Femto Java
original. Esta comparao pode ser feita diretamente, porque o hardware componente
dos dois controladores so basicamente idnticos, diferindo apenas na quantidade de
instrues disponibilizadas ao software aplicativo.
70
4 Concluso
71
O processador TCP/IP em conjunto com o controlador Ethernet so peas de custo
bastante acessvel, baseado principalmente na sua simplicidade. Possuem uma pequena
rea total, simplificando sua portabilidade, em ambientes onde o tamanho e peso sejam
decisivos. Apresentam excelentes caractersticas de conectividade, baseado no nvel
fsico (Ethernet) e a pilha de protocolos utilizado para a troca de dados. Com todas as
caractersticas aqui descritas o trabalho atingiu os objetivos inicialmente propostos,
tornando vivel a sua aplicao no ambiente de controle a que se destina, bem como em
outros ambientes onde necessidades semelhantes de troca de informaes via rede se
apresentem.
72
interligao em redes de longa distncia. Esta abordagem implicar no acrscimo de um
protocolo especfico para o nvel de enlace de dados, que na pilha TCP/IP conhecido
por PPP (Point to Point Protocol), e a conseqente retirada do protocolo de enlace
Ethernet. O protocolo deste nvel utilizado pelo controlador Ethernet est integrado em
hardware no prprio controlador, liberando o processador TCP/IP desta tarefa. Por outro
lado, no caso do protocolo PPP, a tarefa de controlar o nvel de enlace ficar a cargo do
processador TCP/IP, adicionando mais um nvel na sua pilha de protocolos, exigindo
assim, mais recursos de hardware e rea de silcio, cobrando seu custo no desempenho
geral do sistema. Considerando-se que as velocidades de transmisso de dados
utilizadas pelos modems so, de maneira geral, bastante inferiores s velocidades
apresentadas por uma rede Ethernet, pode se tornar vivel este tipo de aproximao.
73
Bibliografia
[ACK 92]
[COM 99]
[DAV 97]
[INT 95]
INTERNATIONAL
ELECTROTECHNICAL
COMMISSION.
Telecontrol Equipament and Systems Part 5: Transmission Protocols
Section 101: Companion Standart for Basic telecontrol Tasks. Genebra,
1995. 181p.
[ISO 94]
74
[ITO 2001] ITO, Srgio Akira; JACOBI, Ricardo Pezzuol. Making Java Work for
Microcontroller Applications. IEEE, 2001. 12p.
[JAM 98] JAMMEL, Arhtar; STUEMPFLE, Matthias; JIANG, Daniel; FUCHS, Axel.
Web on Wheels: Toward Internet- Enabled Cars. Computer, Piscataway,
v.31, n.1, p. 69-76, Jan. 1998.
[KER 86] KERNIGHAN, Brian W.; RITCHIE, Dennis M. C a Linguagem de
Programao. Rio de Janeiro: Campus, 1986. 208p.
[KRE 97]
[LIG 00] LIGHTNER ENGINEERING. How to Build a Pico Web Project. Version
2.00. 2000. Disponvel em: <http://www.picoweb.net/>. Acesso em: 20 fev.
2001.
[LOE 99] LOEWEN, Myron. AN724 Using PICMicro MCUs to connect to Internet
via PPP. 1999. Disponvel em: <http://www.microchip.com/>. Acesso em:
20 fev. 2001.
[MOD 96] MODICON INC. Modicon Modbus Protocol Reference Guide. 1996.
Disponvel
em:
<http://www.modicon.com/techpubs/TechPubNew/>.
Acesso em 19 nov. 2001.
[MUR 98] MURHAMMER, Martin W. et al. TCP/IP Tutorial and Technical
Overview. 1998. Disponvel em: <http://redbooks.ibm.com>. Acesso em:
10 dez. 2001.
[NAT 95] NATIONAL SEMICONDUCTOR CORPORATION. DP83902A ST-NIC.
Serial Network Inteface Controller for Twisted Pair. 1995. Disponvel
em: <http://national.com>. Acesso em: 10 abr. 2000.
[PLU 82] PLUMMER, D.C. Ethernet Address Resolution Protocol: Or converting
network protocol addresses to 48.bit Ethernet address for transmission on
Ethernet
hardware,
RFC
826.
1982.
Disponvel
em:
<http://sunsite.auc.dk/RFC/>. Acesso em: 28 fev. 2000.
[POS 81] POSTEL, J. Internet Protocol, RFC 791. 1981. Disponvel em:
<http://sunsite.auc.dk/RFC/>. Acesso em: 28 fev. 2000.
[POS 81a] POSTEL, J. Internet Control Message Protocol, RFC 792. 1981.
Disponvel em: <http://sunsite.auc.dk/RFC/>. Acesso em: 28 fev. 2000.
[POS 81b] POSTEL, J. Transmission Control Protocol. 1981. Disponvel em:
<http://sunsite.auc.dk/RFC/>. Acesso em: 23 fev. 2001.
[PRE 99] PREDKO, Myke. PC Ph. D. Inside PC Interfacing. New York: McGrawHill, 1999. 954p. p. 36 - 40.
75
[PRO 99] PROFIBUS NUTZERORGANISATION. Profibus Technical Description.
1999. Disponvel em: <http://www.profibus.com/downloads.html>. Acesso
em: 18 abr. 2002.
[REA 95] REALTEK SEMI-CONDUCTOR CO. RTL8019 Realtek Full-Duplex
Ethernet Controller with Plug and Play Function. 1995. Disponvel em:
<http://www.realtek.com.tw/>. Acesso em: 20 fev. 2001.
[SCE 2000] SCENIX SEMICONDUCTOR INC. AN35 SX-Stack: Internet
Protocols
Implementation.
2000.
Disponvel
em:
<http://www.scenix.com/>. Acesso em: 20 fev. 2001.
[SCH 97] SCHILDT, Herbert. Borland C++: Completo e Total. So Paulo: Makron
Books do Brasil, 1997. 1114p.
[SEI 2001] SEIKO INSTRUMENTS INC. Hardware Specification S7600A TCP/IP
Protocol Network LSI. 2001. Disponvel em: <http://www.seiko-usaecd.com/>. Acesso em: 20 fev. 2001.
[SHA 95] SHANLEY, Tom; ANDERSON, Don. ISA System Architecture. Reading:
Addison Wesley Longman, 2000. 517p.
[SPU 2002] SPURGEON, Charles. Quick Reference Guide to 10 Mbps Ethernet.
2002. Dispovel em: <http://ethermanage.com/ethernet>. Acesso em: 17 abr.
2002.
[TAN 97]
[VAR 98] VARHOL, Peter. Designing Communications for Web Devices. Computer
Design, Northbrook, v.37, n.9, p. 49-57, Sept. 1998.