Ir para conteúdo
  • Cadastre-se

Usando Arduino como gravador/leitor de bios.

Avalie este tópico:


richarddmb

Posts em destaque

Em 14/02/2016 às 07:01, richarddmb disse:

Então William, como o amigo Wellington disse, o arduino já conta com a tensão de 3,3v. Projetos alguns chips como o SST25VF016B necessitam de uma voltagem maior (5v) mas para isso é necessário adicionar alguns resistores. Outros chips mais novos trabalham com 1.8v, então aconselho olhar no datasheet para não haver erros. Caso pegue algum desses de 1.8v, aconselho dar uma olhada no fórum, ví dicas interessantes de como gravar essas bios adicionando alguns resistores pois muitos gravadores profissionais não trabalham com essa tensão ainda.

Abaixo algumas imagens que podem ajuda-lo, mas aconselho visitar o site e dar uma conferida no conteúdo caso seja de seu interesse.

Você não tem permissão para ver links. Faça login ou cadastre-se.

5v.jpg.eba330feea7c2325cbf82d59c1093065.jpg

P1v1_arduino328.jpg.8e8f1c3d40714c416bc28f27c95b627c.jpg

P1v2_arduino1280.jpg.8ef66d854c4ecfe7cf87493afb5bf983.jpg

P3v1_dil8_so8_spi.jpg.b88d02550cda7c8c0806e5679beb52e8.jpg

P3v2_so16_spi.jpg.0e63cc7e92c77466d48ac32ef9e6d109.jpg

 

Outra alternativa é usar um 4050N ou um conversor de shift level, para adequar as voltagens que entram no flash.
Certa vez eu estava tentando gravar uma eeprom de uma placa mãe, não consegui de maneira alguma usando divisores de voltagem.
Substituí pelo 4050N e foi de primeira.
Basicamente precisa atentar para o que entra e o que sai no chip, pois o 4050N é unidirecional. Ou seja, o MISO sai do flash para o Arduino. Então a ligação deve ser feita invertida, ou simplesmente ligado direto na arduino. Os demais todos saem do Arduino para o flash.

Editado: por oferreiro
  • Joinha 1
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Primeiramente desculpem-me por estar criando um zumbi, ressuscitando o tópico, não gosto dessas coisas porem me entecerei muito pelo método de gravação pois estou com um note parado por causa da bios e gostaria de saber ou melhor entender como devo montar para a bios mxic mx25l6406e, se alguém puder me explicar para entender dai tento aplicar em outras bios para teste. Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Gabrielgomez Por ser um tópico antigo acredito que será difícil achar resposta. Porem encontrei esse site abaixo, acabei não fazendo pois tive problemas em fazer o ubuntu reconhecer o arduino e acabei comprando outra bios para a maquina, mas tente fazer e qualquer coisa manda o resultado inbox.

Você não tem permissão para ver links. Faça login ou cadastre-se.

 

Em 03/04/2019 às 09:28, Gabrielgomez disse:

Gente sou um  pouco leigo em questão de Arduíno, como devera ser montado o esquema para comunicar com o chip da bios?

A imagem 5 não carrega.

 

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

@richarddmb ola Ricardo, estou tentando fazer isso mas estou com uma duvida. quando faço  o comando make u2 && make flash-u2, dá isto,

make clean
make[1]: Entering directory '/root/frser-duino'
rm -f frser-duino.bin
rm -f frser-duino.out
rm -f frser-duino.hex
rm -f frser-duino.s
rm -f *.o
make[1]: Leaving directory '/root/frser-duino'
DFLAGS= FRBAUD=115200 make all
make[1]: Entering directory '/root/frser-duino'
avr-gcc -mmcu=atmega328p -DBAUD=115200 -Os -fno-inline-small-functions -fno-tree-switch-conversion -frename-registers -g -Wall -W -pipe -flto -fwhole-program -std=gnu99  -Ilibfrser -std=gnu99 -I. -o frser-duino.out main.c uart.c spihw.c libfrser/frser.c libfrser/udelay.c libfrser/spilib.c libfrser/spihw_avrspi.c
avr-size frser-duino.out
   text       data        bss        dec        hex    filename
   1426          0       1036       2462        99e    frser-duino.out
make[1]: Leaving directory '/root/frser-duino'
BLBAUD=115200 SERIAL_DEV=/dev/ttyACM0 make program
make[1]: Entering directory '/root/frser-duino'
avr-objcopy -j .text -j .data -O ihex frser-duino.out frser-duino.hex
avrdude -c arduino -p m328p -P /dev/ttyACM0 -b 115200 -U flash:w:frser-duino.hex
avrdude: ser_open(): can't open device "/dev/ttyACM0": No such file or directory

avrdude done.  Thank you.

make[1]: *** [Makefile:70: program] Error 1
make[1]: Leaving directory '/root/frser-duino'
make: *** [Makefile:90: flash-u2] Error 2

esses erros sao normais?

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois...
  • 5 meses depois...
  • 4 semanas depois...

@richarddmb , eu já fiz todas as conexões e conferi tudo; a instalação do software de gravação ocorreu tudo ok; estou com o Kali mesmo. Instalei independente num hd à parte de 40GB.

Bom, mas está aparecendo isso:

[ wagner@kali:~/frser-duino$ flashrom -p serprog:dev=/dev/ttyACM0:115200 -r backup
bash: flashrom: comando não encontrado ]

[ wagner@kali:~$ flashrom -p serprog:dev=/dev/ttyACM0:115200 -r backup
bash: flashrom: comando não encontrado ]

- Outra coisa: para esse procedimento não precisamos trabalhar com sketch's?

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...

desculpe ressuscitar um post antigo, mas estou tendo problemas ao gravar o firmware no arduino, já tentei tanto num atmega2560 quanto num ftdi-uno
aryel@aryel-VirtualBox:~$ cd frser-duino

aryel@aryel-VirtualBox:~/frser-duino$ sudo make ftdi && make flash-ftdi

make clean

make[1]: Entrando no diretório '/home/aryel/frser-duino'

rm -f frser-duino.bin

rm -f frser-duino.out

rm -f frser-duino.hex

rm -f frser-duino.s

rm -f *.o

make[1]: Saindo do diretório '/home/aryel/frser-duino'

DFLAGS=-DFTDI FRBAUD=2000000 make all

make[1]: Entrando no diretório '/home/aryel/frser-duino'

avr-gcc -mmcu=atmega328p -DBAUD=2000000 -Os -fno-inline-small-functions -fno-tree-switch-conversion -frename-registers -g -Wall -W -pipe -flto -fwhole-program -std=gnu99 -DFTDI -Ilibfrser -std=gnu99 -I. -o frser-duino.out main.c uart.c spihw.c libfrser/frser.c libfrser/udelay.c libfrser/spilib.c libfrser/spihw_avrspi.c

avr-size frser-duino.out

text data bss dec hex filename

1416 0 1036 2452 994 frser-duino.out

make[1]: Saindo do diretório '/home/aryel/frser-duino'

BLBAUD=57600 SERIAL_DEV=/dev/ttyUSB0 make program

make[1]: Entrando no diretório '/home/aryel/frser-duino'

avr-objcopy -j .text -j .data -O ihex frser-duino.out frser-duino.hex

avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -U flash:w:frser-duino.hex

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

 

avrdude done. Thank you.

 

make[1]: *** [Makefile:70: program] Erro 1

make[1]: Saindo do diretório '/home/aryel/frser-duino'

make: *** [Makefile:97: flash-ftdi] Erro 2

aryel@aryel-VirtualBox:~/frser-duino$

desde de já agradeço a ajuda, seu post me ajudou muito

  • Joinha 1
Link para o comentário
Compartilhar em outros sites

mmcu=atmega328p, acredito que essa linha quer dizer que está tentando gravar em um arduino UNO. Se quer gravar em um arduino mega, acredito que voce terá de alterar o makefile, colocando algo como mmcu=atmega2560...

Vou dar uma confirmada e respondo mais tarde como voce pode fazer pra corrigir isso...

 

  • Joinha 1
Link para o comentário
Compartilhar em outros sites

On 11/24/2020 at 12:33 AM, Aryel Amaral said:

depois de dar uma cutucada eu tinha descoberto isso ai amigo, consegui gravar esse firmware no arduino porém na hora de programar a eprom descobri que meu chip não é suportado pelo flashrom, tanto trabalho para nada 😕 

"Certo, mas então conseguiu fazer funcionar o gravador via Arduino, ok?

Do contrário, tenho comigo um passo a passo que, pelo menos pra mim, deu certo.

 

A quem interessar dê um parecer aqui que eu posto."

###################################################

Boa noite a todos!

Vamos à postagem:

PREPARAR O GRAVADOR DE BIOS VIA ARDUINO:

1- Se certificar se o arquivo '/etc/apt/sources.list' está presente, juntamente com (seu conteúdo) o link do repositório da sua distro Linux, digitando no terminal o seguinte comando:

grep ^[^#] /etc/apt/sources.list e pressionar [ENTER].

No meu caso, que decidi instalar a mesma distro do autor deste post, aparece na tela isso:

deb http://http.kali.org/kali kali-rolling main non-free contrib,

mas se o seu sistema for o Ubuntu, por exemplo, deverá aparecer algo assim:

deb http://us.archive.ubuntu.com/ubuntu/bionic main.

Mas caso apareça isso:

grep: /etc/apt/sources.list: Arquivo ou diretório inexistente,

digite o comando a seguir, para ter o arquivo e o seu conteúdo ao mesmo tempo, de acordo com a distro:

Para o Kali,
echo "deb http://http.kali.org/kali kali-rolling main non-free contrib" | sudo tee /etc/apt/sources.list

Para o Ubuntu,

echo "deb http://us.archive.ubuntu.com/ubuntu/bionic main" | sudo tee /etc/apt/sources.list

e para as demais distros, pesquise, p. ex., "repositório oficial [distro]".

*O Wiki geralmente traz bons resultados sobre Linux!

...

Depois, redigite o comando 'grep' para confirmar;

2- sudo apt-get update [ENTER];

(sudo apt full-upgrade -y) --> após a atualização, tbm acho bom digitar este comando.
3- sudo apt-get install flashrom;
4- sudo apt install git flashrom gcc-avr binutils-avr avr-libc avrdude
5- git clone --recursive https://github.com/tomvanveen/frser-duino.git
6- cd frser-duino
7- make ftdi
8- sudo make flash-ftdi

9- sudo make u2 && make flash-u2

NOTA: Foram deixados juntos o comando de ftdi e u2 para se não funcionar um, funciona o outro. Mas se o seu Arduino é o UNO Chinês e não funcionou, será necessário editar o arquivo Makefile que está dentro da pasta frser-duino da seguinte forma:

Como já entramos nela, digite sudo nano Makefile e press.. [ENTER]; ache o trecho:

"# Compatibility with serprog-duino / User Friendlyness helpers
u2:
        $(MAKE) clean
"

e altere a linha que fica logo abaixo de $(MAKE) clean para:

DFLAGS=-DFTDI FRBAUD=115200 $(MAKE) all

Depois disso, pelo menos no meu caso, eu tbm tive que mudar na próxima linha, a do flash-u2:, o tipo de indicação da porta USB, alterando /ttyACM0 para /ttyUSB0, mas talvez não seja necessário pra todo mundo.

Feito isso, salve, pressionando (ctrl + o [letra ó]) e tecle [ENTER]; em seguida (ctrl + x), para fechar.

Repita os passos do 7 ao 9, e vê se funciona.

 

Espero que dê certo!

 

Falou.

Editado: por wvillao
Incluir a postagem para quem precisar
  • Joinha 1
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

boa noite, amigos. 

Alguém saberia como fazer com um Mac OS, acredito que seja possível, pesquisando... eu acho, q conseguir instalar o flashrom e o git. mas os comandos para mandar ler e gravar ja eh outra historia, tenho aqui um Arduino due, so pra confirmar. Eh  possível usar ele tambem ?

Link para o comentário
Compartilhar em outros sites

@Brian256 , boa tarde! Não sei se já achou, mas seja como for, acessando esse link

Você não tem permissão para ver links. Faça login ou cadastre-se.

você terá mais detalhes a respeito do que é necessário para funcionar.

Mas agora quero deixar uma nota pra todos:

Comigo funcionou adequadamente conforme as instruções que passei acima, mas uma curiosidade ocorreu: rodei o programa com várias versões do arquivo BIOS e nenhuma, de um total de em torno de umas 15, deu vídeo! Já não sabia o que fazer, até que (entrou um dinheirinho) decidi comprar um gravador para o ambiente Windows, o famoso CH341A, e ao realizar a gravação usando-se os mesmos arquivos que usei no ambiente Linux... TODOS deram vídeo! *uma 'goleada' contra o flashrom!*. Mas vamos devagar, assim que eu tiver um tempinho (porque tá difícil), vou investigar melhor, pois o meu Arduino é Chinês, será que é por isso? mesmo funcionando? Porque reconhece os chips tudo direitinho, mas depois que realiza a gravação, não dá vídeo. Mas como eu expus acima, não é problema do arquivo e sim, do próprio gravador. Também pode ser algo com o sistema Linux, alguma configuração 'extra' necessária que ainda não sei... bom, depois a gente vê.

Falou.

Link para o comentário
Compartilhar em outros sites

Participe agora da conversa!

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restaurar formatação

  Apenas 75 emoticons máximos são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir apenas como um link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Você não pode colar imagens diretamente. Envie ou insira imagens do URL.


SOBRE O ELETRÔNICABR

EletrônicaBR é o melhor fórum técnico online, temos o maior e mais atualizado acervo de Esquemas, Bios e Firmwares da internet. Através de nosso sistema de créditos, usuários participativos têm acesso totalmente gratuito. Os melhores técnicos do mundo estão aqui!
Técnico sem o EletrônicaBR não é um técnico completo! Leia Mais...
×
×
  • Criar Novo...