Porque USB-Serial é tão lento

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

Mensagempor msamsoniuk » 07 Jun 2009 14:31

usb eh o pior lixo jah inventado! :)

o primeiro problema sao os device drivers: teclado, mouse e dispositivos de armazenamento (pendrive, camera, celular, mp3, etc) funcionam legal pq eh algo bem padrao e vc nao precisa de nenhum device driver idiota para fazer funcionar na sua maquina.

o segundo problema eh performance: no caso de dispositivos de armazenamento, usb eh uma solucao amadora... vc concebe um storage com interfaces gigabit full-duplex, mas usb eh algo chinelao, nao tem nem comparacao em termos de infra-estrutura externa e interna.

no caso do adaptador usb/serial, comprei um profilic e me lasquei. nao funciona no OSX, nao funciona no windows. pouco antes de jogar ele na pilha de m**** (dispositivos usb q eu comprei e nao funcionam e servem para comprovar minha teoria que usb eh uma m****), testei ele no linux.

funcionou perfeitamente.

o adaptador nao requer performance, entao posso ateh descartar a critica que usb oferece uma performance de m****. mas o maldito adaptador soh funcionou perfeitamente no linux, entao cai naquela historia do device driver mal feito.

bom... e como resolve isso ?

pela decisao da intel, as maquinas modernas nao possuem serial, entao a solucao mais simples eh eu reescrever o device driver no macintosh. quem usa windows provavelmente vai precisar fazer o mesmo, dae resolve, mas acho um desrespeito para os consumidores.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Jorge_Francisco » 07 Jun 2009 16:35

Sou um cara sortudo então. Porque o meu também é profilic fabricado pela Clone e sempre funcionaram muito bem. Para XP uso um driver, para Vista uso outro. Abri o bendito aqui(estava quebrado no conector serial) e o bendito cristal estava lá, talvez seja isso.

Vlw
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor polesapart » 07 Jun 2009 19:05

Bom, os profilic com chip original, cristal que preste e desenho da pcb não exageradamente amador, costumam funcionar bem no Linux.

Marcelo, eu não sei como é reconhecimento de drivers e enumeração de dispositivos no mac os, mas no Linux eu tenho aqui comigo dois cabos com chip profilic, um é usando um chip original e o Linux enumera ele na boa, por que a lista de dispositivos (aqueles pares malucos VENDOR:DEVICEID) do driver do linux é gigantesco e lá pelas tantas tem o par do meu. Já o outro é um clone chinês sem vergonha, cujo chip é tão safado que é daqueles com a pastilha de silício montada sobre a pcb e coberta com uma resina gosmenta. Este não reconhece, eu tive que fazer o seguinte patch pro driver reconhecê-lo:

Código: Selecionar todos
diff -ruN linux-2.6.22.1.orig/drivers/usb/serial/pl2303.c linux-2.6.22.1/drivers/usb/serial/pl2303.c
--- linux-2.6.22.1.orig/drivers/usb/serial/pl2303.c     2007-08-09 14:30:33.610595000 +0200
+++ linux-2.6.22.1/drivers/usb/serial/pl2303.c  2007-08-09 14:36:39.594595000 +0200
@@ -84,6 +84,7 @@
        { USB_DEVICE(ALCOR_VENDOR_ID, ALCOR_PRODUCT_ID) },
        { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ID) },
        { USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
+       { USB_DEVICE(HL340_VENDOR_ID, HL340_PRODUCT_ID) },
        { }                                     /* Terminating entry */
 };

diff -ruN linux-2.6.22.1.orig/drivers/usb/serial/pl2303.h linux-2.6.22.1/drivers/usb/serial/pl2303.h
--- linux-2.6.22.1.orig/drivers/usb/serial/pl2303.h     2007-08-09 14:30:33.610595000 +0200
+++ linux-2.6.22.1/drivers/usb/serial/pl2303.h  2007-08-09 14:37:11.638595000 +0200
@@ -102,3 +102,7 @@
 #define WS002IN_VENDOR_ID      0x11f6
 #define WS002IN_PRODUCT_ID     0x2001

+/* HL HL-340 (ID: 4348:5523) */
+#define HL340_VENDOR_ID                0x4348
+#define HL340_PRODUCT_ID       0x5523
+
pl2303_hl340.diff (END)



E... o maldito funcionou, mas só consigo comunicação estável com ele até 38400bps, acima disto ele começa a ficar muito safado, a 115200 ele simplesmente é insuportável e manda mais bits corrompidos do que inteiros :P

Talvez no Mac seja preciso só algo do gênero, tipo, ensinar o driver aquele par vendor:product_id refere-se aquele driver, por quê infelizmente mesmo com o chip original parece que dá pra reprogramar os identificadores e cada fabricante põe o seu, imagina então os clones chineses...
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor msamsoniuk » 07 Jun 2009 22:40

bom, o meu prolific eh o chip de verdade e ele reconhece direto no kernel default do slack 11 (2.6.17.13-smp). e claro, minhas aplicacoes nao requerem mais de 9600 bps de performance, entao no linux funciona redondo, mas no mac soh funciona bem por alguns segundos, depois pifa e eu tenho que desplugar e plugar o adaptador para o device driver voltar a funcionar! :)

tenho algumas suspeitas no OSX: a primeira eh que ele nao esta programando corretamente o prolific para tratar um evento de break na serial (pode tratar como framming error) e ele se perde. a segunda suspeita eh que o OSX parece estar levando ao peh da letra os usleep() que eu uso no meu codigo e isso pode estar causando problemas de realtime com o device driver. eu ampliei varios timers e o problema quase sumiu, mas nao foi resolvido completamente. uma terceira possibilidade eh que a API BSD para a serial tem divergencias da API linux.

pode ateh ser uma combinacao de fatores: timers inadequados, programacao inadequada e API inadequada, o fato eh que o hardware funciona no linux com este adaptador e quase funciona no OSX, infelizmente nao o suficiente para eu conseguir programar uma flash de 4KB (se for 1KB, dah tempo e funciona! hahaha).

eh dificil imaginar uma alternativa para a interface usb no caso de uma simples serial... varios microcontroladores bootam pela serial e no fim a gente fica refem dessa porcaria que nao funciona direito. eu ateh imaginei de pegar um mcu programavel pela usb, mas imagina soh o drama que deve ser conseguir device drivers para eles... eh meio complexo hein! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor polesapart » 08 Jun 2009 00:05

No caso o mac é um macbook? Tem pcmcia ou expresscard? No meu note resolvi a questão da conectividade serial com um adaptador pcmcia com duas portas seriais, a controladora é uma MosCHIP PCI, coisa fina. Os expresscard tem que tomar cuidado pra ver se é PCI, pq como ele expõe além do PCI Express uma porta USB tbm, tem nego fazendo cartão que na verdade é um adaptador usb-serial disfarçado :D

Bons tempos em que os notes vinham com ao menos uma serial de verdade.
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor msamsoniuk » 08 Jun 2009 02:08

o macbook mesmo soh tem usb, ethernet e firewire, nao eh diferente de muitos outros notebooks e netbooks modernos. eu cito meu caso no OSX como exemplo, mas eh algo q eu posso resolver facilmente aqui via ethernet... o problema eh que eu preciso de uma solucao que funcione no notebook de qq cliente, usando OSX, linux e windows... e em alguns casos piores, usando um sistema dentro do outro via vmware :P

eu acho que com os drivers corretos, um prolific ou ou ftdi resolve o problema e, de qq forma, eu nao visualizo alternativas viaveis para eles a longo prazo, entao vou ter q dar um jeito de fazer funcionar, pq estou pensando ateh em integrar eles nos meus hardwares futuros!

eh ironico que eu jah vi muita gente se lascando com adaptadores JTAG na serial e sempre pensei q nunca cairia no mesmo problema, visto que os componentes q eu uso possuem rom e trabalham com interfaces seriais assincronas normais a 9600 bps. nos componentes que o pessoal se lasca, a JTAG eh sincrona e o pessoal xunxa usando pinos de controle da serial, q nem sempre sao possiveis de controlar da mesma forma como seria em um 16450 conectado diretamente.

por sinal, qual eh melhor? prolific ou ftdi? a ftdi eh inglesa, parece mais confiavel hehehe
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor Wagner de Queiroz » 08 Jun 2009 09:11

Agora que o Marcelo chegou a chapa esquentou e ficou uma conversa boa, Marcelo, quer dizer que vc se rendeu ao prolific no linux né? nao sou conhecedor do mac, por isso nao posso opinar, Windows é um pé no saco, mas devo admitir, ontem por exemplo consegui rodar o pickit2 no linux e fiquei contente.

Eu acredito que o FTDI deve rodar legal no mac pq tem driver ftdi pra quase tudo.

Contudo tenho que admitir, o usei o prolific numa placa pra gravar 8051 e me arrependi amargamente, levou quase 10 minutos pra ler o chip, mas por outro lado, o meu leitor de codigo de barras serial funfa muito bem com o cabo prolific. vai entender.
Seja Livre, Use Linux
Avatar do usuário
Wagner de Queiroz
Word
 
Mensagens: 872
Registrado em: 11 Out 2006 13:38
Localização: Barueri-SP

Mensagempor polesapart » 08 Jun 2009 11:05

Marcelo Samsoniuk escreveu:por sinal, qual eh melhor? prolific ou ftdi? a ftdi eh inglesa, parece mais confiavel hehehe



Os da ftdi tem mais recursos e tal, ele tem uma controladora serial-paralela programável, onde dá pra implementar vários protocolos (tem nego fazendo acelerador jtag, interface SPI, etc.). Mas acho que são mais caros, então se não for usar nenhuma dessas coisas, o profilic acaba sendo uma opção viável :-)
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor msamsoniuk » 08 Jun 2009 15:11

mas veja q os microcontroladores que eu uso possuem rom e se comunicam com o computador via interface serial assincrona *normal*, ou seja, preciso ler e gravar bytes normais. se vc abrir um hyperterminal e digitar os caracteres corretos, vc transfere e grava a flash... se nao funcionasse, seria a mesma coisa que dizer que o chip usb-serial nao consegue fazer nem o que ele foi projetado (serial).

Wagner de Queiroz escreveu:Agora que o Marcelo chegou a chapa esquentou e ficou uma conversa boa, Marcelo, quer dizer que vc se rendeu ao prolific no linux né? nao sou conhecedor do mac, por isso nao posso opinar, Windows é um pé no saco, mas devo admitir, ontem por exemplo consegui rodar o pickit2 no linux e fiquei contente.

Eu acredito que o FTDI deve rodar legal no mac pq tem driver ftdi pra quase tudo.

Contudo tenho que admitir, o usei o prolific numa placa pra gravar 8051 e me arrependi amargamente, levou quase 10 minutos pra ler o chip, mas por outro lado, o meu leitor de codigo de barras serial funfa muito bem com o cabo prolific. vai entender.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Anterior

Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x