Você está na página 1de 13

PUCRS PONTIFCIA UNIVERSIDADE CATLICA DO RIO GRANDE DO SUL

TRABALHO 1

Augusto Lange Cristiano Ferreira Eduardo Schneider Jeferson Ghisio Programao de Perifricos

Turma 590

Eduardo Bezerra

Porto Alegre 28 de abril 2008

ESPECIFICAO OTrabalhoPratico1(TP1)visaexploraraprogramacaodedispositivosperifericoscom comunicaoviainterfaceserialRS232CeportaparalelaIBMPC. Odiagramadosistemaaserimplementadoencontrasenafiguraaseguir:

INTRODUO Existem inmeras aplicaes para sistemas que utilizam comunicao serial e paralela. Maquinasindustriais,perifricosdecomputadores,hardwaredecontrole,entreoutros.Estudaremos agoraasprincipaiscaractersticasdestestiposdecomunicao. Asprincipaisdiferenasentreacomunicaoserialeparalelaso: Serial: Transmissomaissimples Utilizaapenasumcanaldecomunicao Menorvelocidadedetransmisso Paralela: Transmissomaiscustosaecomplexa Requermaisdeumcanaldecomunicao Maiorvelocidadedetransmisso

PortaSerial

Nacomunicaoserial,osbitssoenviadosumaum.Bomparacomunicaesqueno necessitam de tanta velocidade de transmisso quanto se utilizaria numa porta paralela. A velocidade daserial deaproximadamente 115kb/s enquantoqueadaparalela de1.5MB/s. Apesardemaislenta,aportaserialtemavantagemdesermaissimplesejustamenteporissobem maisbarata. PinagemdoDB9(significado): SGouGNDTerra TDouTXTransmissodedados RDouRXRecepodedados DTRTerminaldedadospronto DSRConjuntodedadospronto RTSProntoparaenviar(computador) CTSEnvieosdados(modem) DCDPortadoradetectada RIIndicadordetelefonetocando FG(FrameGround) CaboSerialparaconectarDB9comDB9

Configuraodaportaserial: H vrias maneiras para se configurar uma conexo serial. A mais comum atravs da velocidadee/ouatravsdebitsdeparidadeeparada.Taxascomunsdevelocidadedetransmisso so300,1200,2400,9600,19200,etc.(Kb/s).Configurandoseosperifricospelasuavelocidade, devesemanteramboscomamesmaquantidadedetransmisso.Casoestejaconfiguradoparase utilizarparidade,aofinaldatransmissodeumpacoteserfeitoumtesteparacontaraquantidade de1(uns)e0(zeros)destepacote.Seaparidadeforpar,asomadetodosos1(uns)dopacotedeve darumnumeropar.Casoaparidadesejaimpar,asomadeveretornarumnmeroimpar.Casouma transmissosejaespecificadaparatransmitiremparidadepareasomados(uns)tenhadadoum nmero mpar,odispositivoir retornarumamensagemdeerro.Casoaparidadeeonumerode (uns)combinem,noserdadonenhumamensagemdeerroeatransmissoserfeitanormalmente. Oproblemadestatcnicadetransmissoquesecasohouverumnumeropardebitscomerro(2, 4,6...),atransmissoir continuarnormalmentetambm.Osbitsdeparidadesotransmitidosno finaldecadapacote.Bitsdeparadasoenviadosnofimdecadabytetransmitidocomointuitode permitirqueoreceptordosinalsesincronizeeparaavisarquechegouaofimdeumpacote.Outras formasdechecagemdeintegridadedosdadossoRTS/CTS,DTR/DSR,ouXON/XOFF(queno usampinosnoconector,mascaracteresespeciaisnofluxodosdados).OcaractereXONdizao receptorqueoremetentedocaractereestprontopararecebermaisdados.OcaractereXOFFdizao receptorparaparardeenviarcaracteres.OXON/XOFFestemdesuso,eprefervelqueseutilize o controle de fluxo RTS/CTS. XON/XOFF um mtodo "em banda" que funciona entre dois pontos,masambosdevemsuportaroprotocolo,ehumaconfusoempotencialnoincio.Podeser feito numa interface com trs fios. Geralmente so utilizados 8 ou 9 bits (9 seria com bit de paridade)paratransmissodedados. PortaParalela

A porta paralela uma interface de comunicao entre o computador e um perifrico. Atualmente,sovriososperifricosqueseutilizamdestaportaparaenviarereceberdadosparao computador(exemplos:Scanners,Cmerasdevdeo,Unidadedediscoremovveleoutros).Na comunicao em paralelo, grupos de bits so transferidos simultaneamente. Sendo assim, a velocidadedetransmissoacabasendomuitosuperioradaportaserial. Transmissounidirecional: AportaparalelaSPP(StandardParallelPort)podechegaraumataxadetransmiss o dedadosa150KB/s.ComunicasecomaCPUutilizandoumBUSdedadosde8bits. Paraatransmissodedadosentreperifricossousado4bitsporvez. Transmissobidirecional: A porta avanada EPP ( Enhanced Parallel Port ) chega a atingir uma taxa de transfernciade2MB/s.Paraatingiressavelocidade,sernecessrioumcaboespecial. ComunicasecomaCPUutilizandoumBUSdedadosde32bits. Paraatransmissodedadosentreperifricossousado8bitsporvez. AportaavanadaECP(EnhancedCapabilitiesPort)temasmesmascaractersticas que a EPP, porm, utiliza DMA (acesso direto memria), sem a necessidade do uso do processador,paraatransfernciadedados.UtilizatambmumbufferFIFOde16bytes. OseucomputadornomeiaasPortasParalelas,chamandoasdeLPT1,LPT2,LPT3etc.,mas, aPortafsicapadrodeseucomputadoraLPT1,eseusendereosso:378h(paraenviarumbyte dedadospelaPorta),378+1h(parareceberumvaloratravs daPorta)e,378+2h(paraenviar dados).svezespodeestdisponvelaLPT2,eseusendereosso:278h,278+1he278+2h,com asmesmasfunesdosendereosdaportaLPT1respectivamente. Nome da Endereo de Porta memria LPT1 LPT2 0000:0408 0000:040A EndereodaPorta 888 decimal 632 decimal base base Endereo Descrio Endereo

378 hexadecimal 278 hexadecimal

UtilizandoaPortaParalelaconectadaaumaimpressora,osendereosdosregistradorestero nomessugestivos,comosegueabaixo: Nome Endereo Endere sLPT1 osLPT2 378h 278h Descrio Envia um byte para a impressora

Registro de Dados

Registro de Status Registro de Controle

379h 37Ah

279h 27Ah

LeroStatusdaimpressora Enviadadosdecontroleparaa impressora

ODB25 umconectorqueficanapartedetrsdogabinetedocomputador,e atravs deste,queocaboparaleloseconectaaocomputadorparapoderenviarereceberdados.NoDB25, umpinoestemnvellgico0quandoatensoeltricanomesmoestentre0a0,4v.Umpinose encontraemnvellgico1quandoatensoeltricanomesmoestacimade3.1eat5v. AsfigurasabaixomostramosconectoresDB25(fmeaemacho),com25pinos,ondecada pinotemumnomequeoidentifica: DB25queficaatrsdoMicroConectorMachodoCaboParalelo

DESENVOLVIMENTODOPROJETO Paraodesenvolvimentodoprojeto,foiutilizadoolaboratrioderedesdaFACIN,com acessoROOTnosistemaLinux.AoutilizaroLinuxcomoroottnhamoslivreacessosportasde I/Odoscomputadores,paraassimtestarecriaroprograma. Foifeitoumcaboserial232Ccom2conectoresDB9fmeas,comsomenteospinos2,3,5 soldados,poissomenteestesseriamutilizados(23invertidose5direto).Foiutilizadoocaboj feitoemLaboratriodeProcessadores. Testamos o cabo com um programa da pgina do professor (http://www.inf.pucrs.br/~eduardob). O programa conectava 2 computadores pela porta serial e estabelecendo uma comunicao entre os 2 computadores. Assim era possvel os usurios conversaremumcomooutro. Ocaboparalelo(com2conectoresDB25machos)foicompradoesoldadoapenas9fios. Foitrocadoos4bitsdeDatacomos4destatus.Usouseumbitparaoground. Para desenvolver o sistema, utilizamos programas exemplos do professor para adquirir funes,suasaplicaeseoutrosdadosnecessriosparacriarmosoprogramapedido. Para a comunicao serial fizemos um programa que copiava um arquivo texto de um computadoreomandavaparaooutrocomputador.Oarquivoerasalvo,lidoemostradonatela. Paraaportaparalela tentamos fazerumprogramacomamesmafuno,pormesteno

funcionoucomooesperado.Paraaportaparalelasoldamosospinosdedadosestatustrocadose utilizamosocaractere@nofinaldoarquivoaserenviado,poisesteindicaofinaldeenviode dados. Para a porta serial utilizamos este mesmo caractere. MODELAGEMDOSISTEMA OprogramafuncionaemdoiscomputadoresutilizandooLinux.Paraodesenvolvimentodo programautilizamosoprogramaKate. A implementao inicial baseada em dois sistemas, um transmissor e um receptor. O transmissorenviaosdadospelaportaserialepelaportaparalela.Oreceptorrecebetaisdados. Para o transmissor foram criadas duas funes: void * openSendSerial() Este comando abre a porta serial ttyS0. Se no for possvel, reportado um erro ao usurio. Aps isso, solicitado ao usurio para enviar um arquivo. Este arquivo ser enviado para o outro computador e deve ser um arquivo de texto. No final do arquivo, como dito anteriormente, dever ser usado uma @. Aps o envio de dados a porta serial fechada. void * openSendParalela() Abre a porta paralela. Utilizando o comando ioperm liberado o acesso para os endereos: 0x378, 0x379, 0x37A. Se no for possvel a utilizao da porta, reportado erro ao usurio. Para a utilizao da porta paralela necessrio ser usurio root em ambos os computadores. Para a utilizao dos programas foi criada duas threads: - pthread_t th_openSendSerial - pthread_t th_openSendParalela. No programa receptor usamos as mesmas funes, apenas mudando de envio, para recepo. void * openReceiveSerial() Este comando configura a recepo de dados e abre a porta serial ttyS0. Se no for possvel, reportado um erro ao usurio. O programa recebe os dados um a um atravs de um while, imprime os dados na tela atavs de um printf e escreve o dado em um arquivo texto. Quando o caractere @ chegar o programa sair do loop while, os dados sero salvos no arquivo, a porta serial ser fechada e o programa fechar. void * openReceiveParalela() Este comando configura a recepo de dados e abre a porta paralela. Utilizando o comando ioperm liberado o acesso para os endereos: 0x378, 0x379, 0x37A. Se no for possvel a utilizao da porta, reportado erro ao usurio. Osistemaderecepoeenviodedadospelaportaserialeparalelaforamunidosnomesmo programa.Oprogramapossuiasseguintesopes: EnviarDadospelaPortaSerial; ReceberDadospelaPortaSerial; EnviarDadospelaPortaParalela; ReceberDadospelaPortaParalela; EnviarDadospelaPortaSerialeParalela(Threads);

ReceberDadospelaPortaSerialeParalela(Threads). Comistotemosumprogramaqueser igualexecutandonosdoiscomputadores,facilitando assimseuusoepermitindoaousurioescolherasuaopo,detransmissoouderecepo,semter deutilizardoisprogramasdistintosparatransmitirereceberdados. ProblemasEnfrentados Duranteaimplementaodestesistemaencontramosalgunsproblemas: Problemascomarecepodosdadosprovenientesdaportaserial. Problemascomatransmissoerecepodaportaparalela. Definirasinformaesrelevantesaseremcolocadasnosprotocolos. EnviartamanhodoarquivonoTXereceberamesmainformaonoRXparacontrolede recepo.

SoluesEncontradas Paraosproblemasdaportaserial,comeamosamonitoraraportaserialdoreceptoratravs docomandocat/dev/ttyS0.Assimpercebemosqueosdadosestavamsendoenviadoscorretamente peloemissorebuscamosaprimoraroreceptor. Paraisto,fomosrealizandoinmerostestespara saberosmotivosdosdadosnoseremexibidosnatela.Reformulamos owhile()dafunode receposerial,queestavacomproblemanoarmazenamentodosdadosrecebidos,econseguimos assimexibirosdadosrecebidosnatela.Sabendoqueestvamosnocaminhocorreto,adicionamoso comandodesalvaremarquivo,fprintf(),parasalvarosdadosemumnovoarquivo. Paraaportaparalelatentamosdiversosmodosdecorrigirosproblemas,tentamoscorrigir linhaporlinha,pormnoobtivemosumresultadopositivo.Aexecuodoreceptorficaemloop exibindosempreosmesmosdadosmesmosemexistirumatransmisso. InstruesdeUsodasTecnologiasEnvolvidas Cdigosnecessriosparaaexecuodosistema: #ParaprogramaCOMPLETO(TX+RX): Monitoraraportaserial:cat/dev/ttyS0 Enviarmensagemdetestepelaportaserial:echo'mensagem'>/dev/ttyS0 Compilaroprograma:gccTXRX.cotrlpthread ExecutaroPrograma:./tr #ParaoReceptorTX: Monitoraraportaserial:cat/dev/ttyS0 Compilaroprograma:gccTXRX.corxlpthread ExecutaroPrograma:./rx #ParaoEmissorRX: Enviarmensagemdetestepelaportaserial:echo'mensagem'>/dev/ttyS0 Compilaroprograma:gccTXTX.cotxlpthread ExecutaroPrograma:./tx Arquivoaserenviado:Teste.txt

ArquivosGerados: tr,txerx(Transmissor+Receptor,TransmissoreReceptor) teste.txtefileOut.txt(ArquivoEnviadoeArquivoRecebido) ArquivoparaTransmitir: necessrio que o arquivo a ser transmitido contenha o @ no final do arquivo, no importandosealgooantecede. Resultados Comonofoipossvelimplementarcorretamenteapartedatransmissoporportaparalela, nopudemosfazeracomparaodemaneiracorreta. A transmisso via porta serial ocorreu perfeitamente, onde alcanamos os resultados esperadosdeexemplificarestaconexo. Por no conseguirmos fazer funcionar a comunicao em paralelo, buscamos dados na internetdevelocidadesdetransmissoviaparalelaparafazeracomparao.Porhaverummltiplo enviodedados,aportaparalela(teoricamente)realmentemaisrpidaqueaserial. Deacordocominformaesobtidasempesquisas: Velocidade Dificuldadedeimplem.dohardware PortaSerial Muitolenta(<E5bit/s) Mdia PortaParalela Lenta(~E6bit/s) Fcil Estudosobreporqueserialaoinvsdeparalelanoquesitodesempenhoemaplicaes: Acomunicaoserialdiferenciasedaparalelaportransmitirapenasumbitporvez,enquanto quenacomunicaoparalelasotransmitidosvriosbitsporvez.Issofazcomqueacomunicao paralelasejamaisrpidadoqueaserial. Essa afirmao, embora aceita pela maioria das pessoas, no totalmente verdadeira. A comunicaoserialpodesermaisrpidadoqueaparalela,bastandoparaissoqueosbitssaiamdo dispositivotransmissoraumavelocidademuitomaior.Umexemplodisso aportaSerialATA que,apesardeserserial,consegueatingirumataxadetransfernciadeat150MB/s,enquantoque aportaIDEtradicionalconsegueatingir,nomximo,133MB/s. Alemdisso,aimplementaodeumaserialmuitomaissimplesqueadeumaparalela.Para cada bit transmitido em uma porta paralela, ser necessrio um fio. Ento caso esteja sendo utilizadoumsistemade32bits,seriamnecessrios32fiosemaisosbitsdecontrole.Issoprejudica osprojetistasqueprecisamfazerhardwarescadavezmenoresemaissimplesdeseprogramar.Para aportaserial,noentantosonecessriossomentedoisfiossempre,sendoassimmais fcil de programar Outradiferenanacomunicao paralelaparaacomunicao serial queacomunicao paralela halfduplex, enquanto que a comunicao serial fullduplex. Em portugus, isso significaoseguinte:nacomunicaoparalela,o nicocaminhoexistenteentreotransmissoreo receptor usadotantoparaatransmissoquantoparaarecepodosdados.Comos existeum nicocaminho,no possveltransmitirereceberdadosaomesmotempo.J nacomunicao serial,comoelasusadoisfios,normalmenteosfabricantesdisponibilizamquatrofios,doisparaa transmissoedoisparaarecepo.Ouseja,umcaminhos paraatransmissoeoutrocaminho separados paraarecepo.Issotornapossvelatransmissoerecepodedadosaomesmo tempo.Sessadiferenadearquiteturafazcomqueacomunicaoserialtenhaumpotencialdeser duas vezes mais rpida do que a comunicao paralela, se estivermos comparando duas comunicaesdemesmataxadetransferncia. Aimplementao deThreads nosistemacriadofoifeitacomsucesso,sendocadathread

mexendocomcadaoperaodoprograma,deenvioerecepodaportaserialeosmesmospara portaparalela.Ointuitoerafazerenviosdedadosnaportaparalelaeserialaomesmotempo,porm semacomunicaoparalelaefetiva,osthreadsacabampornoterutilidadeprtica.

CONCLUSO Comunicaesseriaiseparalelastiverametmaindagrandeimportnciaparaacomunicao de perifricos. Estes dois meios de comunicao que j no esto mais to presente nos computadores mais atuais foram muito importantes na evoluo da comunicao entre computadoreseentrecomputadoreseperifricos. Obtivemossucessonaimplementaodacomunicaoserial,ondealcanamososresultados esperados para a exemplificao do trabalho proposto, porm infelizmente no conseguimos implementarcorretamenteacomunicaodaportaparalela. Ainda assim, conseguimos entender o funcionamento destes dois meios de comunicao, fomos capazes de compreender suas diferenas, possibilitando assim observar o correto funcionamentodacomunicaoserial.

REFERNCIAS Wikipedia www.wikipedia.org MaterialdoProf.EduardoBezerra www.inf.pucrs.br/~eduardob MaterialdoProf.Stemmer www.ee.pucrs.br/~stemmer

Sitecomvriasimagensedados. www.rogercom.com

Você também pode gostar