Archive for July 2010

Muita tecnologia para uma pessoa só

A culpa para eu não ter postado mais é uma só: é muita tecnologia para uma pessoa só!
Nessa vida de acadêmico, profissional e hobbista estou tendo que lidar com coisas tanto em baixíssimo quanto altíssimo nível;
A começar pela vida acadêmica, este trimestre a cadeira é de sistemas distribuídos, o contexto é:

  • comunicação com utilização de mensagens;
  • protocolos e semânticas;
  • tratamentos de erros, correções, tolerância a falhas;
  • tempo distribuído, ordens causais, exclusão mútua distribuída;

A linguagem de programação definida pelo professor (define:professor – Alguém que não é legal você contrariar) é JAVA. Sabe já fui xiita quanto a isto, mas para algumas coisas o Java realmente é uma mão na roda, por exemplo, faziam 4 anos desde a última vez que eu fiz um programa com janelinhas, e com Java consegui fazer um programa demo em menos de meia hora.

Outro ponto é: Objetos remotos. O Trabalho deste trimestre é fazer uma implementação utilizando Corba, e com Java isto é legal :) é muito simples compartilhar um objeto remoto utilizando Java, e eu sinceramente não sei porque este protocolo junto com o RMI (que é mais fácil ainda) não são utilizados em larga escala.

Saindo um pouco da vida acadêmica, caio na minha vida profissional, ai entramos em um outro extremo. Ai o contexto é outro:

  • kernel Linux, uCLibc, arm-linux-*
  • ARM, Atmel, TI
  • C e asm
  • NandFlash, Dataflash, EEPROM
  • 32MB, 4KB, 99Mhz…

E esta é a minha praia, eu sinceramente, sem brincadeira, fico feliz com os problemas que me aparecem lá, os últimos que me vem a cabeça…

  • fazer o suporte da INFERNO PACK para o u-boot mainline;
  • um patch com os drivers do INFERNO PACK para o kernel mainline e resolver os pepinos da integração deste com o PREMPT_RT;
  • resolver um problema da implementação de mutex na linuxthreads da uCLibc;
  • por o 2.6.33.5-rt + buildroot-2010.05 + um monte de aplicação em 3.5MB de dataflash;
  • provar para o pessoal do outro lado do barramento que a latência não é no Linux (eu adoro este);

Mas ultimamente um problema legal que tenho trabalhado é o fato do processador Atmel at91sam9g20 não conseguir ler a uma NAND Samsung de 512 mbit, faz mais de um mês que estou discutindo com a Atmel que o problema é a ROMBOOT do processador. O legal disto é que estou tendo bastante contato com o drivers/mtd/ e o código do bootstrap do processador.

Por fim, o lado hobbista… aaa, este é uma coisa só: kernel Linux/Tempo real. Pra quem não sabe, minha proposta de palestra para a LinuxCon foi aceita, em breve publicarei aqui o resumo dela e os slides. Mas bom, voltando ao assunto, ultimamente tenho lido bastante sobre tempo real, tanto teoricamente com o livro Real Time Systems quanto implementações no kernel Linux, como a implementação do HRT, DynTick, a proposta do escalonador EDF, alguns artigos sobre controle de admissão de processos de tempo real.

Enfim, como pode-se ver, meu tempo ultimamente tem passado desde registradores à objetos distribuídos… porém, pelo meu lado hobbista… tudo se resume na frase do Linus…

And yeah, I still think the hard-RT people are mostly crazy. — Linus;