[GERAL] duvida sobre os tipos de memoria interna

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Mensagempor polesapart » 10 Set 2010 12:44

rcakto escreveu:ta mas me falaram que ao usar memoria externa vc perde quase todos pinos por culpa dela, pois voce nao pode usar ela em paralelo com outras aplicações senão da pau ou na memoria ou no que vc estara fazendo



Então, em geral, memória externa se usa em sistemas onde não tem pinos faltando (e tê-los é coisa de quem trabalha com PIC! hahaha!) :D

Os pinos usados pra acessar a memória formam um barramento, e nele só podem ser ligados dispositivos apropriados (as excessões se resolvem com buffers/latches), então não se usam da mesma forma que se usa as GPIOs. Nos µCs atuais, sempre sobram GPIOs, que estão fora do barramento ... e tornou-se comum ter um MiniBUS (mini-barramento), que tem largura menor que a memória usada por exemplo, justamente para usar menos pinos. Esta tendência surgiu mas entrou em desuso por mais de uma década em microprocessadores maiores, que foram ao limite dos barramentos paralelos, hoje em dia resolvem o problema atráves de barramentos seriais ou mais frequentemente serial-paralelos (hypertransport é um exemplo, e mais recentemente a coisa passou até aos periféricos, SATA, PCI Express, etc).


Então é como os colegas já apontaram, ram/flash externa se usa quando as opções de memória interna não te atendem. Ou quando vc resolve montar um sistema old-school, usando processadores tradicionais na década de 80, tem muita gente que faz isso como hobby, e só conheço um cara que faz isto profissionalmente ainda nos dias de hoje, mas mesmo ele tem preferido simplificar as coisas: da última vez que conversamos, ele tava usando 8051 com eeprom interna, e feliz da vida. vá entender. :P
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor rcakto » 10 Set 2010 12:57

resumindo, para o meu projeto eu não preciso me preocupar e caso precise tem meios de se obter os dados utilizando-se outras saidas, ex.: ADC que trabalhe via I2C se é que tem...

blz entao, vou voltar a procurar um CHIP adequado para o meu projeto como o LPC2478, se alguem souber me fale XD
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor polesapart » 10 Set 2010 13:19

Me parece que dada a quantidade de coisas que você vai botar no bicho, você vai precisar de um monte de pinos. Mas aparentemente não vai precisar fazer histórico de nenhum desses sensores, nem cálculos complexos, portanto qualquer RAM te serve.

O problema maior que vejo é na questão WLAN que você mencionou, eu não conheço nada que atenda o binômio facilidade de implementação e preço, fora disponibilidade, mas talvez os colegas aqui possam te ajudar.

Quanto ao uso dos ADCs, vai depender do que você precisa, os µCs tão vindo com um ou dois, e alguns multiplexam as entradas de modo que você pode ler vários dispositivos, alternando entre eles. a taxa de amostragem é baixa e a resolução não é das melhores (ok, a resolução nem tende a ser o problema, mas a relação sinal/ruído e a consequente precisão acabam não sendo referência de topo de linha), mas novamente, vai depender do que vc precisa. Se vc só precisar tirar medidas ocasionais de temperatura, pressão, umidade, tá mais que perfeito.

E se/quando vc precisar de algo mais avançado, pode deixar a SPI e/ou I2C disponíveis para expandir.

Como você mencionou LAN/WLAN, a implementação de uma pilha TCP/IP como parte do código pode te dar um pouco de trabalho, mesmo usando uma pilha pronta, pois geralmente vc precisa entender um pouco os conceitos pra poder ajustar o código pra tua necessidade (por exemplo, decidir se implementa ou não um dhcp para auto-configurar a rede como cliente, e mesmo que o faça, se vai ter a opção de sobrepor com configuração manual, etc.).

Os detalhes é que pegam, mas a grosso modo, teu projeto é bem simples. Não vou te indicar um µC em particular pois tem muitos que te atendem, você mencionou o 2478, você já o tem? Pois os 24xx tão mosca branca já :P
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor rcakto » 10 Set 2010 13:36

blz entao, aos poucos vou aprendendo mais... agora sobre o lpc, não, ainda não tenho ele, sou novo em programação arm, so sei o basico do PIC e bastante sobre delphi e PHP, mas achei super interecante a forma de se trabalhar usando ARM.. e como eu sou meio cabeca dura com estudo... se não estou vendo algo na pratica eu meio que desanimo.. entao irei aprender a programar fazendo um projeto para mim..

eu optei pelo 2478 pelo fato de ter tudo que eu preciso nele, e possibilidade de atualizações futuras, como o tamanho de memoria interna e poder usar varios tipos de memorias externas sem problema, sendo que até o momento não vejo lucro usar uma para mim, mas nunca se sabe o dia de amanha.. hj estou programando para mim, amanha posso estar trabalhando para um de voces XD ( menino convencido não!?!? )

ja que a serie 24XX ta praticamente morta, qual eu uso entao?? e se possivel facil de achar aqui no brasil.

PS.: esqueci de falar... sobre a WLAN eu vou usar modulo, assim so preciso fazer a linha de comunicação e projetar o codigo para envio e interpretação
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor polesapart » 10 Set 2010 14:05

Vc mesmo vai desenhar a placa ou tá pensando em um kit ou algo do gênero?
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor rcakto » 10 Set 2010 14:23

de inicio eu irei pedir para alguem projetar uma placa onde nela ira ter:

o mcu;
gravador via rs232; ( irei por uma chave dip para ligar e desligar as conecoes do gravador com o chip )
fonte 3.3V 1.8V 5V, o que precisar somente par auso interno da placa;( entro com 5v e terra, e a palca alimenta tudo nela);
bateria para o relogio;
saida dos pinos em bornes para teste em protoboard, visto que não sei todos os componentes que irei precisar para por em pratica meu projeto.

apos isto, vou pedir para um rapaz aqui do forum que fabrica placas via CNC para fabricar ela.

este está sendo meu plano, mas pode mudar dependendo do rumo disso tudo...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor polesapart » 10 Set 2010 15:02

Como você quer LCD + touchscreen , imagino algumas opções.

a) Algo como um 2478 mesmo. Ele tem 96Kb de sram, o que dá pra brincar legal. As desvantagens: vc teria que escrever 80% do código. Quando eu digo "algo como um 2478", tem que resolver as questões práticas: se o 2478 ou algo equivalente é fácil de achar e cabe no teu bolso, etc. Não tenho resposta a estas perguntas :P

Uma coisa que recordo é que o 2478 tal qual foi lançado era cheio de bugs, o errata sheet dele era enorme. Geralmente a NXP sacaneia os primeiros compradores e lança umas duas ou três correções, quando o chip é bem sucedido e tem volume de vendas. Não sei se é o caso desse, nem sei se houve correções ehhehe. Eu lembro que recebi 1 sample dele, desta versão safada. Descubra se ele tá sendo vendido, se não foi descontinuado.

Se ele não for viável, particularmente eu não conheço (ou no mínimo não recordo) nenhum outro que tenha tantos periféricos num chip só, a não ser os chips com MMU, mas aí vc entra na opção abaixo:

b) Algo que rode Linux. Isto te facilitaria muito o desenvolvimento do software, não apenas por te dar uma plataforma robusta, mas porque tá cheio de bibliotecas prontas pra acessar os periféricos, até mesmo toolkitos gráficos completos pra vc fazer uma interface com o usuário usando o LCD como framebuffer (do console de texto do linux ao servidor X, passado por algo como DirectFB ou QT embedded, tem N opções. Eu recomendaria uns anos atrás GTK + framebuffer, mas *acho* que foi descontinuado).

E já que estamos falando em NXP, algumas opções seriam o LPC3250 ou algo dentro da família LPC31xx ... Mas vc precisaria da SRAM externa, e provavelmente de flash ou pelo menos rodar de um Cartão SD :-)

Alguns colegas podem te apontar pro fato de que você pode encontrar uma solução na classe "a" acima, ou seja, um chip sem MMU (recursos de memória virtual, necessários pra rodar o Linux tradicional), que rode ucLinux ou alguma plataforma equivalente em recursos. Mas vc provavelmente vai ter que usar memória externa, e neste caso, o que é uma liberação involuntária de gases pra quem está defecado? Eu montaria um parrudão já logo de uma vez :D ehhehhee

Em termos de preço/disponibilidade, neste caso vc talvez encontre algo mais legal de outro fabricante, talvez até com outro core que não ARM, quando se usa Linux não faz muita diferença :P
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor msamsoniuk » 10 Set 2010 16:38

a configuracao dela nao eh ruim, mas 36 dolares por 1Mx16 eh bem pesado, pois pelo mesmo preco vc compra uma MT48LC32M16A2 de 32Mx16. de fato, uma MT48LC4M16A2 com 4Mx16 vc encontra por 3 ou 4 dolares por ae e tem a vantagem de ter menos pinos para rotear em comparacao com uma SRAM.

quanto a largura do bus, faz diferenca no ARM? como o controle de bus eh desacoplado do core atraves de caches separadas para instrucoes e codigo, acredito que seja indiferente. no coldfire e powerpc eh possivel trabalhar com bus de 8, 16 ou 32 bits sem problemas, apesar das instrucoes terem tamanho fixo (16, 32 ou 48 bits).

tcpipchip escreveu:Olha...

O uclinux vai muito bem com SRAM (STATIC RAM), mas o que mata é o preço dela...(CYPRESS) (16 bits + 16 bits)....cy7c1061

Eu testei uclinux no LPC2398 com elas (sem controlador de SDRAM)...baseado no projeto do ULRICH...funciona muito bem...até hoje roda :)

Outra opcao sao as SRAM de 8 bits... (SAMSUNG KM68512), com bancos de 4 CI de cada, para formar o barramento de instruções/dados de 32 bits...tem o modo THUMB...mas...nao foi...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 10 Set 2010 17:00

vc tem que usar o componente certo para a aplicacao certa. um componente com memorias flash e sram internas muito possivelmente foi projetado para usar apenas estas memorias internas e tentar usar barramentos externos possivelmente eh algo raro e que consome os pinos. por outro lado, um componente sem memorias internas eh projetado para usar memorias externas sempre, o que significa que aqueles pinos sempre estao disponiveis e nunca sao compartilhados com outra funcionalidade.

rcakto escreveu:ta mas me falaram que ao usar memoria externa vc perde quase todos pinos por culpa dela, pois voce nao pode usar ela em paralelo com outras aplicações senão da pau ou na memoria ou no que vc estara fazendo

ex.:

vamos dizer que vc vai ler um sinal analogico e o mesmo pino e usado para a memoria, se o sinal ficar negativo estraga a memoria...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 10 Set 2010 17:03

vc tem que usar o componente certo para a aplicacao certa. um componente com memorias flash e sram internas muito possivelmente foi projetado para usar apenas estas memorias internas e tentar usar barramentos externos possivelmente eh algo raro e que consome os pinos. por outro lado, um componente sem memorias internas eh projetado para usar memorias externas sempre, o que significa que aqueles pinos sempre estao disponiveis e nunca sao compartilhados com outra funcionalidade.

rcakto escreveu:ta mas me falaram que ao usar memoria externa vc perde quase todos pinos por culpa dela, pois voce nao pode usar ela em paralelo com outras aplicações senão da pau ou na memoria ou no que vc estara fazendo

ex.:

vamos dizer que vc vai ler um sinal analogico e o mesmo pino e usado para a memoria, se o sinal ficar negativo estraga a memoria...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 10 Set 2010 17:06

vc tem que usar o componente certo para a aplicacao certa. um componente com memorias flash e sram internas muito possivelmente foi projetado para usar apenas estas memorias internas e tentar usar barramentos externos possivelmente eh algo raro e que consome os pinos. por outro lado, um componente sem memorias internas eh projetado para usar memorias externas sempre, o que significa que aqueles pinos sempre estao disponiveis e nunca sao compartilhados com outra funcionalidade.

rcakto escreveu:ta mas me falaram que ao usar memoria externa vc perde quase todos pinos por culpa dela, pois voce nao pode usar ela em paralelo com outras aplicações senão da pau ou na memoria ou no que vc estara fazendo

ex.:

vamos dizer que vc vai ler um sinal analogico e o mesmo pino e usado para a memoria, se o sinal ficar negativo estraga a memoria...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 10 Set 2010 17:09

vc tem que usar o componente certo para a aplicacao certa. um componente com memorias flash e sram internas muito possivelmente foi projetado para usar apenas estas memorias internas e tentar usar barramentos externos possivelmente eh algo raro e que consome os pinos. por outro lado, um componente sem memorias internas eh projetado para usar memorias externas sempre, o que significa que aqueles pinos sempre estao disponiveis e nunca sao compartilhados com outra funcionalidade.

rcakto escreveu:ta mas me falaram que ao usar memoria externa vc perde quase todos pinos por culpa dela, pois voce nao pode usar ela em paralelo com outras aplicações senão da pau ou na memoria ou no que vc estara fazendo

ex.:

vamos dizer que vc vai ler um sinal analogico e o mesmo pino e usado para a memoria, se o sinal ficar negativo estraga a memoria...
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor polesapart » 10 Set 2010 17:16

Marcelo Samsoniuk escreveu:quanto a largura do bus, faz diferenca no ARM? como o controle de bus eh desacoplado do core atraves de caches separadas para instrucoes e codigo, acredito que seja indiferente. no coldfire e powerpc eh possivel trabalhar com bus de 8, 16 ou 32 bits sem problemas, apesar das instrucoes terem tamanho fixo (16, 32 ou 48 bits).


Tou assumindo que o colega quis dizer um LPC 2388, pelo menos não conheço um 2398 ainda hehhe.

Bom, neste caso o core é um arm7tdmi, von neumann e sem caches. O barramento local dele é de 32 bits address & data, e os acessos a memória externa são feitas através de um controlador de memória. O core informa o tamanho da leitura, que precisa ser naturalmente alinhado. O controlador de memória pode fazer a mágica que quiser pra ler os dados, inclusive geralmente eles tem um buffer de algumas words com 0 wait-states & um mecanismo de busca sequencial que trás dados pra este buffer antes que a cpu peça, coisas do gênero, na prática seria um cache, mas é bem pequeno e feito pra não interferir de forma descontrolada (tudo é configurável) nos tempos de acesso.

No caso deste aí em particular, ele tem o controlador mais limitado que já vi: ele é feito pra vc ligar sram de 8 bits mesmo, tem um bus de 8 bits de dados e 16 de endereços, e tem dois chip-selects, então na prática endereça no máximo 128kb de memória. E o controlador de memória é tosqueira, não é pra preguiçosos como eu: ele requer que os acessos sejam feitos em 8 bits.

Com 128k endereçáveis externamente, + 96 de memória interna total, eu não creio que dê pra rodar uclinux neste tralha, ou tou enganado? :P
Warning: time of day goes back (-163479us), taking countermeasures. :)
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor rcakto » 10 Set 2010 17:49

bom como o meu caso e mais trabalhar ocm perifericos do que com memoria e visto que sou NOOB, e melhor eu procurar algo parecido com o 2478... muita memoria e todos os perifericos, na parte do linux, eu nem faco ideia de como trabalhar com ele, mas sei que nao rola usar windows CE visto que ele é pior do que versao start edition para PC... bom vou-me indo que tenho aula, mas gostaria de alguem me indicase qual ic usar... e se possivel da nxp, pois to com uns 2 livros aqui sobre ele.. entao ja tenho uma ajudinha para comecar a programar deste fabricante...
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor tcpipchip » 10 Set 2010 18:06

"Com 128k endereçáveis externamente, + 96 de memória interna total, eu não creio que dê pra rodar uclinux neste tralha, ou tou enganado? :P"

Estás enganado...pelo menos eu precisei no mínimo 2Mb no LPC23....
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

AnteriorPróximo

Voltar para ARM

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

x