[GERAL] duvida sobre os tipos de memoria interna

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

[GERAL] duvida sobre os tipos de memoria interna

Mensagempor rcakto » 09 Set 2010 02:34

ola pessoal... aqui estou eu novamente incomodando voces...

comparando com os PICs, o programa e gravado na cache, mas e no arm? eu so vejo propagande de tanto de flash e ram, entao...

onde o programa fica gravado?? flash ou ram?
se a ram e volatil e quando corta a alimentação ela apaga, pq eu iria gravar meu programa nela ou uma função??
e a eeprom?? os arms não tem eeprom interna não??
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor RobL » 09 Set 2010 07:46

No ARM o programa é gravado na flash, como em qualquer micro, mas pode ser rodado na RAM, isto se for necessário para alguma aplicação.
EEPROM encarece o produto e no core ARM pode não ser simpático colocar um eeprom super lenta. Mas tem um fabricante (ou a ST ou a Texas, não lembro) que tem "eeprom" na flash, ou seja, a flash pode ser usada similar a eeprom, tem até escrita mais rápida que eeprom, mas tem efeitos colaterais.
Editado pela última vez por RobL em 09 Set 2010 07:50, em um total de 1 vez.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor fabim » 09 Set 2010 07:49

sim, não, sim sim, não e não. hehehe

Meo, assim, o seu programa fica gravado na flash, e ponto final.!!!!!!!

no startup, o arm pega este programa da FLASH e joga para RAM, ou apenas uma parte do programa, ou o programa inteiro, ou apenas uma rotina, ou um array que estava na flash e agora foi para ram..... Tendeu ?

No PC, programa no HD, vai para RAM. no arm da flash vai para RAM.

Não, não tem eeprom, por causa da sua contrução, e porque adição de eeprom inplicaria na forma contrutiva do chip aumentando em muito o seu custo. Mas todos os ARM´S, podem gravar suas flash´s.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor xultz » 09 Set 2010 08:46

no startup, o arm pega este programa da FLASH e joga para RAM, ou apenas uma parte do programa, ou o programa inteiro, ou apenas uma rotina, ou um array que estava na flash e agora foi para ram..... Tendeu ?

Tendi não...
No ARM, o programa não precisa ser copiado para a RAM, ele pode ser executado diretamente da flash, que é o mais comum. Copiar a rotina prá RAM é pepino dos bem grossos, porque todos os ponteiros mudam de endereço. Não é impossível, longe disso, mas a rotina precisa ser linkada para executar na RAM a partir de determinado endereço. No PC isso é comum porque quem faz essa safardanagem é o sistema operacional.

rcakto, os PICs não possuem memória cache, eles também possuem flash. Microcontrolador hoje em dia é tudo assim, tem flash e ram. Na flash grava o programa, a RAM é usada prá guardar as variáveis que o programa usa durante a execução. Alguns micros possuem eeprom, outros usam a prórpia flash prá guardar dados não voláteis.
Ou seja, sob este ponto de vista, PICs, ARMs, AVRs, MSPs, são todos iguais.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor msamsoniuk » 09 Set 2010 09:24

nao exatamente todos iguais... os processadores com arquitetura de harvard possuem barramentos separados para codigo e dados. no caso do PIC, a flash esta diretamente conectada ao barramento de codigo e a ram diretamente conectada no barramento de dados, o que impede a execucao de programas na memoria ram.

no caso do ARM, que tambem usa arquitetura de harvard, possivelmente o barramento de codigo esta conectado em uma cache e o barramento de dados em outra cache. as caches nao podem se misturar, porem quem alimenta a cache eh um controlador simples de barramento com arquitetura unificada de von neumann.

as memorias flash e ram, por sua vez, ficam embaixo desse barramento unificado, entao o ARM pode executar codigo tanto na flash quanto ram.

soh complementando...

outro ponto eh o tamanho da arquitetura. o PIC tem um espaco de enderecamento de flash limitado e ram mais limitado ainda, requerendo comutacao de bancos para enderecar ram adicional. em contrapartida, o ARM possui um espaco de enderecamento de 32 bits e portanto pode ter quanta flash e ram quiser neste espaco.

isso significa que nos modelos com barramento externo vc pode adicionar quanta flash e ram quiser e ela ira funcionar exatamente como a flash e ram on-chip.

xultz escreveu:
no startup, o arm pega este programa da FLASH e joga para RAM, ou apenas uma parte do programa, ou o programa inteiro, ou apenas uma rotina, ou um array que estava na flash e agora foi para ram..... Tendeu ?

Tendi não...
No ARM, o programa não precisa ser copiado para a RAM, ele pode ser executado diretamente da flash, que é o mais comum. Copiar a rotina prá RAM é pepino dos bem grossos, porque todos os ponteiros mudam de endereço. Não é impossível, longe disso, mas a rotina precisa ser linkada para executar na RAM a partir de determinado endereço. No PC isso é comum porque quem faz essa safardanagem é o sistema operacional.

rcakto, os PICs não possuem memória cache, eles também possuem flash. Microcontrolador hoje em dia é tudo assim, tem flash e ram. Na flash grava o programa, a RAM é usada prá guardar as variáveis que o programa usa durante a execução. Alguns micros possuem eeprom, outros usam a prórpia flash prá guardar dados não voláteis.
Ou seja, sob este ponto de vista, PICs, ARMs, AVRs, MSPs, são todos iguais.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor xultz » 09 Set 2010 10:13

Marcelo, os LPC2XXX são Von Neumann, RAM, Flash e registradores estão todos num baramento único de 32 bits.

Eu disse que era tudo igual, se referindo à pergunta incial lá do começo no início deste tópico, a pergunta era se os PICs guardavam o firmware numa cache e os ARM numa flash, e eu quis dizer que não, ambos (e quase todos os demais microcontroladores do mercado) guardam o firmware em flash, então, SOB ESTE PONTO DE VISTA, é tudo a mesma coisa.

É bóvio e ululante que eles guardam diferenças entre si quanto a organização da memória e forma de acesso, mas a pergunta não tinha sido esta.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor rcakto » 09 Set 2010 10:55

blz, resolveu minha duvida... agora so de curiosidade... aonde eu usaria um chip sem memoria flash?
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor fabim » 09 Set 2010 10:59

xuxu, cara. Eu disse porque ele queria saber onde ficava.
Mas o programa pode rodar na flash ou na ram ou misto, tanto faz.

Rcakto, o processador do seu PC não tem flash.....
Tem alguns ARM9 e 11, que tem uma flashzinha bem pitikinha e uma ram de alguns K, e roda tudo externo.
Tipo tu coloca uma flash e ram externa, a flashzinha é só pra pegar o programa da flash jogar para ram e rodar o programa na ram.
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor msamsoniuk » 09 Set 2010 11:12

rcakto escreveu:blz, resolveu minha duvida... agora so de curiosidade... aonde eu usaria um chip sem memoria flash?


depende... em microcontroladores pequenos nao eh usual, mas em microcontroladores grandes a norma eh nao ter flash, pq eles precisam de flashes grandes e isso aumenta demais os custos. alem de diminuir o custo do componente, vc tem a flexibilidade de nao usar nenhuma flash e bootar seu microcontrolador como slave de outro. isso eh particularmente comum no caso de NPs, DSPs e FPGAs.

ao contrario do que o fabim falou, o seu PC possui flash (eh onde fica o firmware basico, que se conhece como BIOS). o que na verdade ele queria dizer eh que essa flash eh externa ao processador.

de forma similar com a ram, ou seja, em microcontroladores grandes a norma eh usar memoria ram externa de maior capacidade e menor custo. e mais ainda, como o barramento externo funciona da mesma forma, vc pode ter flash, eprom, eeprom, sram e perifericos neste barramento. o acesso eh transparente, ou seja, vc le e escreve neles como faria na ram interna de um microcontrolador pequeno.

ou talvez ateh com mais facilidade, visto que nao precisa comutar bancos como no PIC! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor rcakto » 09 Set 2010 11:42

interecante, mas com certezaa não deve ser nada facil programar a esta nivel, visto que voce deve utilizar memoria externa... aja saco para poder lembrar de cada endereco de memoria para ficar tudo rodando devidamente....
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor MarcusPonce » 09 Set 2010 11:50

Nos ARMs voltados para sistemas mais complexos, rodando Linux p/ ex., que necessitam de Mbytes de RAM e de FLASH tem mais um outro fator: um modelo X de ARM pode ficar 5 anos ou mais sendo vendido, e os preços das memórias em US$ por Mbyte vai diminuindo durante este período (imagine a queda de preço das memórias FLASH nos últimos 5 anos, sendo usadas em todos estes pendriv.), logo é mais interessante que sejam chips separados.
Veja que um ARM deste tipo normalmente tem um boot loader interno em ROM mesmo e a RAM interna é pequena e estática. Portanto, memórias que não usam nenhuma tecnologia diferente dos circuitos lógicos da CPU.
Memórias FLASH e RAM dinâmicas (SDRAM, DDR, etc) tornariam necessárias técnicas/passos adicionais para fazer o chip.

Mas com a necessidade enorme de poupar espaço (smartphones p/ ex.), já existem soluções de ARM Cortex A8 com um lado BGA para soldar na PCB e o lado de cima aceita soldar um outro chip contendo as memórias FLASH e DDR.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor rcakto » 09 Set 2010 12:05

so tenho uma coisa a dizer:

I R A D O

mas assim mesmo não deve ser nada facil, vai precisar de uns bons anos de pratica...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor fabim » 09 Set 2010 12:39

samsonite, você entendeu né ?
Ele perguntou de flash integrado!!!! Seu zé b%$W# hehehe;;;
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor mastk » 09 Set 2010 12:53

Bem, um exemplo aqui, de um palhaço, usando CPU sem RAM e FLASH.

http://www.youtube.com/watch?v=nyT4kodUZzw
Editado pela última vez por mastk em 09 Set 2010 13:25, em um total de 1 vez.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor xultz » 09 Set 2010 13:17

rcakto, quase sempre a memória externa (RAM e flash) fica mapeada no barramento, então acessar a memória externa geralmente é o mesmo processo que acessar a interna.
Só que se você tá com um processador parrudo, com uma memória parruda, é porque vai rodar um firmware parrudo (não vai fazer um pisca pisca de árvore de natal com isso). Aí o ideal é usar um sistema operacional pronto (ou quase pronto), como Linux ou Windows CE. Aí, toda essa questão fica a cargo do sistema operacional, e você só se preocupa com a aplicação em si.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Próximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x