Сейчас на форуме: ManHunter, Magister Yoda, rtsgreg1989 (+10 невидимых)

 eXeL@B —› Основной форум —› не могу переписать флеш (программистам микроконтроллеров)
Посл.ответ Сообщение

Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 мая 2005 22:10
· Личное сообщение · #1

Заранее прошу прощения, если это оффтопик... но для меня это тот-же крек
есть проц С167 и Flash 29F400. Считать ее смогла без проблем, не могу ее перешить.
подключение такое:
CE(Flash) - CS0(C167)
WE(Flash) - WR/WRL(C167)
OE(Flas) - RD(C167)
RESET(Flash) - +5V

Эту конфигурацию менять не могу... вот такая задачка...
код загрузчика: (внутри С167):
seg001:9C30 diswdt
seg001:9C34 bclr S0RIR ; Serial Channel 0 Receive Interrupt Control Register
seg001:9C36 bclr S0TIR ; Serial Channel 0 Transmit Interrupt Control Register
seg001:9C38 movb rh0, #3
seg001:9C3A callr WriteToASC0
seg001:9C3C
seg001:9C3C loc_19C3C: ; CODE XREF: sub_19C30+Cj
seg001:9C3C ; sub_19C30+2Cj ...
seg001:9C3C jnb S0RIR, loc_19C3C ; æäåì
seg001:9C40 bclr S0RIR ; Serial Channel 0 Receive Interrupt Control Register
seg001:9C42 movb rl0, S0RBUF ; Serial Channel 0 Receive Buffer Reg. (read only)
seg001:9C46 movb rh0, #0AAh
seg001:9C4A callr WriteToASC0 ; âîçâðàò áàéòà + AAh
seg001:9C4C movb rh0, #0EAh
seg001:9C50 cmpb rl0, #31h
seg001:9C54 jmpr cc_NZ, loc_19C5E
seg001:9C56 einit ; End of Initialization
seg001:9C5A callr WriteToASC0
seg001:9C5C jmpr cc_UC, loc_19C3C ; æäåì
seg001:9C5E ; ---------------------------------------------------------------------- -----
seg001:9C5E
seg001:9C5E loc_19C5E: ; CODE XREF: sub_19C30+24j
seg001:9C5E cmpb rl0, #93h
seg001:9C62 jmpr cc_NZ, loc_19C68
seg001:9C64 callr WriteToASC0
seg001:9C66 jmpr cc_UC, loc_19C3C ; æäåì
seg001:9C68 ; ---------------------------------------------------------------------- -----
seg001:9C68
seg001:9C68 loc_19C68: ; CODE XREF: sub_19C30+32j
seg001:9C68 cmpb rl0, #32h
seg001:9C6C jmpr cc_NZ, loc_19C74
seg001:9C6E callr WriteToASC0
seg001:9C70 srst
seg001:9C74 ; ---------------------------------------------------------------------- -----
seg001:9C74
seg001:9C74 loc_19C74: ; CODE XREF: sub_19C30+3Cj
seg001:9C74 cmpb rl0, #33h
seg001:9C78 jmpr cc_NZ, loc_19C88
seg001:9C7A movb rh0, rl5
seg001:9C7C callr WriteToASC0
seg001:9C7E movb rh0, #0EAh
seg001:9C82 callr WriteToASC0
seg001:9C84 jmpr cc_UC, loc_19C3C ; æäåì
seg001:9C86 ; ---------------------------------------------------------------------- -----
seg001:9C86
seg001:9C86 loc_19C86: ; CODE XREF: sub_19D24+24j
seg001:9C86 jmpr cc_UC, loc_19C3C ; æäåì
seg001:9C88 ; ---------------------------------------------------------------------- -----
seg001:9C88
seg001:9C88 loc_19C88: ; CODE XREF: sub_19C30+48j
seg001:9C88 cmpb rl0, #84h
seg001:9C8C jmpr cc_NZ, loc_19CD2
seg001:9C8E movb rl5, #0
seg001:9C90 callr Read2WordsFromASC0_R2_R1 ; ÷òåíèå àäðåñà
seg001:9C92 callr ReadWordFromASC0_toR3 ; áàéò äàííûõ
seg001:9C94
seg001:9C94 loc_19C94: ; CODE XREF: sub_19C30+9Aj
seg001:9C94 ; sub_19C30+A0j
seg001:9C94 cmpd1 r3, #0
seg001:9C96 jmpr cc_NZ, loc_19C9C
seg001:9C98 callr WriteToASC0
seg001:9C9A jmpr cc_UC, loc_19C3C ; æäåì
seg001:9C9C ; ---------------------------------------------------------------------- -----
seg001:9C9C
seg001:9C9C loc_19C9C: ; CODE XREF: sub_19C30+66j
seg001:9C9C ; sub_19C30+6Cj
seg001:9C9C jnb S0RIR, loc_19C9C ; Serial Channel 0 Receive Interrupt Control Register
seg001:9CA0 bclr S0RIR ; Serial Channel 0 Receive Interrupt Control Register
seg001:9CA2 movb rl4, S0RBUF ; Serial Channel 0 Receive Buffer Reg. (read only)
seg001:9CA6 xorb rl5, rl4
seg001:9CA8 callr sub_19D82 ; DPP2=r7=[r2,r1]>>14; CPU Data Page Pointer 2 Reg. (10 bits); assume dpp2: 0FFFFh (page 0x3FFFC000)
seg001:9CA8 ; r6=r1&3FFFh|8000h;
seg001:9CA8 ; [r2,r1]++;
seg001:9CAA mov r12, r6
seg001:9CAC bclr r12.0 ; óáèðàåì íå÷åòíîñòü
seg001:9CAE mov r7, [r12]
seg001:9CB0 jb r6.0, loc_19CBC
seg001:9CB4 and r7, #0FF00h
seg001:9CB8 orb rl7, rl4
seg001:9CBA jmpr cc_UC, loc_19CC2
seg001:9CBC ; ---------------------------------------------------------------------- -----
seg001:9CBC
seg001:9CBC loc_19CBC: ; CODE XREF: sub_19C30+80j
seg001:9CBC and r7, #0FFh
seg001:9CC0 orb rh7, rl4
seg001:9CC2
seg001:9CC2 loc_19CC2: ; CODE XREF: sub_19C30+8Aj
seg001:9CC2 mov [r12], r7
seg001:9CC4 movb rh4, [r6]
seg001:9CC6 cmpb rh4, rl4
seg001:9CC8 jmpr cc_NZ, loc_19CCC
seg001:9CCA jmpr cc_UC, loc_19C94
seg001:9CCC ; ---------------------------------------------------------------------- -----
seg001:9CCC
seg001:9CCC loc_19CCC: ; CODE XREF: sub_19C30+98j
seg001:9CCC movb rh0, #11h
seg001:9CD0 jmpr cc_UC, loc_19C94
seg001:9CD2 ; ---------------------------------------------------------------------- -----
seg001:9CD2
seg001:9CD2 loc_19CD2: ; CODE XREF: sub_19C30+5Cj
seg001:9CD2 cmpb rl0, #85h
seg001:9CD6 jmpr cc_NZ, loc_19CF4
seg001:9CD8 movb rl5, #0
seg001:9CDA callr Read2WordsFromASC0_R2_R1
seg001:9CDC callr ReadWordFromASC0_toR3
seg001:9CDE
seg001:9CDE loc_19CDE: ; CODE XREF: sub_19C30+C2j
seg001:9CDE cmpd1 r3, #0
seg001:9CE0 jmpr cc_NZ, loc_19CEA
seg001:9CE2 movb rh0, #0EAh
seg001:9CE6 callr WriteToASC0
seg001:9CE8 jmpr cc_UC, loc_19C3C ; æäåì
seg001:9CEA ; ---------------------------------------------------------------------- -----
seg001:9CEA
seg001:9CEA loc_19CEA: ; CODE XREF: sub_19C30+B0j
seg001:9CEA callr sub_19D82 ; DPP2=r7=[r2,r1]>>14; CPU Data Page Pointer 2 Reg. (10 bits); assume dpp2: 0FFFFh (page 0x3FFFC000)
seg001:9CEA ; r6=r1&3FFFh|8000h;
seg001:9CEA ; [r2,r1]++;
seg001:9CEC movb rh0, [r6]
seg001:9CEE xorb rl5, rh0
seg001:9CF0 callr WriteToASC0
seg001:9CF2 jmpr cc_UC, loc_19CDE
seg001:9CF4 ; ---------------------------------------------------------------------- -----
seg001:9CF4
seg001:9CF4 loc_19CF4: ; CODE XREF: sub_19C30+A6j
seg001:9CF4 cmpb rl0, #41h
seg001:9CF8 jmpr cc_NZ, loc_19D04
seg001:9CFA callr Read2WordsFromASC0_R2_R1
seg001:9CFC callr WriteToASC0
seg001:9CFE push r2
seg001:9D00 push r1
seg001:9D02 rets
seg001:9D04 ; ---------------------------------------------------------------------- -----
seg001:9D04
seg001:9D04 loc_19D04: ; CODE XREF: sub_19C30+C8j
seg001:9D04 cmpb rl0, #82h
seg001:9D08 jmpr cc_NZ, sub_19D24
seg001:9D0A callr Read2WordsFromASC0_R2_R1
seg001:9D0C callr ReadWordFromASC0_toR3
seg001:9D0E callr sub_19D82 ; DPP2=r7=[r2,r1]>>14; CPU Data Page Pointer 2 Reg. (10 bits); assume dpp2: 0FFFFh (page 0x3FFFC000)
seg001:9D0E ; r6=r1&3FFFh|8000h;
seg001:9D0E ; [r2,r1]++;
seg001:9D10 mov [r6], r3
seg001:9D12 callr WriteToASC0
seg001:9D14 jmpr cc_UC, loc_19C3C ; æäåì
seg001:9D14 ; End of function sub_19C30
seg001:9D14
seg001:9D16
seg001:9D16 ; --------------- S U B R O U T I N E ---------------------------------------
seg001:9D16
seg001:9D16
seg001:9D16 WriteToASC0: ; CODE XREF: sub_19C30+Ap
seg001:9D16 ; sub_19C30+1Ap ...
seg001:9D16 movb S0TBUF, rh0 ; Serial Channel 0 Transmit Buffer Register (write only)
seg001:9D1A
seg001:9D1A loc_19D1A: ; CODE XREF: WriteToASC0+4j
seg001:9D1A jnb S0RIR, loc_19D1A ; Serial Channel 0 Receive Interrupt Control Reg



Ранг: 1.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 мая 2005 19:57
· Личное сообщение · #2

Иши человека с программатором.
Иногда некоторые фирмы программируют жуки за деньги.

Что касается самоcтоятельной работы в этой области, то
тут нужно учесть, что алгоритмы программирования жуков
различных фирм могут существенно отличаться.
На конкретный жук следует искать даташит на сайте фирмы.

Может и жук "битый" .

Поспрашай еще тут:
www.telesys.ru
www.caxapa.ru
forum.electronix.ru/



Ранг: 39.1 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 31 мая 2005 04:46
· Личное сообщение · #3

это тебе на васм надо



Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 мая 2005 23:45
· Личное сообщение · #4

Разобралась ужо там гораздо большая засада оказалась - ноги данных попутаны...




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 01 июня 2005 04:12
· Личное сообщение · #5

Кста, переписать содежимое flash устройства можно без програматора - через отладчик. Например в Intel Strataflash просто в нужную страницу (из кода или через отладчик) вписываешь две двух-байтовые команды - и всё. С закачкой информации сложнее - это надо делать через RAM и маленькую прожку, которая тоже в RAM. Ну или по два байта скриптом для отладчика.


 eXeL@B —› Основной форум —› не могу переписать флеш (программистам микроконтроллеров)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати