Ir para conteúdo
  • Cadastre-se

dúvida Como copiar arquivo de firmware no CI Atmel AT89C51 com proteção?

Avalie este tópico:


14bis

Posts em destaque

Olá

 

Estou com 3 teclados programáveis da Fourth e Smak aguardando para copiar o firmware do CI de BIOS. Um deles é o AT89C51. Ao fazer a leitura, a gravadora aponta como se estivesse vazio. Como conseguir gravar esses CIs com proteção?

 

Segue datasheet:

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

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

Boa sorte!!!

 

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

 

Flw...

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

Pra gravar é fácil.. eles não tem proteção contra gravação. Mas tem proteção contra leitura, o que torna [quase] impossível extrair o código. Tem uns chineses e russos que fazem esse serviço (cobram em média 100 doletas), que envolve abrir o encapsulamento e conectar umas pontas de prova minúsculas direto nas áreas da pastilha de silício onde fica a memória flash. 

 

Ou, se o $$ valer a pena, pode fazer como fiz lá com a máquina de raio X.. estudar o circuito, aprender sobre a arquitetura do microcontrolador e recriar o firmware. Esses 89C51 são relativamente mais faceis de programar que AVR e PIC, por não possuirem periféricos como ADC, watchdog, e2prom interna, spi e afins, e terem um sistema de portas de E/S mais simples. A arquitetura deles é a mesma dos Intel 8051, que já foi padrão de mercado há alguns (muitos) anos atrás. 

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

11 horas atrás, zazulak disse:

Pra gravar é fácil.. eles não tem proteção contra gravação. Mas tem proteção contra leitura, o que torna [quase] impossível extrair o código. Tem uns chineses e russos que fazem esse serviço (cobram em média 100 doletas), que envolve abrir o encapsulamento e conectar umas pontas de prova minúsculas direto nas áreas da pastilha de silício onde fica a memória flash. 

 

Ou, se o $$ valer a pena, pode fazer como fiz lá com a máquina de raio X.. estudar o circuito, aprender sobre a arquitetura do microcontrolador e recriar o firmware. Esses 89C51 são relativamente mais faceis de programar que AVR e PIC, por não possuirem periféricos como ADC, watchdog, e2prom interna, spi e afins, e terem um sistema de portas de E/S mais simples. A arquitetura deles é a mesma dos Intel 8051, que já foi padrão de mercado há alguns (muitos) anos atrás. 

 

Zazulak, não entendo de programação, mas quando você reescreve o código de um firmware, como você começa? Um código F1 diz que pino X vai até a tecla Y?

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

Bom, a primeira coisa é ver como as teclas são ligadas no microcontrolador. Quase sempre elas formam uma matriz, assim:

image.png.1b6e39ed91c95be82547646eac717a8a.png

 

O 89C51 tem 4 portas de 8 bits. Usando uma porta como entrada e 3 pinos de outra como saída, dá pra ler uma matriz de 8x8 (64 teclas). Nesse caso, 3 bits de uma porta funcionam como saída, ativando uma coluna da matriz de cada vez através de um decodificador, e outra porta funciona como entrada, lendo se alguma tecla em alguma linha foi ativada. Caso alguma tecla seja pressionada, o programa lê numa tabela qual tecla corresponde a combinação de linha e coluna, e gera o código correspondente.

Se a comunicação for via porta Ps2, ele gera um código quando a tecla é pressionada e outro quando é liberada. Se for serial RS232, ele transmite um código cada vez que uma tecla é pressionada. Se for serial, é mais fácil de implementar, porque o 89c51 possui uma interface serial.

 

Se o teclado tiver display alfanumérico, provavelmente seja um display baseado no controlador hd44780. A interface com esse controlador é via comandos, e a lista de comandos você acha no datasheet dele. Esses displays comunicam via barramento de dados de 4 ou 8 bits (configurável via comando), mais um pino de strobe, um que seleciona se o que vai ser enviado é um dado ou comando, e um que seleciona modo de leitura ou escrita (que geralmente não é usado). Se for um daqueles com display gráfico, aí você tem que ver qual é o controlador usado no display e adaptar o programa para o controlador do display. Os mais comuns são o Ks0108 e o T6963. 

 

Se o teclado tiver leitor de cartão, geralmente ele tem um circuito separado para ler o cartão, que já transmite os dados do cartão para o microcontrolador de forma serial (ou paralela), e o controlador apenas pega essa informação e retransmite para o computador. 

 

Existem alguns compiladores de C grátis para essa familía de microcontroladores, como o SDCC. Se já conhecer um pouco de linguagem C, melhor. Até daria pra fazer o programa inteiro em assembly mas, como é um programa relativamente complexo, quando precisar modificar ou atualizar alguma funcionalidade, vai ser bem mais difícil do que se fosse feito em C. 

 

Para escrever o programa, eu começaria implementando a parte de comunicação com o computador. Depois faria a parte de leitura de teclas e por último a comunicação com o display, se existir. 

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

@zazulak , fiz a matriz na mão e, cara, não foi complexo, só leva tempo com o multímetro ao ficar espetando e identificando o curto... sei que vc recomendou por 2 etapa... mas em compensação fiz para melhorar meu aprendizado no que você acabou de ensinar

 

Desculpe parecer uma pergunta boba, mas o próximo passo agora seria aprender a linguagem em C? Pois, antes de apagar o arquivo, um dos teclados estava se comunicando 100% com o PC

 

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

Isso aí. Sabendo como são ligadas as teclas, agora é começar a fazer o programa.

 

Dica: Em microcontroladores, geralmente as tarefas repetitivas (como verificar se tem alguma tecla pressionada) não são feitas pelo loop principal do programa, mas sim por uma rotina de interrupção, que é executada automaticamente num intervalo pré-determinado. No caso do 89C51, ele tem dois timers de 16 bits (contam de 0 a 65535), que podem ser usados para gerar uma interrupção periódica cada vez que chegam ao final da contagem. 

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

Neste site do compilador da Keil, além de uma versão free (limitada apenas ao tamanho do arquivo compilado), há também, exemplos de código.

 

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

 

Flw...

  • Legal 1
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...