Forum: Mikrocontroller und Digitale Elektronik PIC Microchip AN1310 Bootloader


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ingo S. (schicki)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
PIC Microchip AN1310 Bootloader
Hallo Zusammen,
ich habe mehrere PIC-Controller mit dem AN130 und dem XC8 bzw. dem C18 
umgesetzt.
PIC18F97J60 -> XC8, C18 und Assembler  gehen
PIC18F46K80 -> XC8, C18 und Assembler  gehen
PIC16F877A ->  XC8, C18 und Assembler  gehen
PIC18F452 -> C18, und Assembler gehen XC8 nicht

Sobald ich das Hexfile des PIC18F452 des XC8 Compilers lade kommt 
folgende Fehlermeldung (siehe Screenshot).

Wenn ich das Programm mit einem ICD3 bzw. mit dem PICKIT3 übertrage 
funktioniert es.  C18 und Assembler Programme funktionieren mit dem 
Bootloader. Denn kann ich also ausschließen.

Letztendlich muss es an der Startadresse (Linkerscript) des Programms 
vom Compiler  liegen. Die Option des Codeoffsets hat auch nicht 
geholfen.
Von Microchip kam nur die Mitteilung dass dieser Controller out of 
Service ist. Hatte von Euch schon jemand das Problem.

Hier wären ein paar Daten vom Bootloader.
Speicherreservierung PIC18F452 Applikation
1
Aus dem Bootloader:
2
    #define AppVector           0x400   ; application start up code should be located here.
3
    #define AppHighIntVector    0x408   ; application high priority interrupt should be located here
4
    #define AppLowIntVector     0x418   ; application low priority interrupt should be located here
5
6
Erste Zeilen in der Applikation:
7
8
#define PROG_START 0x400 // application offset
9
10
#asm
11
PSECT intcode
12
        GOTO    PROG_START+0x8
13
PSECT intcodelo
14
        GOTO    PROG_START+0x18
15
#endasm 
16
17
 asm("GOTO " ___mkstr(PROG_START));

Ich habe alle Tipps aus den Datenblättern oder dem Internet getestet. 
Bin über jeden Tipp dankbar.

Ingo

von Frank K. (fchk)


Bewertung
2 lesenswert
nicht lesenswert
Der PIC16F877A sollte eigentlich nicht mit dem C18 gehen, weil der C18 
eigentlich nur PIC18 kann.

Zum PIC18F452: Ja, dafür müsste man dir die Ohren langziehen, dass Du 
überhaupt noch diesen alten Kram verwendest. Direkter, pinkompatibler 
Nachfolger ist der PIC18F4520, aktuell ist der PIC18F45K20.

Vergleiche mal die Linkerscripts oder versuche mal, direkt einen 18F4520 
einzusetzen.

fchk

von Ingo S. (schicki)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Frank,

ich habs hinbekommen. Bei diesem PIC muss man die Reset und Interrupt 
Vectoren manuell umsetzen. Den alten Typ habe ich bei dem ein oder 
anderen Sache mit drin. Im Zug der Migrierung des XC8 brachte ich die 
bieherigen Bootloader auf den aktuellen stand.

stimmt beim PIC16F877A meinte ich den CC5X, sorry mit dem XC8 ist nun 
alles bei einem Compiler. Wobei die PIC16 für mich immer mehr an 
BEdeutung verlieren.

Über Linkerscript bin ich fündig geworden. Bei neuen Sachen setze ich 
zwischenzeitlich den PIC18F46K80 ein.

Nun zur Lösung, das muss hinzu bzw.geändert werden:

#define PROG_START 0x400 // application offset

#asm
PSECT _vec
GOTO    PROG_START

PSECT intcode
        GOTO    PROG_START+0x8
PSECT intcodelo
        GOTO    PROG_START+0x18
#endasm

void main() @ PROG_START

Grüße
Ingo

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]
  • [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.