quarta-feira, agosto 13, 2008

Microcontroladores - Parte 3

Como vimos na parte anterior, uma das características de um microcontrolador é ter integrado no mesmo chip que o processador uma série de outras funcionalidades. Neste post vamos começar a ver estas funcionalidades pelas memórias.

Um microcontrolador tem normalmente apenas algumas destas funcionalidades internamente. Por este motivo, é comum elas estarem disponíveis também em integrados isolados.

A Nomenclatura

Os nomes dados às diversas funcionalidades encontradas nos microcontroladores são, no mínimo incosistentes. É comum se dar nomes diferentes a recursos iguais (normalmente por motivos de marketing) e ocasionalmente dá-se o mesmo nome a recursos diferentes. Alguns nomes vem de motivos históricos, lembrança de uma realidade que já não existe mais. Outros são simplesmente inexplicáveis.

De qualquer forma, se você aceita a terminologia "Memória de Acesso Randômico" (vulgarmente chamada de RAM) apesar de o acesso randômico não ser a principal distinção de outros tipos comuns memórias com nome diferente, não vai ter dificuldade em aceitar os nomes apresentados.

Memória Não-Volátil

Vamos começar vendo alguns tipos de memória (também de acesso randômico) que são ditas não-voláteis por manter o conteúdo mesmo quando não alimentadas. Estas memórias são usadas principalmente para armazenar o programa (ou firmware) e configurações. Num microcontrolador normalmente o programa a ser executado está todo em uma memória já no instante em que ele é ligado, dai a importância de ter uma memória não volátil com capacidade adequada.

O primeiro tipo é a ROM (Read-only memory), que é uma memória cujo conteúdo é definido na fabricação e não pode mais ser alterado. Este tipo de memória é usado principalmente para firmware, quando se vai produzir uma grande quantidade e é improvável que seja encontrado um bug catastrófico.

Uma variação da ROM é a PROM (Programmable read-only memory). Esta memória vem de fábrica vazia e pode ser gravada uma única vez em equipamento especializado. É usada quando o volume não justifica (economicamente) usar a ROM.

Nos anos 80 era comum o uso da EPROM (Erasable PROM). A EPROM é uma PROM que pode ser apagada, este apagamento é feito expondo o componente a luz ultra-violeta por algumas horas. A gravação também requer um equipamento especializado.


Uma EPROM 2732 (4KBytes)
quantas lembranças!

O mais comum hoje em dia é o uso de memória Flash para armazenar o firmware. Este tipo de memória está bastante disseminado na forma de pen-drives e cartões de memória SD, Memory Stick, etc, porém o usuário destes produtos normalmente não percebe as limitações e características da memória Flash.

O primeiro ponto importante é que existem três operações muito distintas na memória Flash:
  • a leitura é uma operação rápida e que não requer cuidados especiais.
  • a escrita tem a característica de permitir apenas alterar bits de valor '1' para o valor '0'. A operação no sentido contrário ('0' para '1') não pode ser feito por uma escrita. A escrita é uma operação mais lenta que a leitura.
  • o apagamento coloca os bits em '1'. Além de ser uma operação demorada, na maioria dos casos não pode ser feita sobre uma única posição de memória. O apagamento é normalmente feito por blocos ou setores. Existe um limite para o número de apagamentos que podem ser realizados em um setor (da ordem de 100 mil a 1 milhão). Isto significa que não é viável manter variáveis de alteração frequente em memória Flash.
Na maioria dos casos as três operações podem ser feitas sem retirar a memória do circuito. Muitas vezes a escrita e apagamento podem ser inclusive feitas sob controle do processador, permitindo a atualização de firmware em campo.

Alguns fabricantes se referem a memórias Flash de programa (com poucos setores grandes), e de dados (com muitos setores pequenos, como 512 bytes). Estas últimas são mais apropriadas para armazenamento de arquivos, utilizando-se estruturas especiais que evitam que os acessos sejam concentrados sempre nos mesmos setores.

Por último, temos a EEPROM (Eletrically Erasable PROM) ou NVRAM (Non-volatile RAM), que é outro tipo de memória que pode ser gravado e apagado diretamente no circuito. As diferenças entre a EEPROM e a Flash são a tecnologia de implementação da memória no chip e a EEPROM normalmente ter uma capacidade menor e efetuar o apagamento internamente dando a impressão de que cada posição pode ser alterada individualmente.

Memória RAM

A memória RAM é uma memória onde leitura e escrita podem ser feitas à vontade, porém o conteúdo é perdido quando ela perde a alimentação. A RAM é um recurso escasso nos microcontroladores, exceto nos modelos mais avançados (e caros). Memórias acima de 2K são muitas vezes luxo e memórias abaixo de 512 bytes não são incomuns.


Nenhum comentário: