Свежие обсуждения
Микроконтроллеры

Нужно дизассемблировать прошивку PIC16C505. Вопрос к PICоведам

1 2

Коллеги,
помощь нужна.
Есть прошивка, нужно понять что и как она делает.
а от PIC я далек...

1. PIC16C505
2. Есть PicKIT2, им и слита прошивка (как для 16F505),
а вот сможет ли PicKIT2 ее залить в аналогичный чип (именно OTP)? - уже разобрался - нет
а если залить её-же но в 16F505 - нужно ли что-то менять?

3. Включение портов:
RB0 - Выход (акт. низкий)
RB1- LED (bidirectional)
RB2- in (кнопка на землю)
RB3- in (switch - на землю)
RB4 - LED (bidirectional)
RB5 - out
RC0- Выход (акт. низкий)
RC1- вход или выход, сложно сказать, как-то связано с потенциометромRC3
RC2- Выход (акт. низкий)- буззер
RC3- вход или выход, сложно сказать, как-то связано с потенциометром на RC1
RC4- ???
RC5- ???

работает с внутр. генератора.

RC1,3-5 - работают с датчиком температуры

собственно прошивка:
http://www.onlinedisk.ru/file/577365/

 

По моему стоит бит защиты. Смысл имеют первые 64 байта.

 

у них защита легко снимается, а первые 64слова не имеют защиты.

 

Sun525: По моему стоит бит защиты.
и мне так кажется, судя по функционалу -как они вместили все в 64 байта? - не понимаю.
если и стоит бит защиты - то чип будет отдавать калибровочную константу осциллятора.

AnSi: у них защита легко снимается
а можно чуток по-подробнее?

вот скрин с пиккита

 

AnSi: у них защита легко снимается
И мне интересно...

 

IC-Prog имеет встроеный дизассемблер, главное прочитать, а потом потихоньку разбираться. если действительно это вся программа, значит писали на ассемблере Программу загрузить в IC-prog, переключить в режим ассемберных кодов, распечатать-записать, далее можно разбираться с карандашиком, а можно попытаться загрузить асемблерный текст в MPLAB и эмулировать работу программы.

 

Lastic: IC-Prog имеет встроеный дизассемблер
Спасибо. до пункта - получть листинг - все просто. а дальше

 

я сейчас ушел с пиков на AVR-ки. они мне показались "слаще". Да и их фирменная AVR Studio мне больше понравилась, чем ПИКовская MPLab. я не профессиональный программист мк. С каким датчиком температуры работает? У меня такое впечатление, что это не вся прошивка, потому как только процесс обмена с датчиком, (даже на ассемблере) не уместится в таком объеме.
а еще похоже что pic16c505 имеет отличие в системе команд c pic16F84. а код для pic16c505 мне не удалось дизассемлировать в IC-Prog. и окончание листинга не похоже на окончание программы. Похоже на бред.
LIST P=16F84, F=INHX8M
include "P16FXX.inc"
ORG 0x0000
; ????
INCF 0x4A , W
SWAPF STATUS , W
CLRF 0x62
MOVF 0x6E , f
MOVF 0x7C , f
MOVF 0x5E , f
SWAPF STATUS , W
CLRF 0x62
MOVF 0x50 , f
MOVF 0x42 , f
MOVF 0x60 , f
SWAPF STATUS , W
CLRF 0x62
MOVF 0x36 , W
MOVF 0x3A , W
MOVF 0x38 , W
XORWF 0x67 , W
MOVF INDF , W
DECF 0x70 , f
INCF 0x11 , W
SUBWF 0x31 , f
; ????
ADDWF 0x71 , W
INCF 0x11 , W
MOVF INDF , W
CLRWDT
ANDWF 0x24 , f
; ????
; ????
SUBWF 0x12 , W
COMF PCL , W
; ????
SUBWF 0x12 , W
COMF 0x07 , W
CLRW
COMF 0x11 , W
RRF TMR0 , W
CLRW
RRF 0x44 , f
; ????
SUBWF 0x10 , W
CLRF 0x74
XORWF STATUS , W
SUBWF 0x35 , f
SUBWF 0x11 , W
CLRF 0x75
SUBWF 0x73 , f
MOVF INDF , W
RRF FSR , W
; ????
IORWF STATUS , W
DECF 0x35 , W
DECF 0x34 , W
SUBWF 0x73 , f
INCF 0x33 , W
SUBWF 0x12 , W
COMF 0x0C , W
; ????
SUBWF 0x15 , W
NOP
SUBWF 0x24 , f
SUBWF 0x14 , W
NOP

 

Полученно с помощью MPlab

Line Address Opcode Disassembly

1 000 025 MOVWF 0x5
2 001 A4A GOTO 0x4a
3 002 E03 ANDLW 0x3
4 003 1E2 ADDWF 0x2, F
5 004 8EE RETLW 0xee
6 005 8FC RETLW 0xfc
7 006 8DE RETLW 0xde
8 007 E03 ANDLW 0x3
9 008 1E2 ADDWF 0x2, F
10 009 8D0 RETLW 0xd0
11 00A 8C2 RETLW 0xc2
12 00B 8E0 RETLW 0xe0
13 00C E03 ANDLW 0x3
14 00D 1E2 ADDWF 0x2, F
15 00E 836 RETLW 0x36
16 00F 83A RETLW 0x3a
17 010 838 RETLW 0x38
18 011 667 BTFSC 0x7, 0x3
19 012 800 RETLW 0
20 013 3F0 INCFSZ 0x10, F
21 014 A11 GOTO 0x11
22 015 2B1 INCF 0x11, F
23 016 004 CLRWDT
24 017 771 BTFSS 0x11, 0x3
25 018 A11 GOTO 0x11
26 019 800 RETLW 0
27 01A 064 CLRF 0x4
28 01B 5A4 BSF 0x4, 0x5
29 01C 071 CLRF 0x11
30 01D 070 CLRF 0x10
31 01E 212 MOVF 0x12, W
32 01F 902 CALL 0x2
33 020 007 TRIS 0x7
34 021 212 MOVF 0x12, W
35 022 907 CALL 0x7
36 023 127 IORWF 0x7, F
37 024 911 CALL 0x11
38 025 C01 MOVLW 0x1
39 026 167 ANDWF 0x7, F
40 027 CC4 MOVLW 0xc4
41 028 007 TRIS 0x7
42 029 210 MOVF 0x10, W
43 02A 1F4 ADDWF 0x14, F
44 02B 603 BTFSC 0x3, 0
45 02C 2B5 INCF 0x15, F
46 02D 211 MOVF 0x11, W
47 02E 1F5 ADDWF 0x15, F
48 02F 2F3 DECFSZ 0x13, F
49 030 800 RETLW 0
50 031 C04 MOVLW 0x4
51 032 033 MOVWF 0x13
52 033 403 BCF 0x3, 0
53 034 335 RRF 0x15, F
54 035 334 RRF 0x14, F
55 036 2F3 DECFSZ 0x13, F
56 037 A33 GOTO 0x33
57 038 212 MOVF 0x12, W
58 039 90C CALL 0xc
59 03A 024 MOVWF 0x4
60 03B 215 MOVF 0x15, W
61 03C 020 MOVWF 0
62 03D 2A4 INCF 0x4, F
63 03E 214 MOVF 0x14, W
64 03F 020 MOVWF 0
65 040 000 NOP
..........................................................................
..........................................................................
1023 3FE 000 NOP
1024 3FF C9C MOVLW 0x9c ; калиб. конст.

 

Cheeeper: а можно чуток по-подробнее?

для начала нужно вскрыть чип, примерно так - http://pro-radio.ru/user/uploads/239096.jpg
для этого нужна концентрированная азотная кислота(>93%) - если меньше, то растворятся алюминиевые проводки(видно на фото).
сделаете - потом продолжим