Forum: Mikrocontroller und Digitale Elektronik ADuC842 ULOAD Modus


von Christoph (Gast)


Lesenswert?

Hallo

ich schreibe derzeit an einem Bootloader - welcher soweit auch 
funktioniert - nur der "Write FLASH"-Befehl über das ECON-Register tut 
nicht, wie er soll. In den ULOAD Modus konnte ich wechseln - Erase Page 
und Erase Flash funktionieren auch.

Nur anstatt die Daten zu schreiben, die ich ihm per rs232 schicke, 
schreibt er die letzte beschriebene Seite aus dem FLASH-Bootloader 
(Seite 227 (0xE300). Egal welche FLASH-Seite ich beschreiben will - es 
findet sich immer diese Seite in der dann beschriebenen FLASH-Seite.
Die lt. Datenblatt an XDATA 0x0000-0x00FF zu schreibenden Daten habe ich 
anschließend rückgelesen und sie waren, wie sie sein sollten.

Der verwendete Compiler ist der C51 von Keil
1
unsigned char xdata MEM_BLOCK[0x0200] _at_ 0x0000;
2
3
4
case WR_CMD :          // Speicherseite schreiben
5
  page = rd_rs232();
6
  if (page < 0xE0) {
7
    crc = 0;
8
    for (cnt=0;cnt<256;cnt++)
9
    {
10
      MEM_BLOCK[cnt] = rd_rs232();  // Block lesen
11
      crc = crc_update(crc,MEM_BLOCK[cnt]);
12
    }
13
    input = rd_rs232();
14
    crc = crc_update(crc,input);
15
    input = rd_rs232();
16
    crc = crc_update(crc,input);// CRC auf Prüfsumme erweitern
17
     if (crc==0) {
18
      EADRH = page;    // H-Byte ROM-Addresse (Page)
19
      EADRL = 0x13;
20
      ECON = 0x02;    // Write MEM Page (XDATA 00-FF)
21
      if (ECON == 0)    // ECON Status Register
22
        wr_rs232(ERR_OK);
23
      else wr_rs232(ERR_FLASH);
24
    } else wr_rs232(ERR_CRC);    // andernfalls CRC-Fehler
25
  } else {
26
  for (cnt=0;cnt<258;cnt++)
27
    rd_rs232();
28
  wr_rs232(ERR_NOK);  // ungültige Seite
29
}
30
break;


C51 Ausgabe:

                                           ; SOURCE LINE # 151
009C         ?C0024:
                                           ; SOURCE LINE # 152
009C 120000      R     LCALL   rd_rs232
009F 8F00        R     MOV     page,R7
                                           ; SOURCE LINE # 153
00A1 E500        R     MOV     A,page
00A3 C3                CLR     C
00A4 94E0              SUBB    A,#0E0H
00A6 506A              JNC     ?C0025
                                           ; SOURCE LINE # 154
00A8 E4                CLR     A
00A9 F500        R     MOV     crc,A
00AB F500        R     MOV     crc+01H,A
                                           ; SOURCE LINE # 155
00AD FA                MOV     R2,A
00AE FB                MOV     R3,A
00AF         ?C0026:
                                           ; SOURCE LINE # 156
                                           ; SOURCE LINE # 157
00AF 120000      R     LCALL   rd_rs232
00B2 7400              MOV     A,#LOW MEM_BLOCK
00B4 2B                ADD     A,R3
00B5 F582              MOV     DPL,A
00B7 7400              MOV     A,#HIGH MEM_BLOCK
00B9 3A                ADDC    A,R2
00BA F583              MOV     DPH,A
00BC EF                MOV     A,R7
00BD F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 158
00BE 120000      R     LCALL   L?0099
00C1 8E00        R     MOV     crc,R6
00C3 8F00        R     MOV     crc+01H,R7
                                           ; SOURCE LINE # 159
00C5 0B                INC     R3
00C6 BB0001            CJNE    R3,#00H,?C0073
00C9 0A                INC     R2
00CA         ?C0073:
00CA E4                CLR     A
00CB B503E1            CJNE    A,AR3,?C0026
00CE EA                MOV     A,R2
00CF B401DD            CJNE    A,#01H,?C0026
00D2         ?C0027:
                                           ; SOURCE LINE # 160
00D2 120000      R     LCALL   rd_rs232
00D5 750000      R     MOV     input,#00H
00D8 8F00        R     MOV     input+01H,R7
                                           ; SOURCE LINE # 161
00DA AD00        R     MOV     R5,input+01H
00DC 120000      R     LCALL   L?0100
00DF 8E00        R     MOV     crc,R6
00E1 8F00        R     MOV     crc+01H,R7
                                           ; SOURCE LINE # 162
00E3 120000      R     LCALL   rd_rs232
00E6 750000      R     MOV     input,#00H
00E9 8F00        R     MOV     input+01H,R7
                                           ; SOURCE LINE # 164
00EB AD00        R     MOV     R5,input+01H
00ED 120000      R     LCALL   L?0100
00F0 8E00        R     MOV     crc,R6
00F2 8F00        R     MOV     crc+01H,R7
                                           ; SOURCE LINE # 165
00F4 E500        R     MOV     A,crc+01H
00F6 4500        R     ORL     A,crc
00F8 7013              JNZ     ?C0029
                                           ; SOURCE LINE # 166
00FA 8500C7      R     MOV     EADRH,page
                                           ; SOURCE LINE # 167
00FD 75C613            MOV     EADRL,#013H
                                           ; SOURCE LINE # 168
0100 75B902            MOV     ECON,#02H
                                           ; SOURCE LINE # 169
0103 E5B9              MOV     A,ECON
0105 7003              JNZ     ?C0030
                                           ; SOURCE LINE # 170
0107 020000      R     LJMP    ?C0082
010A         ?C0030:
                                           ; SOURCE LINE # 171
                                           ; SOURCE LINE # 172
010A 020000      R     LJMP    ?C0083
010D         ?C0029:
010D 7F22              MOV     R7,#022H
                                           ; SOURCE LINE # 173
010F 020000      R     LJMP    ?C0098
0112         ?C0025:
                                           ; SOURCE LINE # 174
0112 E4                CLR     A
0113 FA                MOV     R2,A
0114 FB                MOV     R3,A
0115         ?C0034:
                                           ; SOURCE LINE # 175
0115 120000      R     LCALL   rd_rs232
0118 0B                INC     R3
0119 BB0001            CJNE    R3,#00H,?C0075
011C 0A                INC     R2
011D         ?C0075:
011D BA01F5            CJNE    R2,#01H,?C0034
0120 BB02F2            CJNE    R3,#02H,?C0034
0123         ?C0035:
                                           ; SOURCE LINE # 176
0123 7F11              MOV     R7,#011H
0125         ?C0084:
                                           ; SOURCE LINE # 177
                                           ; SOURCE LINE # 178

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.