¿Para qué procesador PIC estaba destinado este archivo HEX?

4

Tengo este archivo .hex:

:020000040000FA
:020000000528D1
:080008000528831686138312FC
:1000100015280F30A0000D2008007F30A100A00B94
:1000200012280800A10B12280D2886130920861714
:040030000920152866
:02400E00B03FC1
:00000001FF

Sé que se ha quemado en un PIC, pero no sé qué PIC.

¿Qué podemos decir acerca de la identidad (número de pieza, familia, etc.) del chip con solo estos datos?

    
pregunta Keelan

1 respuesta

10

Lo primero que debe hacer es ver qué valores contiene el archivo HEX en qué direcciones. Aquí está la salida de mi programa HEX_DUMP en su archivo HEX:

00000000-00000001 (2): 05 28
00000008-0000000F (8): 05 28 83 16 86 13 83 12
00000010-0000001F (16): 15 28 0F 30 A0 00 0D 20 08 00 7F 30 A1 00 A0 0B
00000020-0000002F (16): 12 28 08 00 A1 0B 12 28 0D 28 86 13 09 20 86 17
00000030-00000033 (4): 09 20 15 28
0000400E-0000400F (2): B0 3F

La última línea es probablemente la palabra de configuración, lo que significa que es para un PIC tradicional 16. Para esos PIC, las direcciones de archivos HEX se duplican ya que cada dirección de PIC tiene 14 bits y los archivos HEX solo tienen 8 bits de datos por dirección. Por lo tanto, la última línea es configurar la dirección de PIC 2007h a 3FB0h, que es exactamente el tipo de cosa que se esperaría al final de un archivo HEX para que contenga uno de estos PIC.

El modelo PIC 16 exacto es imposible de decir. Como sabemos que es un PIC 16, podemos hacer que MPLAB nos muestre el código desensamblado:

Para obtener esto, configuro el procesador en MPLAB a un 16F877, ya que es un PIC 16 de memoria completa tradicional.

Tenga en cuenta que las instrucciones son bastante plausibles, aunque esto está claramente escrito por alguien que realmente no sabía lo que estaban haciendo y probablemente ni siquiera usó el enlazador.

El GOTO en 0 probablemente intenta saltar 1 más allá de la rutina de interrupción en 4, aunque aparentemente no existe desde GOTO 5 no tiene sentido (al menos para cualquiera que sepa lo que está haciendo, hay un gran cantidad de código mal por ahí). La siguiente instrucción intenta configurar el banco, desordenar con TRISB, desordenar nuevamente con el banco y saltar a las 15 h.

No voy a intentar descodificar el resto de este lío, pero parece bastante seguro que tenemos la arquitectura de procesador correcta. No podemos saber el modelo exacto porque en realidad se ejecutaría en la mayoría del PIC básico 16. Si descodifica la palabra de configuración, puede obtener una pista para reducir el modelo más, pero realmente no creo que pueda llegar a un modelo exacto porque este código se ejecutará en un montón de ellos.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas