Aus Startup-Code C++ Funktion aufrufen (ARM)

Gast #1410302
Lesenswert?

Hallo,
ich habe in meinem Startup-Code (LPC2000) ein Problem. Und zwar möchte 
ich, bevor ich main aufrufe, eine andere Funtion starten, die 
dummerweise in C++ realisiert ist.
Im Startupcode gibts ja die Anweisungen

  ldr r12, =main
  mov lr, pc
  bx r12

nun möchte ich, bevor ich main aufrufe, eine andere Funktion starten 
namens init. Wenn ich folgendes schreibe:


  ldr r12, =init
  mov lr, pc
  bx r12

dann funktioniert dies zwar, völlig zuverlässig, aber nur, wenn init 
eine C-Funktion ist. Sobald ich init in einem cpp-File habe (und das 
habe ich, weil init auf bestimmte C++ Klassen zugreifen muss), dann 
meckert der Compiler (undefinied symbol).

Was  muss ich tun, damit er erkennt, was init ist? In C geht das ja 
auch.


Gruss
Gast #1410813
Lesenswert?

Ja, genau so habe ich es gemacht.
Mein Startup-Code lädt erst die Adresse der init-Funktion, so:

   ldr r12, =init
   mov lr, pc
   bx r12

und dann erst wird main gestartet:

   ldr r12, =main
   mov lr, pc
   bx r12

wobei die funktion init so aussieht:

extern "C" void init(void)
{
...
}

Gruss

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren