Сейчас на форуме: ManHunter, Magister Yoda, rtsgreg1989 (+10 невидимых) |
eXeL@B —› Основной форум —› не могу переписать флеш (программистам микроконтроллеров) |
Посл.ответ | Сообщение |
|
Создано: 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 |
|
Создано: 29 мая 2005 19:57 · Личное сообщение · #2 Иши человека с программатором. Иногда некоторые фирмы программируют жуки за деньги. Что касается самоcтоятельной работы в этой области, то тут нужно учесть, что алгоритмы программирования жуков различных фирм могут существенно отличаться. На конкретный жук следует искать даташит на сайте фирмы. Может и жук "битый" . Поспрашай еще тут: www.telesys.ru www.caxapa.ru forum.electronix.ru/ |
|
Создано: 31 мая 2005 04:46 · Личное сообщение · #3 |
|
Создано: 31 мая 2005 23:45 · Личное сообщение · #4 |
|
Создано: 01 июня 2005 04:12 · Личное сообщение · #5 Кста, переписать содежимое flash устройства можно без програматора - через отладчик. Например в Intel Strataflash просто в нужную страницу (из кода или через отладчик) вписываешь две двух-байтовые команды - и всё. С закачкой информации сложнее - это надо делать через RAM и маленькую прожку, которая тоже в RAM. Ну или по два байта скриптом для отладчика. |
eXeL@B —› Основной форум —› не могу переписать флеш (программистам микроконтроллеров) |