História de horror #2: a PCMCIA que “morreu na praia”…

Tal como o “Mr. B” (a.k.a. WWW), agora também eu tenho um calvário técnico para partilhar…

Mas enquanto o dele é feito de muitos falhanços e no fim coroado de sucesso, o meu é uma sequência de sucessos no fim coroada de desilusão.😦

Ora cá vai… eu tenho andado a recuperar um portátil antigo e uma placa de aquisição de dados PCMCIA para usar como controlador experimental de um motor eléctrico, e assim desfiou a história.

  1. Dar uma voltinha no site do “CoMeDI“, para ver quais os programas cliente que suportam aquilo, e quais as placas de aquisição suportadas pela infraestrutura. Óptimo, é mesmo isto que eu quero.
  2. Ler a documentação de utilizador e de desenvolvimento, para ver se vale a pena o esforço. Acho que sim, tem um aspecto razoável e não parece muito complicado.
  3. Inscrever-me na lista da comunidade, fazer umas perguntas imbecis, receber umas respostas mornas… bom, podia ser pior.
  4. Fazer um “checkout” do CVS, configurar e compilar os drivers. Hmm… nunca ninguém tentou usar o “comedi” num computador sem barramento PCI… tenho de comentar algumas linhas e avisar os “maintainers”. Agora já compila.
  5. Procurar um driver PCMCIA para reutilizar com a minha placa. Escolho um entre três candidatos, mas ao fim de uma hora a coisa tá preta; a placa é demasiado diferente. Mando fora, escolho outro que me foi sugerido na lista do grupo.
  6. Também não dá. Depende de um outro driver que nada tem a ver com este tipo de placa. Mando fora e escolho o candidato restante. Agora sim, parece bem. A placa é mais complicada, mas tem praticamente as mesmas funcionalidades, por isso é só cortar o que não é preciso e substituir o “recheio”.
  7. Ao fim de um dia de martelanço no teclado, a coisa tá compostinha… a minha placa ainda me atirou umas bolas curvas (registos reutilizáveis com fins distintos, apesar de haver muitos registos livres), e também tive de emular em SW algumas características que as placas modernas fazem em HW, mas o meu driver tá quase pronto. Já quase nada resta do driver original, excepto o vulto.😉 Hora de compilar.
  8. A documentação do projecto está desactualizada, faltam alguns passos para conseguir integrar um driver novo e conseguir que compile. Valha-nos a busca no arquivo da lista do projecto…
  9. Algumas correçõezinhas depois, o driver carrega mas não regista a placa. Hmm… nada mexe. Activar os prints de debug… nada. descarrega o driver, volta a carregar… nada. Ooops, esqueci-me de mudar o “Manufacturer ID / Card ID”!! Deixa cá ver qual é o da minha placa… NÃO TEM?!?! chiça, onde já se viu isto?? uma placa sem identificação do fabricante??? Bom, tenho de usar a identificação textual do modelo.
  10. Ok, já tem as “strings” e os “hashes” necessários, carrega de novo. Nada. Bolas, que se passa aqui?… descarrega e carrega de novo, com debug. Nada. Mau… Nem uns “printks” com a entrada do módulo??…
  11. “strings adv_pcia71.ko | grep “… Ah, pois, faltam as macros de “init_module / exit_module” (VERGONHA!). Desapareceram no meio do copy/paste…🙂
  12. Ok, já bomba!! Consegui chegar ao ponto onde estava antes com um “dummy” driver que só fazia PCMCIA: carrega a placa e mapeia os registos e IRQ, permitindo às aplicações “acender os LEDs”.🙂 Fixe, já tenho um driver “comedi” para esta placa! Até nem correu nada mal. Falta testar a parte do comedi.
  13. Espera aí, o fabricante mudou o nome da placa a meio da produção… é melhor acrescentar o segundo nome ao driver, para ser compatível com todos. Qual era mesmo?… baahhh, vou ter de usar as ferramentas MS-DOS do fabricante para trocar o nome da minha placa de modo a ver o novo nome.
  14. Arranca com a disquete, o config.sys volta a não conseguir instalar a placa (como sempre), e lanço a ferramenta mágica. Troco o nome, e reboot. Uau!… o config.sys conseguiu instalar o driver do fabricante pela primeira vez. Fixe, vou usar o programa de teste deles. Cool!! tantos indicadores a piscar!! Yess!! a placa faz mesmo aquisição analógica, não pisca só os LEDs!!🙂
  15. Ok, boota com linux, para ver a nova string do nome da placa. Calcular o hash respectivo e recompilar o driver com ambos os nomes. Carregar de novo… já está! Funciona também com o novo nome. Bom, deixa só pôr tudo como estava (eram 02:00, não estava a pensar muito bem…).
  16. Boota com MS-DOS, corre outra vez a ferramenta maravilha, muda o nome para o antigo. A aplicação de teste do fabricante volta a não funcionar. (Fez-se luz) Epá, se calhar é melhor deixar isto com o nome moderno, assim funciona tanto em linux como em DOS… volta a correr a aplicação de renomear.
  17. Hmmm… a aplicação de teste ainda não funciona. Estranho.
  18. Reboot MS-DOS. O config.sys não mapeia a placa. Mau… e isto já está com o nome novo… e nada.
  19. Novo reboot, novo renomear, nada. Mau, mau, mau…
  20. Volta ao linux, para ver melhor o que se passa. Carrega o driver… nada. MAU!!!!
  21. Carrega o driver “dummy”… nada!! MAUMAUMAUMAUMARIA!!!!!!
  22. “find /sys | grep pcmcia “, “cat /sys/bus/pcmcia/blablablabla…” Hmmm… o “bus controller” PCMCIA detecta a presença da placa, mas depois não fornece nenhuma informação de CIS ao kernel… AAAAAAAAAAAAAAAAHHHHHHHHHH!!!! A EPROM dos atributos “PnP” ficou lixada!!!!!! NÃAAAAAOOOOO!!!
  23. Enquanto há vida, há esperança… carrega e descarrega os drivers várias vezes, tira e mete a placa várias vezes, desliga o computador da tomada, volta a tentar tudo de novo…. nada.
  24. Voltar ao MS-DOS em desespero, voltar a “renomear” a placa… népia. Morta.
  25. Chuif… tanto trabalho… para nada. E nem sequer brinquei com o comedi…
  26. Faço o funeral à placa?… haverá alguma maneira de reprogramar esta cena, apesar do “chipset” PCMCIA não a mapear?…. aah, who cares!!! Já dei demasiado tempo e emoção a isto.

E pronto. Agora vou ter de repensar as ferramentas para o meu projecto mecatrónico… e o dia tinha corrido tão bem!!!

Pffff!!

~ por Vasco Névoa em Abril 8, 2008.

2 Respostas to “História de horror #2: a PCMCIA que “morreu na praia”…”

  1. Se descobrires o chip da EEPROM quem sabe…

  2. ahhhhhhhh…. como é bom “ouvir” estas coisas😛

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

 
%d bloggers like this: