mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Linker-Problem "can not fit the section"


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt folgende Fehlermeldung:

Debug build of project `C:\Dokumente und 
Einstellungen\Studium\Desktop\Source Code\Wasserwaage_reloaded.mcp' 
started.
Language tool versions: mpasmwin.exe v5.31, mplink.exe v4.31, mcc18.exe 
v3.31
Preprocessor symbol `__DEBUG' is defined.
Target debug platform is `__MPLAB_DEBUGGER_ICD2=1'.
Debug platform options are: `__ICD2RAM=1'.
Wed Jun 17 12:24:25 2009
----------------------------------------------------------------------
Make: The target "C:\Dokumente und Einstellungen\Studium\Desktop\Source 
Code\Schaufeln.o" is up to date.
Make: The target "C:\Dokumente und Einstellungen\Studium\Desktop\Source 
Code\KSWW_MAIN_C.o" is up to date.
Make: The target "C:\Dokumente und Einstellungen\Studium\Desktop\Source 
Code\LCD12864.o" is up to date.
Make: The target "C:\Dokumente und Einstellungen\Studium\Desktop\Source 
Code\developers.o" is up to date.
Make: The target "C:\Dokumente und Einstellungen\Studium\Desktop\Source 
Code\Wasserwaage_reloaded.cof" is out of date.
Executing: "C:\MCC18\bin\mplink.exe" 
/l"C:\Programme\Microchip\MCC18\lib" "18f26j11_g.lkr" "Schaufeln.o" 
"KSWW_MAIN_C.o" "LCD12864.o" "developers.o" "C:\Dokumente und 
Einstellungen\Studium\Desktop\Source Code\p18F26J11.lib" /u_CRUNTIME 
/u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /z__MPLAB_DEBUGGER_ICD2=1 
/z__ICD2RAM=1 /o"Wasserwaage_reloaded.cof" /M"Wasserwaage_reloaded.map" 
/W

MPLINK 4.31, Linker
Copyright (c) 2009 Microchip Technology Inc.
Error - section '.udata_developers.o' can not fit the section. Section 
'.udata_developers.o' length=0x00000400
Errors    : 1

Link step failed.
----------------------------------------------------------------------
Debug build of project `C:\Dokumente und 
Einstellungen\Studium\Desktop\Source Code\Wasserwaage_reloaded.mcp' 
failed.
Language tool versions: mpasmwin.exe v5.31, mplink.exe v4.31, mcc18.exe 
v3.31
Preprocessor symbol `__DEBUG' is defined.
Target debug platform is `__MPLAB_DEBUGGER_ICD2=1'.
Debug platform options are: `__ICD2RAM=1'.
Wed Jun 17 12:24:25 2009
----------------------------------------------------------------------
BUILD FAILED




Irgendwie gibts Probleme mit der Datei Delopers. Benötigt die Datei 
zuviel Speicher für den PIC18F26j11?

Ich komm leider nicht weiter. Vielleicht kann mir ja jemand erklären, 
was der Error bedeutet?

Vielen Dank im Voraus

Gruß Matthias

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese Datei scheint 0x400 Bytes RAM zu benötigen (udata). Wieviel hat 
denn der betreffende PIC?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Program Memory 64kbytes
Data Memory 3,8kbytes

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wir haben das ganze Programm schon lauffähig auf nem PIC18F2620 gehabt. 
Der hat aber die gleichen Speicher wie der PIC18F26j11, den wir jetzt 
benutzen.

Autor: dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Linker script überprüfen, evt. muss händisch ein größerer speicher 
bereich angelegt und belegt werden werden.

dennis

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo genau muss ich da was ändern? Sorry, hab das noch nie angepasst.

Hier der Quellcode des Linker-Files:

// File: 18f26j11_g.lkr
// Generic linker script for the PIC18F26J11 processor

#DEFINE _CODEEND _DEBUGCODESTART - 1
#DEFINE _CEND _CODEEND + _DEBUGCODELEN
#DEFINE _DATAEND _DEBUGDATASTART - 1
#DEFINE _DEND _DATAEND + _DEBUGDATALEN

LIBPATH .

#IFDEF _CRUNTIME
  #IFDEF _EXTENDEDMODE
    FILES c018i_e.o
    FILES clib_e.lib
    FILES p18f26j11_e.lib

  #ELSE
    FILES c018i.o
    FILES clib.lib
    FILES p18f26j11.lib
  #FI

#FI

#IFDEF _DEBUGCODESTART
  CODEPAGE   NAME=page       START=0x0               END=_CODEEND
  CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND 
PROTECTED
#ELSE
  CODEPAGE   NAME=page       START=0x0               END=0xFFF7
#FI

CODEPAGE   NAME=config     START=0xFFF8            END=0xFFFF 
PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF 
PROTECTED

#IFDEF _EXTENDEDMODE
  DATABANK   NAME=gpre       START=0x0               END=0x5F
#ELSE
  ACCESSBANK NAME=accessram  START=0x0               END=0x5F
#FI

DATABANK   NAME=gpr0       START=0x60              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF
DATABANK   NAME=gpr3       START=0x300             END=0x3FF
DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF
DATABANK   NAME=gpr6       START=0x600             END=0x6FF
DATABANK   NAME=gpr7       START=0x700             END=0x7FF
DATABANK   NAME=gpr8       START=0x800             END=0x8FF
DATABANK   NAME=gpr9       START=0x900             END=0x9FF
DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
DATABANK   NAME=gpr12      START=0xC00             END=0xCFF

#IFDEF _DEBUGDATASTART
  DATABANK   NAME=gpr13      START=0xD00             END=_DATAEND
  DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND 
PROTECTED
#ELSE //no debug
  DATABANK   NAME=gpr13      START=0xD00             END=0xDFF
#FI

DATABANK   NAME=gpr14      START=0xE00             END=0xEBF
DATABANK   NAME=sfr14      START=0xEC0             END=0xEFF 
PROTECTED
DATABANK   NAME=sfr15      START=0xF00             END=0xF5F 
PROTECTED
ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF 
PROTECTED

#IFDEF _CRUNTIME
  SECTION    NAME=CONFIG     ROM=config
  #IFDEF _DEBUGDATASTART
    STACK SIZE=0x100 RAM=gpr12
  #ELSE
    STACK SIZE=0x100 RAM=gpr13
  #FI
#FI

Autor: Jochen64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hatte das problem auch schon mal, kann mich im Moment (bin grade auf 
Arbeit) leider nicht genau dran erinnern. Jedenfalls lag es irgendwie 
daran, das ein Modul im Codebereich eine Überschneidung mit ORG 0x00 
oder ORG 0x04 (Reset / Interrupt) hatte. Geholfen hat - wenn ich mich 
richtig erinnere - im Quelltext (ASM) explizit jedem Code-Segment eine 
Adresse zu geben.

Ausserdem noch mal bei den Projekteinstellungen vergleichen, ob 
"Absolute" oder "Relocatable" Code eingestellt ist.

Autor: Jochen64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was: Bei "Debug" Konfiguration kann es zu einer Überschneidung mit 
dem Debug Code kommen (der hat irgeneine feste Adresse). Probier mal 
"Release".

Und natuerlich nochmal gucken, das in allen ASM Sourcecodes das richtige 
#include File für das geänderte Device eingestellt ist.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich stehe gerade vor dem gleichen Problem.
>>
Error - section '.udata_user.o' can not fit the section. Section 
'.udata_user.o' length=0x00000193
<<
Das Problem kam mit dem Anwachsen des Codes für neue Features. 
Offensichtlich bekommt der Linker die Daten nicht unter, aber warum?? 
GPR sind noch genügend da.
PIC ist ein 18F4455 mit CDC-Framework für USB

Vielen Dank für jegliche Tipps.

Gruß, CHris.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso:
Debug oder Release macht keinen Unterschied. Egal ob 18f4455i.lkr oder 
18f4455.lkr verwendet wird. Ich steh ehrlich gesagt auf dem Schlauch...

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um Daten grösser als 256 Bytes verarbeiten zu können musst du im 
Linkerfile arbeiten.

Wie es genau funktioniert kannst du z.B. hier nachlesen
http://www.kevin.org/frc/C18_2.4_getting_started.pdf
3.7 Example 6

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke.

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.