Mudanças entre as edições de "GC150ATA"
(→CPU) |
|||
Linha 27: | Linha 27: | ||
==== Via I2C ==== |
==== Via I2C ==== |
||
+ | A placa mãe tem um conector de 4 vias com alabel P303. Foi a primeira coisa que me saltou aos olhos quando abri o equipamento pois era o único conector da placa que não tinha cabo nenhum conectado. Portanto estava bem claro pra mim que deve se tratar de uma interface de programação do dispositivo que é usada na fábrica pra gravar o firmware inicial. |
||
− | A placa mãe tem um conector de 4 vias com alabel P303. Os sinais são: |
||
+ | |||
+ | Os sinais desse conector são: |
||
* VCC (5V) |
* VCC (5V) |
||
Linha 34: | Linha 36: | ||
* GND |
* GND |
||
− | As duas vias do barramento '''i²c''' estão ligadas aos pinos HSCL e HSDA do 8051. |
+ | As duas vias do barramento '''i²c''' estão ligadas aos pinos HSCL e HSDA do 8051. |
+ | |||
+ | O datasheet descreve o procedimento para apagar a memória flash por meio da interface I2C, mas imagino que dê também pra fazer o dump. Um dos comandos se chama "data read" e aparentemente é usado para verificação de uma gravação. |
||
+ | |||
+ | O datasheet diz também que o slave address da interface i2c é especificado pelo firmware por meio de uma escrita ao SFR (special funciona register) ISPSLV (In-System Programming Slave Address) |
||
<quote> |
<quote> |
||
Linha 55: | Linha 61: | ||
===== Usando o USBTinyISP ===== |
===== Usando o USBTinyISP ===== |
||
− | Precisaria modificar o dispositivo pra se comunicar por i2c também. Ele é projetado pra falar SPI |
+ | Precisaria modificar o dispositivo pra se comunicar por i2c também. Ele é projetado pra falar SPI (Serial Peripheral Interface). |
+ | |||
+ | Cheguei a montar um e compilei o firmware a partir do source, mas quando gravei ele no attiny2313, não funcionou. Quando gravei de volta a imagem de fw precompilada disponivel pra download no site, voltou a funcionar. Talvez meu compilador avr-gcc não esteja com a versão ideal, como indicado no site. |
||
===== Usando a porta VGA ===== |
===== Usando a porta VGA ===== |
Edição das 23h45min de 8 de julho de 2014
descrição geral
Display VGA SYS-GC150ATA
É um painel LCD comum. Meu interesse nele está em reprogramar o firmware pra fazer coisas inusitadas. Como ele tem um sistema de OSD (On-Screen Display), podemos fazer animações por cima do vídeo que estiver vindo pelo conector VGA. Dá também pra fazer isso de forma interativa, já que o display tem 4 botões (além do liga-desliga) na parte da frente.
Principais componentes
CPU
MYSON mtv312mv64 - variante de 8051
Datasheet em: http://www.telemaster.ru/minitv/pdf/MTV312MV64.pdf
chip de vídeo
Controlador GENESIS gmZAN1
Datasheet em: http://www.datasheetarchive.com/dlmain/Datasheets-312/182051.pdf
EPROM
Memória EPROM serial (I2C) ATMEL 24C21
Datasheet em: http://www.datasheetcatalog.com/datasheets_pdf/2/4/C/2/24C21.shtml
Estratégias de Engenharia Reversa
Dump de fw
Via I2C
A placa mãe tem um conector de 4 vias com alabel P303. Foi a primeira coisa que me saltou aos olhos quando abri o equipamento pois era o único conector da placa que não tinha cabo nenhum conectado. Portanto estava bem claro pra mim que deve se tratar de uma interface de programação do dispositivo que é usada na fábrica pra gravar o firmware inicial.
Os sinais desse conector são:
- VCC (5V)
- SCL
- SDA
- GND
As duas vias do barramento i²c estão ligadas aos pinos HSCL e HSDA do 8051.
O datasheet descreve o procedimento para apagar a memória flash por meio da interface I2C, mas imagino que dê também pra fazer o dump. Um dos comandos se chama "data read" e aparentemente é usado para verificação de uma gravação.
O datasheet diz também que o slave address da interface i2c é especificado pelo firmware por meio de uma escrita ao SFR (special funciona register) ISPSLV (In-System Programming Slave Address)
<quote> After Power On/Reset, The MTV312M runs the original Program Code. Once the S/W detects an ISP request (by key or IIC), S/W can accept the request following the steps below:
- Clear watchdog to prevent reset during ISP period.
- Disable all interrupt to prevent CPU wake-up.
- Write IIC address of ISP slave to ISPSLV for communication.
- Write 93h to ISP enable register (ISPEN) to enable ISP.
- Enter 8051 idle mode.
</quote>
Como não temos acesso ao firmware (ainda) não temos como saber qual é o endereço usado. Então resolvi tentar todos! De acordo com a descrição do protocolo de programação da Flash, são 6 bits de endereços possíveis (apesar de i2c permitir 7 bits, um deles - o menos significativo - é usado pra indicar se é acesso de comando ou acesso de dado).
Usando o BusPirate
Preciso achar o meu que eu perdi ou comprar um novo.
O legal é que dá pra fazer uns scripts pra automatizar o sniffer...
Usando o USBTinyISP
Precisaria modificar o dispositivo pra se comunicar por i2c também. Ele é projetado pra falar SPI (Serial Peripheral Interface).
Cheguei a montar um e compilei o firmware a partir do source, mas quando gravei ele no attiny2313, não funcionou. Quando gravei de volta a imagem de fw precompilada disponivel pra download no site, voltou a funcionar. Talvez meu compilador avr-gcc não esteja com a versão ideal, como indicado no site.
Usando a porta VGA
Isso é genial. Tentei, mas ainda não rolou.
Usando algum outro bridge USB->I2C
Preciso comprar um desses pra tentar.
Via Soquete PLCC
Desoldar o chip, conectá-lo a um conversor PLCC→DIP e utilizar o TL866CS para fazer o dump.
CONTRAS: Procedimento invasivo. Ter que soldar um soquete no lugar, e depois ter que remover/reinserir toda vez que for atualizar o firmware. Pode danificar o componente pelo esforço mecânico.