- LiFePO4 Speicher Test         
Ergebnis 1 bis 3 von 3

Thema: Hilfe der Linker macht Probleme

  1. #1
    flown
    Gast

    Hilfe der Linker macht Probleme

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen, ich schreibe momentan ein Programm welches hauptsächlich in c geschrieben ist, ausser eine Methode welche ganz in Assembler geschrieben ist.

    Am anfange definiere ich meine ganzen globalen variabeln

    char toto;

    In der Assembelermethode benütze ich dann diese variable

    z.B. BTFSC (_toto) , 0x07

    Arbeite mit MPLAB v6.6

    Was nach meiner Meinung nach vollkommen richtig ist. Wenn ich das ganze kompiliere brinngt der Kompiler keine Fehlermeldung aber sobald ich das Zeug Linken möchte kommen folgende Fehler:

    Error[000] D:\assistant\prog_pic\myProg.obj 34 : Fixup overflow referencing psect bigbss (loc 0x7E (0x40+62), size 1, value 0x5FF)

    Error[000] myProg.rlf 249 : Fixup overflow in expression (loc 0x4 (0x4+0), size 1, value 0x5FF)

    Bei der Dokumentation vom HI- TECH PICC-18 compiler heisst es unter

    fixup overflow referencing folgendes:
    The linker was asked to relocate (fixup) an item that would not fit back into the space after relocation. For example this will occur if a byte size object is initialized wih an address that bigger than 255

    und bei
    fixup overflow in expression folgendes:
    The linker was asked to relocate(fixup) an item that would not fit back into the space after relocation. For example this will occur if a byte size objects is initialized withan address that is bigger than 255. This error occurred in a complex expression.

    Was muss ich machen um dieses Problem zu beheben?

    Vielen Dank für eure Hilfe

    Gruss

  2. #2
    Gast
    Hallo,
    ich fürchte, es liegt daran, dass toto und _toto nicht wirklich das gleiche sind. Ich kenne den Hi-Tech-Compiler nicht genau, ich weiss aber, dass man bei der Variablenübergabe an Assemblerroutinen Vorsicht walten lassen muss.
    Ich würde versuchen das Problem so zu umgehen:
    deriniere einen Zeiger für CHAR-Variablen
    legen den Zeiger für toto da ab
    übergib den Zeiger an die Assemblerroutine

    GRUSS
    INGO

  3. #3
    flown
    Gast
    Hallo,
    vielen Dank für deine Antwort. Doch nun habe ich ein weiteres Problem, wenn ich ein Wert als Parameter übergebe, finde ich diesen im Arbeitsregister. Aber wo wäre dann, wenn ich zwei Parameter übergeben möchte, den zweiten Parameter zu finden?

    Vielen Dank

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress