48
EL68E Sistemas Embarcados Prof. Douglas RENAUX Memórias

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

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Memórias - pessoal.dainf.ct.utfpr.edu.br

EL68ESistemas Embarcados

Prof. Douglas RENAUX

Memórias

Page 2: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

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

Page 3: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 4: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 5: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 6: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 7: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 8: Memórias - pessoal.dainf.ct.utfpr.edu.br

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)

Page 9: Memórias - pessoal.dainf.ct.utfpr.edu.br

Exemplo 6/8

Page 10: Memórias - pessoal.dainf.ct.utfpr.edu.br

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.

Page 11: Memórias - pessoal.dainf.ct.utfpr.edu.br

Exemplo 8/8

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

Page 12: Memórias - pessoal.dainf.ct.utfpr.edu.br

ROM - Conceitoword line

bit line

Page 13: Memórias - pessoal.dainf.ct.utfpr.edu.br

Mask ROM (CMOS)

Page 14: Memórias - pessoal.dainf.ct.utfpr.edu.br

EPROM e EEPROM - conceito

Page 15: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 16: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 17: Memórias - pessoal.dainf.ct.utfpr.edu.br

Memoria Flash

Page 18: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 19: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 20: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 21: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 22: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 23: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 24: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 25: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 26: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 27: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 28: Memórias - pessoal.dainf.ct.utfpr.edu.br

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 ?

Page 29: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

1 transistor + 1 capacitor

Page 30: Memórias - pessoal.dainf.ct.utfpr.edu.br

cas

Page 31: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 32: Memórias - pessoal.dainf.ct.utfpr.edu.br

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.

Page 33: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 34: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 35: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 36: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 37: Memórias - pessoal.dainf.ct.utfpr.edu.br

SDRAM -Dinâmica e Síncrona

Page 38: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 39: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 40: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 41: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 42: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 43: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 44: Memórias - pessoal.dainf.ct.utfpr.edu.br
Page 45: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 46: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 47: Memórias - pessoal.dainf.ct.utfpr.edu.br

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

Page 48: Memórias - pessoal.dainf.ct.utfpr.edu.br

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)