Memórias - pessoal.dainf.ct.utfpr.edu.br

Post on 10-Jul-2022

4 views 0 download

Transcript of Memórias - pessoal.dainf.ct.utfpr.edu.br

EL68ESistemas Embarcados

Prof. Douglas RENAUX

Memórias

Tecnologias de Memórias• Voláteis x Não-Voláteis• Estáticas x Dinâmicas• Tipos:

• ROM• PROM• EPROM• Flash• SRAM• SDRAM• DDR

ConceitosOrganização externa x internaDiagramas em blocosPorque usar barramentos ?CPU 32bits x Memória 8 bits

Exemplo – 1/8Processador: Cortex-M3Chips de memória disponíveis: 1M x 8 bitsTotal de memória desejado: 2M x 32 bitsEndereço inicial desta memória no mapa de

endereços do Cortex: 0x1000 0000

Exemplo 2/8Chip de memória (deste exemplo)- para endereçar 1M posições (1.048.576) são

necessárias 20 linhas de endereço. 220 = 1M

AD

/CS/OE/WR

20

8

Exemplo 3/8O espaço de endereçamento do Cortex-M3

comporta 4 GBytes, ou seja,232 = 4.294.967.296.

Para uma memória com 32 bits de largura(4 bytes de largura) existem 1G linhasna memória. Portanto,

30 linhas de endereço são usadas paraselecionar uma das 1G linhas.

As outras duas linhas de endereço (A1 e A0)são usadas para selecionar um dos 4bytes da linha.

Apesar de só se usar 30 bits para o endereçode cada linha, menciona-se os 32 bitsdeixando A1 e A0 em 0.

Portanto, a primeira linha é 0x0000 0000 e a se-gunda linha é 0x0000 0004 (A1 e A0 em 0;A2 em 1). Desta forma, o endereço da linha éo endereço do byte menos significativo daquela linha.

4 GBytesde

espaçode

endereçamento

Byte 0Byte 1Byte 2Byte 3 0x0

0xFFFF FFFC

Byte no endereço0xFFFF FFFF

Endereço decada linha damemória

Exemplo 4/8Se o objetivo é ter 2M x 32 bits = 64 Mbits =

8 MBytes = 2 MWords de memória mapeadosa partir do endereço 0x1000 0000;

Vamos precisar de 8 chips de 8 Mbits cada(1 M x 8 bits = 8 Mbits = 1 MByte).

Colocando 4 destes chips em “paralelo” teremosos mesmos 1M linhas mas agora cada linhaterá 32 bits. Total: 1 MWord.

Concatenando mais 4 chips a partir do endereçoseguinte, teremos os 2 MWord desejados.

Portanto, o primeiro grupo de 4 chips deve sermapeado a partir de 0x1000 0000

Somando-se 4 MBytes (= 1MWord) a partir desteendereço concluímos que o segundo grupo de4 chips deve ser mapeado a partir de0x1040 0000.

Byte 0Byte 1Byte 2Byte 3 0x0

0xFFFF FFFC

A:1 MWord

B:1 MWord

0x1000 0000

0x1040 0000

0x103F FFFC

0x107F FFFC

Byte no endereço0x107F FFFF

Exemplo 5/8Quais linhas de endereço são usadas para cada

finalidade ?

A31 A30 A29 A28 A27 A26 A25 A24 A23 A22 A21 A4 A3 A2 A1 A0...

selecionam o bytedentro de cada linha

estas 20 linhas deendereço selecionam1 linha de memóriadentro de cada regiãode 1 MWord

estas 10 linhas de endereçoselecionam identificam cadauma das regiões de 1 MWord.

Para acessar a região A ovalor destes bits de endereçodeve ser:0001 0000 00 (início: 0x100)Para acessar B:0001 0000 01 (início: 0x104)(observe que para toda a faixade endereços de 0x1004 0000até 0x1007 FFFF estes 10 bits– A31 a A22 – não mudam)

Exemplo 6/8

Exemplo 7/8

O Gerador de Chip Select (integrado aoLPC1857) é um módulo programável.

Neste caso, seria programado para gerar /CS1quando a faixa de endereço fosse:0x1000 0000 a 0x103F FFFF

E para gerar /CS2 na faixa:0x1040 0000 a 0x107F FFFF

Nos demais endereços nem /CS1 nem /CS2estaria ativos.

Exemplo 8/8

A implementação do Gerador de Chip Selectpoderia ser simplesmente:

ROM - Conceitoword line

bit line

Mask ROM (CMOS)

EPROM e EEPROM - conceito

Memoria Flash

Memória Estática (SRAM)Célula Básica

Prática 1/2Acesso a Memória – Estruturas

struct time_str {unsigned long long h;unsigned char a;long long g;signed char b;unsigned short c;signed short d;int e;unsigned f;

};struct time_str t1;

struct time_good {unsigned long long h;long long g;int e;unsigned f;unsigned short c;signed short d;signed char b;unsigned char a;

};struct time_good t2;

#pragma pack(1)struct time_str_packed {

unsigned long long h;unsigned char a;long long g;signed char b;unsigned short c;signed short d;int e;unsigned f;

};struct time_str_packed t3;

Para CodeRedhttps://gcc.gnu.org/onlinedocs/gcc/Structure-Packing-Pragmas.html

Prática 2/2Acesso a Memória – Estruturas

• Escrever código C que escreve em todos os campos destasestruturas.

• Observar (janela disassembly) o tipo de instrução STR usadopara cada campo

• Qual o tamanho ocupado na memória por cada estrutura ?• Imaginando as memórias do exercício anterior, quantos

ciclos de acesso são necessários em cada atribuição ? Quaislinhas de controle (/B0, /B1, /B2, /B3) são ativadas em cadacaso ?

• O que acontece ao se atribuir ao campo ´a´ o valor 1000 ?E ao campo ´b´?

• De que forma o compilador organiza os campos da estruturana memória a partir do endereço inicial da estrutura ?

• Qual estrutura está melhor planejada ?

Memória DinâmicaCélula básica:

1 transistor + 1 capacitor

cas

DRAM Command summary/CS /RAS /CAS /WE Address Command

H x x x x Command inhibit (No operation)

L H H H x No operation

L H H L x Burst Terminate: stop a read or write burst in progress

L H L H column Read from currently active row

L H L L column Write to currently active row

L L H H row Activate a row for read and write

L L H L x Precharge (deactivate) the current row

L L L H x Auto refresh: Refresh one row of each bank, using aninternal counter

L L L L mode Load mode register: Address bus specifies DRAMoperation mode.

SDRAM -Dinâmica e Síncrona

2015O que se usa hoje como memória em sistemas

embarcados ?Tipos de uso:1. Código e dados não voláteis2. Variáveis3. Sistema de arquivos

Código e Dados Não-VoláteisMemória Flash – NOR• Acesso aleatório• Barramentos:

• Endereços• Dados (8/16/32 bits)• Controle

• Dividida em setores (p.ex. 128 Kbytes/setor)– apagamento por setor

• Tamanhos: 8K a 1 GByte• Velocidades: 45 a 150 ns• Possível organização:

• Bootloader• Código app (pode fazer update)• Setores reservados para dados de configuração• Setores reservados para emulação de disco rígido

• Muitas vezes a Flash-NOR está integrada ao microcontrolador

VariáveisArmazenamento em RAM• RAM Estática x DinâmicaRAM estática:• 1 Kbyte a 1 Mbyte• 4/8/16/32 bits – barramento de dados• 8 a 70 ns – tempo de ciclo• Sem refresh => interfaceamento mais simplesRAM dinâmica• Preferencia atual para DDR3• Até 1 Gbyte• 1600 MHz

Sistema de ArquivosSistemas embarcados costumam usar disco em estado sólidoNAND- Flash• Acesso sequencial por setores – equivalente ao acesso de

setores de um HD• Erros em parte do setor: uso de códigos corretores de erro

(como em HD)• Requer poucos pinos de acesso – p.ex. 16• Tamanho: 1 Mbyte a 64 Gbytes• Muito usada em pen-drives• Solução alternativa para S.E. :

• Não usar NOR-FLASH• Alguns microcontroladores sabem dar boot a partir de NAND-

FLASH: copiam da NAND para RAM (equivalente ao PC: HDpara RAM)