Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo, > > ich hatte schon vor geraumer Zeit mal ein Posting bezüglich des Bootloaders gemacht, wobei mir Andre > und Gordon geholfen haben, die Boot.hex zu disassemblieren. > Ich habe nun noch ein paar Verständnisprobleme bei der Initialisierung. Sie sieht folgendermaßen aus: > <asm> > MOV STKOV,#0FA00H > MOV STKUN,#0FC00H > MOV SP,#0FC00H > MOV CP,#0FC00H > BFLDL SYSCON,#37H,#15H > BFLDH SYSCON,#12H,#00H > BFLDL 89H,#04H,#04H > BFLDH 89H,#0FFH,#00H > MOV DPP0,#0000H > MOV DPP1,#0001H > MOV DPP2,#0002H > MOV DPP3,#0003H > EINIT > </asm> > Ich verstehe nun nicht genau, was die Zeilen > <asm> > BFLDL 89H,#04H,#04H > BFLDH 89H,#0FFH,#00H > </asm> > bewirken, da ich leider noch nicht herausgefunden habe, was sich an der Adresse 89H befindet. Im > Handbuch des 80C166 steht an dieser Stelle nur "reserviert". > > Probleme habe ich auch beim Verständnis des Löschens und des Schreibens in den Speicher. Hierzu > werden diverse Befehlsequenzen ausgeführt, die ich noch nicht ganz "entschlüsseln" konnte. Diese > sehen beispielsweise folgendermaßen aus: > <asm> > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#8080H > MOV 0AAAAH,R3 > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#3030H > MOV [R2],R3 > </asm> > Dies sind dem Anschein nach Codesequenzen, die den Mikrocontroller dazu veranlassen, einen bestimmten > Bereich im Speicher zu Löschen. Im Quellcode findet man noch weitere Stellen, die meiner Meinung > nach dazu nötig sind um in den Speicher zu schreiben, da sie nach jedem Empfang eines Hex-Records > aufgerufen werden. Ich habe jedoch leider noch nicht herausgefunden, was die einzelnen Befehle > bedeuten. Es wäre schön wenn mir da jemand weiterhelfen könnte oder zumindest eine Dokumentation > zum Programmieren des Speichers des C164CI hat, da ich leider noch auf keine gestoßen bin. > > Vielen Dank schon mal für eure Hilfe > > Gruß > > Thomas > > > Hier nochmal der komplette Quellcode (nur Secondary Loop - ersten 32 Byte fehlen) > von mir bearbeitet: > <asm> > #include "C:/Rigel/Reads166/V310/Include/sfr167.inc" > P1L defr 0FF04h > DP1L defr 0FF04h > > ;LEDs > mov P1L, #033h > extr #1 > mov DP1L, #0FFh > > MOV STKOV,#0FA00H > MOV STKUN,#0FC00H > MOV SP,#0FC00H > MOV CP,#0FC00H > BFLDL SYSCON,#37H,#15H > BFLDH SYSCON,#12H,#00H > BFLDL 89H,#04H,#04H > BFLDH 89H,#0FFH,#00H > MOV DPP0,#0000H > MOV DPP1,#0001H > MOV DPP2,#0002H > MOV DPP3,#0003H > EINIT > > MOV R2,#00H > CALLR erase > MOV R2,#4000H > CALLR erase > MOV R2,#6000H > CALLR erase > MOV R2,#8000H > CALLR erase > mov P1L, #16 > download: > mov P1L, #08h > MOV R1,#00H ;Adresszaehler > wait: > JNB S0RIR,wait > MOVB RH2,S0RBUF ;Highbyte in RH2 sichern > BCLR S0RIR > wait2: > JNB S0RIR,wait2 > MOVB RL2,S0RBUF ;Lowbyte in RL2 sichern > BCLR S0RIR ;=>R2 enthaelt Adresse des Records > CMP R2,#0FFFFH > JMPR CC_Z,sendFF ;Wenn Adresse == 0FFFFh > wait3: > JNB S0RIR,wait3 > MOV R5,S0RBUF ;Anzahl in R5 sichern > BCLR S0RIR > loop: > JNB S0RIR,loop > mov P1L, #04 > MOVB RL0,S0RBUF ;Daten-Byte in RL0 sichern > BCLR S0RIR > MOVB [R1+#0F900H],RL0 ;Datebyte in 0F900h+Zaehler > ADD R1,#1 ;Adresszaehler eins hochzaehlen > CMP R1,#0020H > JMPR CC_NZ,loop ;Wenn Record noch nicht vollstaendig->loop > MOVB RL0,RH2 ;Highbyte der Adresse in RL0 > CALLR echo > MOVB RL0,RL2 ;Lowbyte der Adresse in RL0 > CALLR echo > MOVB RL0,RL5 > CALLR echo > MOV R1,#00H > write: > MOV R0,[R1+#0F900H] > CMP R1,R5 > JMPR CC_NC,c_echo > CALLR write2flash > CMP R4,#0FFFFH > JMPR CC_NZ,c_echo > NEGB RL0 > CALLR echo > hang: > mov P1L, #0AAh > JMPR CC_UC,hang > c_echo: > CALLR echo > MOVB RL0,RH0 > CALLR echo > ADD R2,#2 > ADD R1,#2 > CMP R1,#0020H > JMPR CC_NZ,write > JMPR CC_NC,download > sendFF: > MOVB RL0,#00FFH > CALLR echo > CALLR echo > SRST > erase: > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#8080H > MOV 0AAAAH,R3 > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#3030H > MOV [R2],R3 > > l1: > MOV R3,[R2] > AND R3,#0080H > CMP R3,#0080H > JMPR CC_NZ,l1 > JMPR CC_UC,l2 > write2flash: > mov P1L, #80h > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#0A0A0H > MOV 0AAAAH,R3 > MOV [R2],R0 > l3: > MOV R3,[R2] > MOVB RH3,RL0 > ANDB RL3,#0080H > ANDB RH3,#0080H > CMPB RL3,RH3 > JMPR CC_Z,r4_00 > MOV R3,[R2] > ANDB RL3,#0020H > CMPB RL3,#0020H > JMPR CC_NZ,l3 > MOV R3,[R2] > MOVB RH3,RL0 > ANDB RL3,#0080H > ANDB RH3,#0080H > CMPB RL3,RH3 > JMPR CC_Z,r4_00 > MOV R4,#0FFFFH > JMPR CC_UC,l2 > r4_00: > MOV R4,#00H > JMPR CC_UC,l2 > l2: > MOV R3,#0AAAAH > MOV 0AAAAH,R3 > MOV R3,#5555H > MOV 5554H,R3 > MOV R3,#0F0F0H > MOV 0AAAAH,R3 > MOV R3,[R2] > > RET > echo: > MOV P1L,#0FFh > JNB S0TIR,echo > BCLR S0TIR > MOVB S0TBUF,RL0 > wait5: > JNB S0TIR,wait5 > RET > NOP > NOP > NOP > </asm>