Probleme mit KPIT Gnu Compiler für M32C

Gast #1619744
Hallo zusammen,

ich verwende den GNU Compiler von KAPIT zur Programmierung unserer 
M32C87 Prozessoren von Reneas. Ich möchte gerne aus einer Interrupt 
Service Routine ein Unterprogramm aufrufen. Ich habe die Header Datei, 
in der das Unterprogramm definiert ist eingebunden. Kompilieren kann ich 
das Projekt. Der Linker sagt mir jedoch: undefined reference to 'mem0'.

Es ist übrigens völlig egal, ob ich Quellcode im Unterprogramm stehen 
hab oder nicht. Das Linken funktioniert erst dann, wenn ich das 
Unterprogramm auskommentiert habe.

Hat einer von euch ne Idee woran das liegen könnte? Ich hab mal ein 
Testprogramm angehänt, in dem der Fehler auftritt.

MfG
Timo
Angehängte Dateien:
Persönliche Seite #1619775
Wegen undefined reference... Hab ich keine Ahnung, aber normalerweise 
ruft man aus der ISR nichts auf.

Du bastelst dir eine Merker-Variable, die in der ISR gesetzt wird. In 
der Hauptschleife wird die Variable abgefragt und jenachdem ob sie 
gesetzt ist, ausgeführt.

Beispiel:
1
...
2
char merker;
3

4
int main() {
5
    merker = 0;
6
    for(;;) {
7
        if(merker) {
8
            tuwas;
9
            merker = 0;
10
        }
11
    }
12

13
}
14

15
isr() {
16
    merker = 1;
17
}
Gast #1619777
> Ich habe die Header Datei,
> in der das Unterprogramm definiert ist eingebunden.

Das ist schoen, dann weiss dein Compiler also bereits wie deine Funktion 
heisst und welche Typen sie erwartet/liefert.

> Der Linker sagt mir jedoch: undefined reference to 'mem0'.

Dann hast du vergessen dem Linker zu sagen in welchem Objectcode sich 
deine Funktion befindet. Du muss ihm diese Information beim Aufruf 
uebergeben.

Olaf
Gast #1620423
Im letzen Aufruf des gcc muss irgendwo foo.o mit drin stehen. Also der 
Code den dein Compiler irgendwann mit deiner Funktion vorher erzeugt 
hat. Das traegt man normalerweise irgendwo im Makefile ein. Jedenfalls 
falls du ein Makefile benutzt.

Olaf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.