Forum: Mikrocontroller und Digitale Elektronik PIC, C18: Linker Problem


von Pascal S. (Firma: none) (pascals)


Lesenswert?

Ich bin mich gerade am Herantasten an die MC-Welt. Nachdem ich nun doch 
schon einiges gelesen habe und auch schon viel verstehe, bin ich nun 
jedoch an ein Problem gestossen.

Ich verwende MPLAB IDE v8.46 und den C18 Compiler. Schlussendlich möchte 
ich einen PIC18F4520 benützten.
Als erstes benutzte ich die MPASM Toolsuite, konnte bereits LED's 
ansteuern und den PIC damit programmieren. Da ich aber die 
Assembler-Sprache nicht geläufig habe, wollte ich das selbe mit der C18 
Toolsuite erreichen.
Hatte mir dazu folgendes Tutorial angeschaut:

http://www.youtube.com/watch?v=84Tu4eLTLVY
How To Program A PIC18F452 With MPLAB IDE?

Habe dies so durchgeführt, bin dann aber beim "Buid All" auf die 
folgende Fehlermeldung gestossen:


************************************************************************
Debug build of project `C:\Users\Pascal 
Stadelmann\Documents\Technikerschule\Mikrocontrollertechnik\CaseStudy 
Zutrittssystem\Test2mitC18.mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.38, mcc18.exe 
v3.37.01, mplib.exe v4.38
Preprocessor symbol `__DEBUG' is defined.
Target debug platform is `__MPLAB_DEBUGGER_ICD3=1'.
Debug platform options are: `__ICD2RAM=1', `__MPLAB_SWBPS_ON=1'.
Sun Jan 30 18:48:56 2011
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Users\Pascal 
Stadelmann\Documents\Technikerschule\Mikrocontrollertechnik\CaseStudy 
Zutrittssystem\TestCode.o".
Clean: Done.
Executing: "C:\Program Files\Mikrocontroller\Microchip\MPLAB 
C18\v3.37.01\bin\mcc18.exe" -p=18F4520 "C:\Users\Pascal 
Stadelmann\Desktop\TestCode.c" -fo="TestCode.o" -D__DEBUG 
-D__MPLAB_DEBUGGER_ICD3=1 -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
C:\Users\Pascal Stadelmann\Desktop\TestCode.c:6:Warning [2066] type 
qualifier mismatch in assignment
Executing: "C:\Program Files\Mikrocontroller\Microchip\MPLAB 
C18\v3.37.01\bin\mplink.exe" /l"C:\Program 
Files\Mikrocontroller\Microchip\MPLAB C18\v3.37.01\lib" 
"..\..\..\..\..\..\Program Files\Mikrocontroller\Microchip\MPLAB 
C18\v3.37.01\bin\LKR\18f4520_g.lkr" "TestCode.o" "C:\Program 
Files\Mikrocontroller\Microchip\MPLAB C18\v3.37.01\lib\p18F4520.lib" 
"C:\Program Files\Mikrocontroller\Microchip\MPLAB 
C18\v3.37.01\lib\p18F4520_e.lib" /u_CRUNTIME /u_DEBUG 
/u_DEBUGCODESTART=0x7d80 /u_DEBUGCODELEN=0x280 /u_DEBUGDATASTART=0x5ef 
/u_DEBUGDATALEN=0x11 /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 
/z__MPLAB_DEBUGGER_ICD3=1 /z__ICD2RAM=1 /z__MPLAB_SWBPS_ON=1 
/o"Test2mitC18.cof" /M"Test2mitC18.map" /W
MPLINK 4.38, Linker
Copyright (c) 1998-2010 Microchip Technology Inc.
Error - Device not specified. Use /p option to specify a device.
Errors    : 1

Link step failed.
----------------------------------------------------------------------
Debug build of project `C:\Users\Pascal 
Stadelmann\Documents\Technikerschule\Mikrocontrollertechnik\CaseStudy 
Zutrittssystem\Test2mitC18.mcp' failed.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.38, mcc18.exe 
v3.37.01, mplib.exe v4.38
Preprocessor symbol `__DEBUG' is defined.
Target debug platform is `__MPLAB_DEBUGGER_ICD3=1'.
Debug platform options are: `__ICD2RAM=1', `__MPLAB_SWBPS_ON=1'.
Sun Jan 30 18:48:57 2011
----------------------------------------------------------------------
BUILD FAILED
***********************************************************************

ERROR - DEVICE NOT SPECIFIED...

was ist da falsch gelaufen?

...das folgende ist mein Source-Code:

************************************************************************ 
*
#include <p18f4520.h>
#include <stdio.h>

void main()
{
 printf("Hello World \n");
}
************************************************************************ 
*

von Lehrmann M. (ubimbo)


Lesenswert?

Pascal Stadelmann schrieb:
> Error - Device not specified.

Irgendwo hast du was beim Einstellen des verwendeten PICs was vermurkst.

Verwendest du auch einen PIC18F452 ?


Pascal Stadelmann schrieb:
> Schlussendlich möchte
> ich einen PIC18F4520 benützten.

Ansonsten musst du natürlich das Linkerscript auch für den PIC184520 
raussuchen (wie im Video beschrieben). Im Project-Wizzard (auch siehe 
Video) natürlich auch den richtigen PIC verwenen. Video ab 2:08.

von Pascal S. (Firma: none) (pascals)


Lesenswert?

Danke für deine rasche Antwort.
Ich verwende nur einen PIC18F4520, habe dies im Projekt-Wizzard so 
ausgewählt und "selbstverständlich" auch die Linkerdateien dazu 
(PIC18F4520) ausgesucht.
...muss wohl weiter suchen.

von Lehrmann M. (ubimbo)


Lesenswert?

Pascal Stadelmann schrieb:
> ...muss wohl weiter suchen.

Versuch mal die versch. Linkerscripte durch. Alle die dem Namen nach zum 
PIC passen.

Hast du denn den entsprechenden PIC auch im Projekt-Explorer eingebunden 
(wie im Video)

Pascal Stadelmann schrieb:
> #include <p18f4520.h>
> #include <stdio.h>
>
> void main()
> {
>  printf("Hello World \n");
> }

Mach mal was anderes als Dinge die man auf einen PIC eigentlich nicht 
nutzt (stdio.h, printf)

Ein PIC braucht immer eine endlos-Schleife.

Was du noch erzählen musst ist was du mit einem printf in einem PIC 
Programm hast. Mach was sinnvolles:

int a=0;
a=8;

Wenn das geht dann liegt's am stdio.h

Das glaube ich aber eher nicht ...

ansonsten versuch mal das Tutorial: http://pic-projekte.de/pic_c.html

Da einrichten wie beschrieben.

von Pascal Stadelmann (Gast)


Lesenswert?

Michael vielen Dank für deine Antwort, dein Link ist toll. Grundsätzlich 
sehr einfach beschrieben, aber das ganze Thema auch wirklich gut 
zusammengefasst.

Zu meinem Problem...Ich habe den Fehler gefunden. Die Pfadlänge der 
Linker/Library-Dateien (Project Wizzard->C18 Toolsuite...) waren zu 
lange!

Das Problem ist auch daran zu erkennen, das jedes mal beim Erstellen 
eines neuen Projektes diese Dateien ausgewählt werden müssen, da ein 
rotes X vor der jeweiligen Datei zu finden ist.

Danke jedoch allen für die Hilfe!!!

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.