Ir para conteúdo
  • Cadastre-se

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

Avalie este tópico:


Posts em destaque

Postado

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
Postado

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
Postado
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
Postado

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
Postado (editado)

@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
Postado

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

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...