Mass Storage using internal flash memory

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

Mass Storage using internal flash memory

Mensagempor barboza » 28 Jan 2009 21:47

Alguem aqui já trabalhou ou tem as dicas de como implementar um mass storage com a flash interna do LPC2148?

pensei em algo como salvar 1 ou 2 arquivos binários na flash como massa de dados para um pequeno programa.

Estive pesquisando sobre as bibliotecas da Keil (RL-FlashFS)....

http://www.keil.com/support/man/docs/rl ... ternal.htm

Até onde isso é uma restrição?

If the device uses an Error Correction Code (ECC) to correct single bit flash errors, then RL-FlashFS will not work. Such devices are, for example, NXP LPC213x and LPC214x devices.


Alguma dica?
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor proex » 29 Jan 2009 06:10

Algumas restrições são:

A memoria flash é formada por paginas de 512 bytes ou 1024 bytes, dependendo do modelo.

Se vc precisar alterar um unico byte em seu arquivo, vc terá que mover todos os 512 bytes (ou 1024) para a Ram de dados, alterar o byte desejado e gravar novamente esse 512 bytes de volta na Flash.

Se alguns segundos depois vc precisar alterar outro byte, todo o processo deverá ser repetido.

Nao é um forma elegante de trabalhar com memorias Flash.

O problema maior, e mais perigoso na minha opinião, é que a flash não suporta muitos ciclos de escrita. Vc poderá danificar seu chip rapidamente, se sua aplicação ficar lendo e escrevendo frequentemente.

Não sei precisamente quantos ciclos de escrita a Flash do ARM suporta, mas geralmente nao passa de 1000 vezes.

Vc deve estimar a quantidade de escrita no seu arquivo na Flash durante a vida util do seu produto, para nao ter surpresas desagradaveis quando ele ja estiver no mercado.

Pense na possibilidade de adotar uma memoria serial externa para isso, são baratas e nao poem em risco a vida util do seu produto.


.
proex
Dword
 
Mensagens: 2101
Registrado em: 11 Out 2006 14:05
Localização: São Paulo

Mensagempor barboza » 29 Jan 2009 06:43

A questão da paginação é conhecida e não seria um problema tão grave pois a atualização dos arquivos seria na ordem de 1x ao ano...

Quando a memória serial é outra opção, mas como já tenho a interna, porque não usar.

Só fiquei com o receio da questão do ECC que o Keil comentou.

Valeu os comentários.

Conhece outra biblioteca que faz isso?
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor MarcusPonce » 29 Jan 2009 12:00

Barboza, se você permite uma sugestão mais radical levando em conta que:

a) Os dados dentro do LPC2148 só serão lidos pelo seu firmware mesmo
b) São apenas 1 ou 2 arquivos

Você poderia descartar este enfoque de gravar arquivos e pensar em gravar sua massa de dados em um endereço conhecido da FLASH.
O LPC2148 já tem rotinas internas (usadas para download de programas pela interface serial dele) que seu firmware pode acessar e elas vão apagar e gravar um bloco na Flash por você, retornando se OK ou ERRO, cuidando do ECC elas mesmas.
Mas ainda permanece a necessidade de regravar um bloco inteiro se precisar trocar só um byte. As rotinas trabalham com 256, 512, 1024 ou 4096 bytes.
Acredito que ficará mais fácil que o sistema de arquivos.

Veja no User Manual, tópico IAP, como fazer.
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP

Mensagempor barboza » 29 Jan 2009 14:08

Oi Marcus!

A questão é os arquivos/dados devem ser atualizados pelo cliente, por isso pensei no modo mass storage via USB, onde o cara pluga o aparelho na USB do PC, abre um disco virtual (~400K) e ele atualiza o(s) arquivo(s).

Assim é mais fácil e comercial.....
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor polesapart » 29 Jan 2009 21:12

Olha, não sei se foi no site da keil ou do iar, mas eu já baixei aqui pro hd em alguma birosca que não tou achando, um codigo de exemplo que fazia exatamente isto: um mass storage usb que referenciava a flash do lpc. dá uma pesquisada num destes sites que deve ter algo.

[]s
Avatar do usuário
polesapart
Byte
 
Mensagens: 477
Registrado em: 19 Nov 2007 12:56
Localização: Curitiba

Mensagempor MarcusPonce » 29 Jan 2009 21:33

Ok, agora percebi. Realmente do lado do usuário fica bem prático.
Também lembrei que já nos encontramos em outro tópico, com o Jean Fernandes, sobre este mesmo assunto.

Você já testou este exemplo abaixo ?
http://www.keil.com/download/docs/307.asp
MarcusPonce
Byte
 
Mensagens: 166
Registrado em: 12 Fev 2007 13:58
Localização: Campinas - SP


Voltar para ARM

Quem está online

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

cron

x