Archive for category Eletrônica

Mini curso em módulos para iniciantes em embedded

Navegando à procura de uma coisa … achei outra ! Acontece com todo mundo, eu sei. Mas neste caso, pelo menos foi interessante e vai na linha de tutoriais e cursos para iniciantes em embedded, uma pergunta recorrente que recebo.

O site Electronics Engineering Herald tem um curso em 19 módulos sobre embedded, cobrindo tópicos interessantes e de forma bem didática. Por exemplo, ele inicia descrevendo algumas arquiteturas, como PIC e ARM7, com programas bem simples. Depois evolui para uso da serial, SPI, I2C, CAN, LIN, interfaces com memórias, e por aí vai. Vale uma visita.

1 Comentário

Dicas de livros para ARM

Nada como ser cobrado pra se mover :) O @mauromartins lembrou e aqui vão algumas sugestões de literatura sobre ARM.

O primeiro é mais geral e um pouco mais antiga, falando sobre as famílias antes do Cortex (ARM7, ARM11, etc).

ARM System Developer’s Guide: Designing and Optimizing System Software (The Morgan Kaufmann Series in Computer Architecture and Design) by Andrew Sloss.

Leia o resto deste post »

2 Comentários

Como fazer o seu cubo de leds 5x5x5

Ahá ! Achava que eu não voltaria mais, nhein ? Pois então, aqui estou. Enquanto continuo escrevendo a minha série “net-snmp”, resolvi postar aqui um projeto que vale a pena ser visto.

Faz um tempinho que venho pensando em fazer um cubo de leds e, apesar de ter vistos vários vídeos, nunca tinha visto ninguém detalhar como fez. Neste final de semana, no site “pic projects”, pude ter acesso a um projeto detalhado de um cubo de leds de 5x5x5. Muito interessante e com tudo disponível para quem quiser aprender.

No projeto, várias coisas são simplificadas para permitir a implementação em um controlador simples e manter o custo baixo. Por exemplo, não se usa controle de intensidade do led (PWM), não se usam leds RGB e aciona-se apenas um grid 5×5 por vez, em varreduras de 10ms (cada grid 5×5 fica ligado por 2ms). Isto torna o projeto incrivelmente mais simples. Também é dado um passo-a-passo de como montar o projeto, talvez a parte mais difícil

Vale a visita ! [LINK]

 

4 Comentários

Compilando o SystemC no VS2010 Express

SystemC

Tentei algum tempo fugir do VHDL e usar algo supostamente de nível mais alto chamado SystemC. O SystemC é uma linguagem construída sobre o C++ e usada para projeto, verificação e modelagem de sistemas. Em especial, eu gostei bastante da parte de verificação, apesar de não ter encontrado boas ferramentas open source para sintetizar o meu código em SystemC em algo realizável em hardware, como VHDL. Achei apenas promessas pouco funcionais, como o sc2v (funcionou em casos bem simples comigo, bastante limitado). Existem algumas ferramentas profissionais e caras que podem fazer isto pra você, no entanto.

Mas não se enganem, não existe mágica. É preciso saber o que se está programando em SystemC, por mais que existam abstrações maiores, como filas, barramentos, etc. Por exemplo, se quer algo dependente de clock (algum circuito sequencial), precisará fazer isto em SystemC explicitamente. Se quer algo combinacional, idem. Em VHDL, temos os mesmos problemas, apesar de a linguagem ser menos agradável do que a sintaxe do SystemC (no fundo, C++).

Leia o resto deste post »

, , ,

3 Comentários

Flash e wear leveling

Nada como uma pitada de humor negro pra tirar um sorriso matinal dos carrancudos costumeiros. Agora há pouco eu estava investigando o estado atual da tecnologia de memórias NAND com suporte a Wear Leveling e, por acaso, caí na página de um tal Benjamim Hodgens, que alertava sobre algumas meias verdades associadas a memórias do tipo flash.

Uma flash, em geral, tem ciclos de dez mil a cem mil escritas. Não demora muito para você tornar um bloco inútil se fizer muitas escritas por minuto no mesmo bloco. A técnica de wear leveling aumenta bastante a vida útil da flash ao gravar em blocos diferentes quando uma escrita é feita, evitando reusar o mesmo bloco. Existem estratégias diferentes (veja este artigo para uma boa descrição e esta página para diferenças entre NOR e NAND), mas a ideia é distribuir as escritas pelo dispositivo. Mesmo se você não tem isto diretamente na flash, pode usar um sistema de arquivos com suporte à técnica, como o JFFS2 e UBIFS.

Mas vamos voltar ao Benjamim. Não satisfeito, ele citou o teste de wear leveling executado em pendrive por um rapaz chamado Josh. O teste não é lá muito científico, mas chega num número de escritas que passa de 90 milhões, um valor muito superior ao de uma flash normal, sem wear leveling. O melhor está nos comentários, onde é possível ler dicas e sugestões sobre o teste. Em especial, esta:

You should have used ReiserFS if you wanted to kill the drive#1.2 Anonymous on 2010-10-25 22:03

Yeah, anything with the Reiser name is good at killing stuff.#1.2.1 Anonymous on 2010-10-26 08:04

, ,

1 Comentário

Nova linha de processadores QorIQ da Freescale

No início deste ano tive uma surpresa agradável ao entrar no site da Freescale e encontrar uma nova linha de processadores de 32bits, denominada de QorlQ. Enquanto os ARMs estão por agora chegando a 800MHz, o PowerQUICC da Freescale já tinha processadores que passavam de 1GHz. Não existe ainda muita informação sobre o QorlQ, mas ele é também baseado em PowerQUICC (com núcleo e500) e parece ser um bom avanço em relação à linha existente.

São três principais famílias, crescentes em poder de processamento e periféricos, chamadas de P1, P2 e P4. Na P1, processadores P1011 (single) e P1020 (dual). Na P2, os processadores são o P2010 (single) e P2020 (dual). Pra fechar, oito núcleos no processador P4080, da linha P3. Algumas características mais gerais:

  • Alguns operam em faixa de temperatura de -40° a 125°
  • Tecnologia de 45nm com frequência de operação de até 1,2GHz. A frequência mais baixa é 533MHz.
  • Três ethernet 1 gigabit integradas (P1 e P2) e, nos modelos P4, duas ethernet 10 gigabit e oito ethernet 1 gigabit.
  • Cache hierárquico de dois ou três niveis (P4)
  • Muitos periféricos, como PCI Express, USB host/device, SD/MMC, RapidIO, I2C, SPI, UART …
  • IEEE 1588
  • DDR2 e DDR3, com 32 bits na linha P1 e 64 bits na P2 e P3.
  • Unidade de segurança integrada para AES, RSA, SSL, 3DES, SNOW, entre outros.
  • Endereçamento físico de 36 bits.

Estão prometendo preços competitivos e consumo baixo. Suporte possivelmente com Linux (MontaVista e WindRiver). É aguardar pra ver.

freescale

Freescale

2 Comentários

Dell Mini 9: versão Linux mais cara

Namorando o Dell Mini 9 na página da Dell americana, achei curiosa a política de preço deles. Os preços básicos, com os descontos devidos, são:

  • Dell Mini 9, Ubuntu, 512MB, 4GB SSD, sem bluetooth ou câmera: US$ 349
  • Dell Mini 9, Windows XP Home, 512MB, 8GB SSD, sem bluetooth, câmera de 0.3MP: US$ 399
  • Dell Mini 9, Windows XP Home, 1GB, 16GB SSD, sem bluetooth e câmera de 0.3MP: US$ 449

Se escolher o Ubuntu, colocar 1GB, câmera de 0.3MP e SSD de 16GB, o valor sobe para US$ 464. Ou seja, pode-se pensar que é melhor comprar o modelo com Windows, nem que seja pra removê-lo e instalar o Ubuntu, mas ter a chance de usar a licença se precisar. O ideal seria comprar com Linux se é isto que deseja, evidenciando que ele está vendendo também. Existe um desconto nas versões Windows que faz está lógica de preços acontecer. Provavelmente a Dell está sendo subsidiada nas cópias do Windows e, pra piorar, precisar pagar os royalties necessários para tocar DVDs e MP3 no Ubuntu (li que sai tudo rodando já…). Enfim, um barulho enorme na comunidade Ubuntu Linux e várias reclamações no Dell IdeaStorm.

Uma coisa que gostei no Dell Mini 9 foi a facilidade de upgrade. Uma tampa embaixo do netbook permite acesso ao slot de memória, disco, rede sem fio, etc. Vai facilitar bem a vida dos hackers de plantão, como pode ser visto nesta foto do Notebook Reviews :

Isto sem falar que, como tudo da Dell, o manual de serviço está disponível. Vida fácil para curiosos. Aliás, o manual de serviço fala de cartões de comunicação SIM e WWAN ! Isto não está à venda ainda mas define um futuro próximo para o equipamento. UPDATE: sobre o modem 3G embutido.

O que não gostei nem um pouco foi o fato de a Dell ter eliminado a fileira de teclas de função. Usa-se a tecla <Fn> combinada com outras teclas. Imagine chavear de terminal no Linux: <Ctrl>+<Alt>+<Fn>+<A> ! Haja dedo.

Deixe um comentário

A chave para o enriquecimento

A chave reserva do meu Astra 2002 já não funcionava quando o comprei e hoje, quando a chave principal passou a não funcionar direito, entendi o motivo do antigo dono não ter consertado a outra chave: uma chave nova custa 280 reais ! Pior, o vendedor disse que vendem umas duas por dia ! Uma conta rápida, levando-se em contas as mais de 500 concessionárias GM no Brasil e um preço médio de 250 reais geram 31 milhões e meio por ano em vendas de chaves superfaturadas.

Inconformado com o preço e não acreditando no que o vendedor dizia, resolvi desmontar eu mesmo a chave e analisar, antes de morrer em 280 reais. O vendedor jurava de pé junto que eu tinha um problema no “transmissor”, sem nem testar a chave direito, enquanto eu acreditava em mau contato e bateria fraca.

Abrir a chave foi ainda mais revoltante. Não parecia existir nada que justificasse este preço, mesmo sendo uma chave com transponder e alarme. Imagens da desmontagem a seguir (é tudo encaixado):

Leia o resto deste post »

20 Comentários

Pesadelos e PCIs de alta frequência

<desabafo>Junho tem sido um daqueles pesadelos nos quais você acorda assustado, dorme de novo e recomeça do ponto que parou. Todo dia eu acordo e este mês ainda não chegou ao fim. Estou cansado …</desabafo>

Bom, eu odeio HTML e choramingas, logo, vamos ao que interessa. Estive esta semana num workshop do Rick Hartley, um especialista em projetos de PCIs em alta frequência. Tentei cobrir um pouco do evento pelo twitter, mas o 3G de São Paulo é tão ruim quanto o Edge aqui da roça do interior. Também tive a oportunidade de visitar uma fábrica de circuito impresso, que gostei bastante, por sinal. Os posts do twitter estão a seguir, pra quem não pode ver.

Leia o resto deste post »

4 Comentários

Máquinas de estados e síntese de circuitos com VHDL

Após alguns dias trabalhando em um projeto com VHDL resolvi escrever alguma coisa a respeito. Afinal, estou meio afastado do Linux embedded (por enquanto !).  Em especial, este post é sobre máquinas de estados e síntese de circuitos com VHDL.

Existem diversas formas, boas ou não, de se definir uma máquina de estado. O livro HDL Chip Design, de Douglas Smith, comenta várias configurações e a síntese obtida após a compilação, sendo uma boa referência para evitar designs ruins. Outra referência que pode impedir erros básicos é o artigo The Ten Commandments of Excellent Design, de Peter Chambers. Ele cita alguns problemas comuns na hora do design que podem gerar circuitos instáveis na presença de ruídos ou em frequências mais altas.

Eu resolvi resumir uma pequena máquina de estado e comentar alguns cuidados. Apesar de existir material de VHDL na internet, a visão crítica do código e da síntese é geralmente omitida. Esta visão geralmente vem com o tempo (e com vários designs com problema).

O código em VHDL está ao final do texto. Basicamente ele contrói um pequeno componente chamado Demo, com duas entradas e duas saídas, além de linhas de clock e reset. O circuito não faz nada interessante, foi feito apenas para demonstração da síntese. Neste design, vários aspectos citados pelo Peter Chambers foram abordados explicitamente:

  • All state machine outputs shall always be registered
  • Thou shall use registers, never latches
  • Thy state machine inputs, including resets, shall be synchronous (all input signals shall be registered)
  • Have no dead states in thy state machines
  • Have no logic with unbroken asynchronous feedback lest the fleas of myriad Test Engineers infest thee
  • All decode logic must be crafted carefully – eschew asynchronicity

O circuito sintetizado está abaixo, com comentários logo a seguir.

Leia o resto deste post »

6 Comentários

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 499 outros seguidores