Anda di halaman 1dari 5

ANE0003

ANE0003 - Configurando a pilha TCP/IP Microchip


Autor:

Marcelo Martins Maia do Couto

1. Introduo
A pilha TCP/IP largamente utilizada para
a comunicao entre elementos dentro de uma
rede. Este protocolo foi criado em 1977, sendo
hoje o mais usado, fazendo o seu entendimento
necessrio para qualquer implementao que
precise se comunicar em uma rede ethernet.
Este documento tcnico visa preencher
algumas lacunas existentes no material que a
prpria Microchip disponibiliza sobre o
assunto. Ela disponibiliza um application note
para os seus clientes que j descreve o
funcionamento desta pilha, contudo este
documento, o AN833b, datado de 2002 e no
mais auxilia de forma eficaz o entendimento
das verses mais atuais da pilha.
Para o uso desta pilha necessria a
instalao da mesma. A verso aqui referida a
verso v3.75 que utilizada inclusive no
exemplo de firmware que acompanha este
ANE. A instalao desta pilha pode ser
encontrada na sua verso mais recente no site
da prpria Microchip.
O kit referido o Sigma128 fabricado pela
Exsto Tecnologia; O ambiente de trabalho o
MPLAB 7.61 e o compilador usado o C30.
Ambos so fornecidos de forma gratuita no site
da Microchip.
Ento quando citado kit estamos nos
referindo
ao
Sigma128
usando
um
dsPIC33FJ128GP706, MPLAB a verso
7.61 e pilha ser a verso v3.75.

Aqui nos concentraremos em alguns arquivos


principais da pilha que nos permite configurar
o hardware e a habilitao dos servios.

2.1. Arquivos a modificar:


2.1.1. Compiler.h
Quando se utiliza a pilha, sempre temos
que ter em mente que ela precisa ser adaptada
para o microcontrolador escolhido. Esta
adaptao abrange tudo, desde o clock de
operao e perifrico SPI at se haver algum
componente MAC/PHI de integrao.
Abaixo temos alguns itens que precisam
ser modificados para qualquer que seja a
implementao usando a pilha:

Freqncia de Clock: Define a velocidade


de clock adotada para o PIC.
Mapeamento de hardware: Aqui
definimos as funes de cada pino no
hardware. Temos uma base usada no nosso
exemplo, sendo que no h impeditivos
para adio ou subtrao de pinos se
necessrio. O prprio arquivo est
comentado facilitando a identificao da
funo de cada pino. Aqui devemos
observar que necessrio um hardware a
mais para o funcionamento que o CI
ethernet da prpria Microchip, o
ENC28J60 que adotado automaticamente
pela pilha quando o microcontrolador
usado no possuir a MAC/PHI interna.

2.1.2. Stacktsk.h

2. Firmware
Em todo o documento, ser citado o
firmware que se prope implementar um
Webserver simples, que promove a interao
entre o usurio e o kit. Este firmware tem
como objetivo permitir o controle de alguns
dispositivos do kit e ainda mostrar alguns tipos
de interao do kit numa pagina web.
O firmware tem como base somente a
adaptao do exemplo fornecido juntamente
com a pilha. Para adaptarmos a pilha temos
que ter em mente que tipo de servio
desejamos implementar, como por exemplo um
cliente telnet, ftp ou web.
www.exsto.com.br

Neste arquivo onde definimos quais so


os servios que estaro rodando no seu
microcontrolador. Entretanto, devemos notar
que algumas aplicaes demandam de espao
para serem implementadas.
Para mais informaes, consulte o
application note AN833 da Microchip para a
lista de servios disponveis.
Abaixo colocarei algumas que foram
usadas para ativao do webserver.
MPFS_RESERVE_BLOCK:
Reserva uma parte da memria antes
da ativao do MPFS, que um
1

ANE0003

sistema de arquivos embarcado


utilizado pela Microchip;
STACK_USE_ICMP: Ativa o servio
ICMP da pilha, este tipo de protocolo
serve de auxiliar ao protocolo IP. A sua
funo mais conhecida o PING;
STACK_USE_HTTP_SERVER:
Este servio liga o compartilhamento
de pginas Web (HTTP) armazenadas
no microcontrolador;
MPFS_USE_PGRM: Define o local
de armazenamento dos arquivos que
estaro disponveis via ethernet. Neste
caso, est definido para que seja
possvel o armazenamento interno.
Devemos s respeitar a capacidade de
armazenagem
da
memria
de
programa do microcontrolador;
MY_DEFAULT_HOST_NAME:
Nome dado ao seu microcontrolador
quando ele estiver na rede, este nome
no deve ser colocado em minsculas
e ainda aconselhvel que seu
tamanho seja limitado em 16
caracteres;
MY_DEFAULT_MAC_BYTE1-6:
So os seis octetos que identificam o
dispositivo na rede, eles formam o
endereamento de camada dois,
tambm conhecido didaticamente
como endereamento fsico. Este valor
deve ser nico em uma rede e serve
como base do encaminhamento feito
por dispositivos de camada de enlace
como o Switch, por exemplo;
MY_DEFAULT_IP_ADDR_BYTE1
-4: Este representa os quatro octetos
que identificam o dispositivo na rede
com relao a camada trs do modelo
OSI, que o endereo IP. Este
nmeros, que variam entre 0 e 255
devem ser alterados de forma com que
o microcontrolador possua um
endereo IP nico e compatvel com a
rede onde ele funcionar;
MY_DEFAULT_MASK_BYTE1-4:
Estes quatro octetos identificam a
mscara de sub-rede que nos d a
quantidade de bits que so designadas
para a identificao da rede e quais
bits identificaro os hosts (elementos
de rede). Estes octetos possuem um
formato definido e um padro que
deve ser seguido;

www.exsto.com.br

MY_DEFAULT_GATE_BYTE1-4:
Estes quatro octetos so de grande
utilidade para quando queremos que o
elemento de rede possa acessar outras
redes. Este tem o mesmo formato do
endereo IP e tambm pertencente a
rede que est o microcontrolador.
Todas as informaes que no so
enviadas para a rede local so enviadas
para o gateway (este numero) que se
responsabilizar de encaminhar os
pacotes ou datagramas para as outras
redes;
MY_DEFAULT_DNS_BYTE1-4:
Este campo, que tambm possui o
mesmo formato do endereo IP,
responsvel por fazer a resoluo de
nomes. Esta resoluo funciona da
seguinte forma: Quando precisamos
acessar um site, temos somente um
nome
que
o
identifica,
ex.:
www.exsto.com.br. Este nome no tem
nenhum significado para a rede em si,
pois essa s trabalha com endereos IP
e cada elemento de rede que est em
comunicao em uma rede tem um IP
vlido. Portanto, o DNS serve como
um banco de dados que relaciona
nome <-> IP fazendo a identificao
do nome com relao ao seu IP.
Exemplo:
Nome: www.exsto.com.br
IP: 200.202.231.39
Assim, quando acessamos um site,
na verdade estamos acessando um
endereo IP, isto facilita o uso da
internet e a forma de lembrar os
caminhos, j que tem um formato mais
fcil de entender pelas pessoas.

Aqui temos que fazer algumas observaes


importantes. Uma delas ressaltar que neste
arquivo temos vrias opes que permitem
com que mexamos em vrias configuraes
das camadas TCP/IP, como por exemplo, a
quantidade de pessoas conectadas ao
webserver. Entretanto isto no ser abordado
aqui, sendo que essas opes no sero
modificadas.
Outro
detalhe
que
o
desenvolvedor deve ter em mente que a pilha
TCP/IP da Microchip no possui um
comportamento de comunicao s entre
camadas, sendo que este no o
funcionamento correto, por isso aqui temos
opes selecionadas que ativam e desativam
2

ANE0003
protocolos de outras camadas, como por
exemplo, na ativao do HTTP_SERVER, o
TCP ativado tambm.

2.1.3. MPFSImg.c
Este arquivo o centro de informaes de
toda a informao que ser disponibilizada
e/ou armazenada pelo microcontrolador na
rede. Este um sistema de arquivos utilizado
pela microchip, sendo na verdade, uma
imagem de um diretrio que est no seu
computador.
Este diretrio ser a raiz do sistema dentro
do microcontrolador e conter todos os
arquivos e diretrios que por ventura estejam
dentro do diretrio. Este sistema de arquivos
inicialmente gerado por um programa que
est tambm dentro do projeto-exemplo desta
ANE.
O funcionamento do programa muito
simples, j que ele converte todos os dados do
diretrio em um s arquivo, chamado
MPFSImg.c.
Ento depois de escolhido o diretrio que
ser embarcado, devemos usar o programa
de converso chamado MPFS.exe da seguinte
forma:

utiliza estes servios para alguma finalidade,


que a finalidade do programa.
Mais uma vez vemos que as opes
selecionadas no arquivo Stacktsk.h fazem com
que algumas opes sejam ativadas ou
desativadas.
A analise do programa bem intuitiva na
sua inicializao, onde o desenvolvedor talvez
no encontre muita dificuldade em entender se
ele possui conhecimentos em ingls, entretanto
alguns pontos devem ser esclarecidos,
principalmente na forma com que o programa
interage com o kit.
Primeiro vamos comentar o funcionamento
das principais funes que esto presentes em
qualquer aplicao:
InitializeBoard(): Inicializao do
Hardware,
configurado
em
Compiler.h;
TickInit(): Sincroniza todos os
elementos de cada camada da pilha;
MPFSInit(): Inicia o sistema de
arquivos do microcontrolador.
InitAppConfig() e StackInit: Inicia o
programa e ativa as camadas da pilha.
Os prximos passos do programa seguem
agora a funcionalidade escolhida, por
exemplo, no nosso programa-exemplo a
funo HTTPInit() ser habilitada.

MPFS diretorio MPFSImg.c /c


Onde diretrio a pasta que voc deseja
converter
para
ser
colocada
no
microcontrolador. Depois de feito este
processo s substituir o arquivo MPFSImg.c
existente no projeto pelo novo.
Temos que observar que, no caso deste
exemplo, no usamos memria externa para
armazenar as informaes. Por isso o programa
mais a imagem do diretrio que ser
dimensionado para ocupar, no Maximo, 70%
da memria de programa do microcontrolador.
Outra coisa importante que a pgina
principal deve ter o nome de INDEX.HTM,
este nome pode ser mudado em HTTP.C, que
no recomendado.

2.1.4. MainDemo.c
Como o prprio nome j diz, este o
arquivo que ativa todos os servios e realmente
www.exsto.com.br

2.2. Interaes uC - Webserver


As rotinas de configurao da pgina em
tempo real na verdade se baseia na leitura e
escrita dos arquivos CGI que esto dentro do
diretrio do webserver.
Estas interaes so feitas atravs de duas
funes
chamadas
HTTPGetVar
e
HTTPExecCmd.
Iniciando ento, o programa define valores
de marcao para cada item que vai modificar
na pgina padro. Estes campos so entre
outros os estados dos leds na placa, verso da
pilha e etc.
Estes campos podem ser encontrados entre
as linhas 280 e 318 no arquivo MainDemo.c e
devem ser alterados conforme a necessidade.
As duas funes j citadas so
responsveis respectivamente por ler os status
que esto sendo controlados na placa e colocalas na pgina e a outra em pegar as
modificaes feitas no site e faze-las na placa.
3

ANE0003
Portanto, as modificaes para qualquer uma
das duas situaes acima tem que ser feitas nas
suas respectivas funes como descrito acima.

3. Organizao do exemplo:

Source Files: Localizao das fontes .c


Header Files: Localizao dos cabealhos .h
Linker Scripts: Biblioteca do uC utilizado

Dentre esses arquivos podemos citar


alguns como:
ENC28J60.c: o fonte que contem
todos os parmetros de uso do CI
responsvel pela comunicao do uC
com a ethernet.
HTTP.C: o fonte que rege as funes
do servidor http.
MPFS.C: o fonte que faz o acesso a
imagem MPFSImg.c
TCP.C:
Fonte
que
monta
o
funcionamento do protocolo TCP.
Com isso, vemos que a pilha muito
verstil e ainda que nem todos os arquivos aqui
listados precisem ser utilizados.

3.1.2. Pasta Header Files:

3.1. Detalhamento das Pastas:


3.1.1. Pasta Source Files:

Aqui temos a maioria dos arquivos que so


utilizados por padro na pilha da microchip,
mas devemos notar que nem todos so
utilizados na compilao devido a aplicao da
pilha, que s ativa os mdulos necessrios para
a aplicao escolhida.
www.exsto.com.br

Esta pasta possui as definies estticas de


cada fonte respectivamente. Podemos ressaltar
algumas utilizadas como:
ARP.h: Define todas as bibliotecas e
variveis estticas para o uso do ARP,
que um protocolo que identifica o
endereo IP relacionado a um
endereo MAC.
MAC.h: Define as variveis de
funcionamento da camada MAC
4

ANE0003
juntamente com as bibliotecas
necessrias e atribuio das funes
utilizadas.

3.1.3. Pasta Linker Files:

Aqui somente a definio dos itens de


link para o microcontrolador escolhido.

4. Bibliografia de consulta:
Segue abaixo as bibliografias necessrias
para um maior entendimento dos tpicos aqui
citados:
AN833 TCP/IP Microchip Stack;
Redes de Computadores Andrew
Tanenbaum;
Google Funcionamento CGI.

5. Futuras adies e/ou


modificaes:
Abaixo segue campos de sugesto para
reviso deste material. Este deve ser escrito
abaixo:
Maior detalhamento do funcionamento
de uma rede TCP/IP;
Mais detalhamento da interao entre
o uC e a pgina;

www.exsto.com.br