www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADuC842 ULOAD Modus


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

unsigned char xdata MEM_BLOCK[0x0200] _at_ 0x0000;


case WR_CMD :          // Speicherseite schreiben
  page = rd_rs232();
  if (page < 0xE0) {
    crc = 0;
    for (cnt=0;cnt<256;cnt++)
    {
      MEM_BLOCK[cnt] = rd_rs232();  // Block lesen
      crc = crc_update(crc,MEM_BLOCK[cnt]);
    }
    input = rd_rs232();
    crc = crc_update(crc,input);
    input = rd_rs232();
    crc = crc_update(crc,input);// CRC auf Prüfsumme erweitern
     if (crc==0) {
      EADRH = page;    // H-Byte ROM-Addresse (Page)
      EADRL = 0x13;
      ECON = 0x02;    // Write MEM Page (XDATA 00-FF)
      if (ECON == 0)    // ECON Status Register
        wr_rs232(ERR_OK);
      else wr_rs232(ERR_FLASH);
    } else wr_rs232(ERR_CRC);    // andernfalls CRC-Fehler
  } else {
  for (cnt=0;cnt<258;cnt++)
    rd_rs232();
  wr_rs232(ERR_NOK);  // ungültige Seite
}
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.