Página 1 de 6

memoria BOOT

MensagemEnviado: 25 Set 2010 17:29
por rcakto
olá, eu estava lendo o manual do usuario do LPC2478 e nele eu vi que da para usar um chip externo para o boot, mas com que finalidade existe essa memoria e quais as formas de usar ela ( com exemplo por favor...não estou falando de codigo...)???

MensagemEnviado: 25 Set 2010 17:49
por Djalma Toledo Rodrigues

MensagemEnviado: 25 Set 2010 18:13
por rcakto
djalma, em informatica eu sei, mas eu quero saber nos microcontroladores?? ja vi muitos projetos pela net onde eles não estao rodando um sistema operacional, MAS e preciso por codigo A no boot interno e codigo B na cache mas o codigo B simplesmente e um webserver.... por isso que eu perguntei para que serve e se possivel exemplos de aplicações onde faca a necessidade de se criar ou alterar um codigo de boot.. caso possivel de um exemplo de codigo BEM resumido pois e so para entendimento...

MensagemEnviado: 25 Set 2010 18:53
por Djalma Toledo Rodrigues
Esses µC podem escrever dados na Flash

então podem ser programados, ou ter seu programa atualizado, a distância via um Canal de Comunicação.

DJ

MensagemEnviado: 25 Set 2010 19:01
por rcakto
a sim, blz entao.. e que eu tava futucando a placa onde achei uma sdram e um chip de memoria de boot, por isso que eu to perguntando.. achei estranho um chip de boot em um modem... até entao eu achava que boot somente seria encontrado nos PCs e o boot dos mcus seriam para iniciar algumas funcoes internas mas que nao precisaria em me preocupar no momento em entendelos melhores pois nao irei trabalhar com OS agora... mas vejo que existem muitas possibilidades de se trabalhar com eles!!!

Vlw djalma.. me ajudou muito XD!!

MensagemEnviado: 25 Set 2010 19:23
por mastk
Dependendo podem bootar por:

SPI.
I2C.
ROM/FLASH/RAM ou qualquer coisa ligar ao barramento externo.
ROM/FLASH/RAM interna.

Capaz de ter outros modos de boot ainda, mas obviamente depedem da MPU/MCU em questao.

MensagemEnviado: 26 Set 2010 00:48
por msamsoniuk
como eu jah comentei anteriormente, os processadores modernos incluem cada vez mais opcoes e funcionalidades por uma questao de praticidade e flexibilidade. quando mais aplicacoes diferentes o processador atender, maior vai ser o volume de vendas e assim menor o preco. soh para contrastar, vou citar o exemplo das opcoes de boot do blackfin tipico e pq diabos estas opcoes existem:

a) flash paralela interna: igual qq outro processador single-chip, porem nao esta disponivel em todos os modelos e esta disponivel em apenas uma capacidade (nao lembro se eh 1MB ou 4MB).

b) flash paralela externa: permite maior capacidade e menor custo que a flash paralela interna e eh mais rapida que as flashes seriais.

c) flash serial externa: tem opcoes de ser spi e i2c, sendo mais barato e mais simples de usar que a flash paralela, porem com menor performance.

d) memoria otp interna: todas as memorias flash possuem um problema eh que a possibilidade de serem alteradas por software. a memoria otp porem nao possui essa flexibilidade pq soh pode ser gravada uma unica vez e jamais alterada por software... porem a otp possui pequena capacidade.

e) interface serial: eh possivel bootar pela serial e descarregar uma imagem de software para a sdram... em geral usa-se isso para gravar as memorias flash internas e externas!

f) memoria sdram: possivelmente foi criado como complemento para o boot pela interface serial, mas alguem descobriu que nao era necessario.

g) interface paralela: eh possivel bootar a partir de uma interface paralela com outro processador, onde o blackfin fica como slave e o outro processador como master.

h) memoria nand: similar a flash externa paralela, mas muito melhor... porem por algum motivo a analog colocou a interface nand compartilhada com perifericos importantes. no bf527, por exemplo, usar a nand mata a interface ethernet e isso gera fortes sentimentos de frustracao...

a maioria das implementacoes usam as opcoes 'b', 'c' e 'g'. a opcao 'e' costuma ser utilizada para gravar as memorias nas opcoes 'b' e 'c'. a escolha vai conforme o gosto, pq cada opcao tem vantagens e desvantagens.

MensagemEnviado: 26 Set 2010 10:37
por rcakto
eu so fico triste em usar memoria externa pq ela SEMPRE esta eliminando os pinos de todos os perifericos essenciais como o LCD, USB do LPC2478... os 3 compartilham de pinos entre si.. a memoria acaba com quase tudo, o LCD 24bits TFT acaba com a memoria e o USB OTG e por ai vai.... acho que os fabricantes NUNCA irao dar acesso a tudo sem perder nada...

MensagemEnviado: 26 Set 2010 17:14
por msamsoniuk
nao generalize! :)

eh fato que eu nao conheco muitos fabricantes, mas soh vi esse tipo de aberracao nos processadores da NXP! se vc tivesse dado uma olhada com mais carinho no MCF52277 que eu indiquei, perceberia que ele possui grupos separados de pinos para o flexbus (barramento externo), SDRAM/DDR, USB OTG, interface LCD, interrupcoes, RTC, touchscreen, I2C, SPI, UARTs e DMA.

se vc nao usar as funcionalidades, a maioria dos pinos pode ser usado como GPIO, porem com barramento externo vc pode ter qualquer quantidade de GPIO que quiser usando buffers 74F244 e latches 74F374. das funcionalidades compartilhadas, vc tem opcao de matar uma das duas UARTs para usar a interface SSI de audio, matar a I2C para usar a interface CAN e matar os canais de DMA externos para usar funcionalidades de entrada ou saida de timers. estas funcionalidades todas eventualmente sao alternadas em mais de um pino, o que significa que vc tem opcoes em outros pinos que nao for usar!

mas eh claro que nao eh um ARM e, ironicamente, apesar de ser melhor em todos os sentidos, as pessoas vao te ridicularizar e ateh fazer ameacas de morte se vc optar por um coldfire.

vc nao vai ter com quem discutir e vai ter que frequentar foruns americanos, pq coisas melhores assim meio que nao chegam ateh o terceiro mundo. certamente o suporte que vao te fornecer vai ser melhor, pois questoes obtusas como "como configuro minha ddr3" e "estou com problemas para trafegar jumbo packets na minha pci-expressa" sao o dia a dia nestes foruns mais avancados.

mas a sua vida sera chata e sem emocao, pq tudo vai funcionar.

rcakto escreveu:eu so fico triste em usar memoria externa pq ela SEMPRE esta eliminando os pinos de todos os perifericos essenciais como o LCD, USB do LPC2478... os 3 compartilham de pinos entre si.. a memoria acaba com quase tudo, o LCD 24bits TFT acaba com a memoria e o USB OTG e por ai vai.... acho que os fabricantes NUNCA irao dar acesso a tudo sem perder nada...

MensagemEnviado: 26 Set 2010 18:24
por rcakto
Marcelo, eu dexei de lado pq me falaram que somente posso usar o coldfire E PRECISO DE UM JLINK... ou eu compro o jlink ou eu compro o chip e faco uma placa proto pra mim... entao f**** geral... mas futuramente irei dar uma olhada em outras familias e fabricantes apos aprender o basico...

MensagemEnviado: 26 Set 2010 19:37
por msamsoniuk
opa! te passaram duas dicas furadas entao! :)

diferentemente do ARM, o coldfire nao faz debug via JTAG, portanto vc nao precisa cair em uma interface JLINK carissima como estas:

http://www.segger-us.com/jlinkjtagemulator.htm

no coldfire a interface JTAG soh serve para boundary scan e, de certa forma, o hardware carissimo que eu imagino que existe dentro de um JLINK jah esta integrado on-chip no coldfire, de modo que vc usa uma interface BDM para debug:

http://www.s4wsbox.com/?q=node/46

bem mais em conta... porem vc nao precisa de um BDM para usar o coldfire. quem te passou essa dica furada provavelmente estava pensando em um coldfire v1, que soh boota a partir de memoria interna.

nao eh o caso do MCF52274 (versao TQFP do MCF52277), que eh um processador maior e sempre boota da memoria externa e que pode ser uma EPROM paralela ou uma EEPROM/FLASH SPI. e no caso de uma FLASH SPI o negocio fica muito melzinho na chupeta, pq qq outro microcontrolador pode gravar essa memoria FLASH SPI, ou seja, vc nao precisa gastar dinheiro com um BDM para fazer esse trabalho. a minha sugestao eh colocar jumpers entre o processador e a memoria FLASH SPI de modo que possa desconectar eletricamente do processador e conectar em um microcontrolador qualquer, que funcionaria como interface conversor RS232/SPI entre um PC e a memoria SPI. outra alternativa eh montar a memoria socketeada e gravar externamente. enfim, o fato eh que dispensa BDM.

mas se vc realmente precisar fazer debug, ainda assim nao precisa desembolsar nada, pq vc pode montar um BDM usando componentes baratos e de facil aquisicao:

http://usbdm.sourceforge.net/USBDM_V4.0 ... index.html

mas eu francamente nunca vi necessidade, principalmente se vc for usar um codigo solido e testado como o uboot e uclinux.

bom, dah uma olhada no esquematico do reference design do MCF52277:

http://www.freescale.com/files/32bit/ha ... EVBSCH.pdf

eh bem completao, com LCD, MMC, USB OTG, 64MB de DDR, 16MB de FLASH paralela, 4MB de FLASH SPI e interface de audio.

rcakto escreveu:Marcelo, eu dexei de lado pq me falaram que somente posso usar o coldfire E PRECISO DE UM JLINK... ou eu compro o jlink ou eu compro o chip e faco uma placa proto pra mim... entao f**** geral... mas futuramente irei dar uma olhada em outras familias e fabricantes apos aprender o basico...

MensagemEnviado: 26 Set 2010 20:08
por rcakto
resumindo, o unico incoveniente e o fato de precisar de um hardware para gravar chip, assim mesmo sendo este mais barato que um jlink, e ele não grava o codigo em memoria externa como os chips da NXP.

to certo??

MensagemEnviado: 26 Set 2010 20:33
por msamsoniuk
nao entendi bem a frase, mas vamos lah...

no ARM vc precisa do JLINK se for utilizar a memoria interna ou se precisar debugar. nao sei que tipos de memoria o ARM boota, mas possivelmente vc poderia usar uma memoria EPROM paralela, por exemplo, e usar um gravador de EPROM de baixo custo, dispensando assim o JLINK.

no coldfire, em especial no MCF52277, vc precisa do BDM apenas se precisar debugar. ele boota sempre de memoria externa, seja uma EPROM paralela, seja uma FLASH SPI. no caso da EPROM vc poderia fazer como citei no ARM, mas certamente eh muito mais simples e barato fazer um gravador para a SPI.

ou seja, a diferenca entre eles eh:

- memoria interna: o MCF52277 nao possui memoria interna, enquanto os ARMs que vc citou possuem memoria interna (mas que nao serve para uboot e uclinux).

- memoria externa: o MCF52277 boota de FLASH paralela ou SPI, enquanto os ARMs que vc citou acho que bootam apenas de FLASH paralela (a FLASH SPI eh melhor por ser mais simples).

existem tambem diferencas em termos de recursos. por exemplo, a resolucao do LCD (1024x768 nos ARMs que vc citou contra 800x600 no MCF52277), quantidade de cores, velocidade do core, memoria cache, etc. mas daih soh lendo os datasheets a fundo para ver tudo! :)

rcakto escreveu:resumindo, o unico incoveniente e o fato de precisar de um hardware para gravar chip, assim mesmo sendo este mais barato que um jlink, e ele não grava o codigo em memoria externa como os chips da NXP.

to certo??

MensagemEnviado: 26 Set 2010 22:03
por rcakto
so uma pergunta que até hj eu nao sei a resposta... o codigo para memorias são feitos em linguagem especial, uso de um programa especial ou simplesmente programe como sempre e coloca a porcaria do .HEX dentro dela??

MensagemEnviado: 26 Set 2010 22:39
por MarcusPonce
O JLINK não é necessário para descer o código para a placa, embora também sirva para isso.

Normalmente os ARMs contém um pouco de código que o fabricante deixa gravado na memória Flash dele ou em uma memória ROM interna.
Este código roda primeiro após o RESET e serve para dar boot e procurar pelo seu código nas memórias externas ou FLASH interna ou inicializar uma porta serial do ARM e aceitar alguns comandos por ela.
Estes comandos servem para descer o código pela porta serial, por exemplo, e armazenar na Flash interna. Se o micro não tem Flash interna é possível descer o código na RAM e de lá gravá-lo na FLASH externa (caso de um ARM9 que já trabalhei)

Um dos aplicativos para descer o código para os NXP via porta serial é este:
http://www.flashmagictool.com/
Os micros que ele consegue programar:
http://www.flashmagictool.com/supporteddevices.html