www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arm7 TMS470r1 Probleme bei Portierung von IAR auf uVision3


Autor: Michael Ts (_mike_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!
Habe folgendes Problem.
Versuche ein CAN demo projekt von IAR auf die Keil Umgebung uVision3 zu 
portieren.
Soweit so gut.

probleme gibt es mit den Interrupts und zwar:

__enable_interrupt() //ist glaub ich eine IAR spezifische Anweisung und 
funktioniert unter uVision3 nicht.

hat da jemand Erfahrung im Umgang mit dieser Umgebung?

als error code wird
ERROR: L6218E:Undefined symbol __enable_interrupt (...).
ausgegeben.

wär über jede hilfe dankbar.
mfg Mike

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine direkte Loesung, aber da noch keiner geantwortet hat: die Funktion 
duerfe das IRQ-Bit im CPSR des aktiven Modes löschen und damit 
INT-execptions auf der ARM-"Core-Ebene" aktivieren. Falls in der 
Keil/ARM-Library keine Funktion dazu vorhanden ist, kann man sich diese 
mit ein wenig inline-Assembler auch nachbauen. Fuer gcc z.B. so (Code 
aus einem Beispiel von R O Software):
#define IRQ_MASK 0x00000080

inline unsigned asm_get_cpsr(void)
{
  unsigned long retval;
  asm volatile ("mrs  %0, cpsr" : "=r" (retval) : /* no inputs */  );
  return retval;
}

inline void asm_set_cpsr(unsigned val)
{
  asm volatile ("msr  cpsr, %0" : /* no outputs */ : "r" (val)  );
}

void enableIRQ(void)
{
  unsigned my_cpsr;

  my_cpsr = asm_get_cpsr();
  asm_set_cpsr(my_cpsr & ~IRQ_MASK);
  return my_cpsr;
} 

Mit der uVision-Dokumentation zu inline-Assembler sollte das leicht 
portierbar sein. Ansonsten waere vielleicht auch hilfreicht anzugeben, 
welcher Compiler fuer das Project genutzt wird (GNU, CARM oder RealView 
- uVision unterstützt alle drei).

Nur als Hinweis, falls der Startup-Code nicht aus dem Urspungscode 
portiert wurde: CPSR kann im User-Mode nicht veraendern werden, also im 
Startup-Code nachschauen, in welchen Mode "main()" gerufen wird. Falls 
"enable_interrupt" nicht ueber Software-Interrupts (SWI) implementiert 
ist (also so wie im Code oben), ist System-Mode die richtige Wahl.

Man kann auch INT-exceptions direkt im Startup-Code aktivieren, das wird 
dann ueblicherweise zusammen mit der Stack-Pointer-Initialisierung 
gemacht. Dann sind INT-Exceptions von Anfang an aktiviert und man 
benötigt die Funktion eventuell nicht mehr. Bei Nutzung eines 
Interrupt-Controllers (die TI ARM7 haben wenn recht erinnert eine 
VIC-"Zelle") normalerweise keine Problem.


Autor: Michael Ts (_mike_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super Danke für den Tipp.
Hab zwar schon gestern geantwortet, das hat aber nicht so ganz 
funktioniert.
Bin zwar nicht so fit in Assembeler, werd aber sofort deine Ideen 
ausprobieren.
Benütze den RealView Compiler by the way.

Werd mich jetzt wieder der Aufgabe widmen.. danke noch mal and have a 
nice day
lg mike

Autor: Michael Ts (_mike_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FYI -> so funktionierts beim Real View Compiler



__inline void enable_IRQ(void)
{
int tmp;
__asm
{
MRS tmp, CPSR
BIC tmp, tmp, #0x80
MSR CPSR_c, tmp
}
}
__inline void disable_IRQ(void)
{
int tmp;
__asm
{
MRS tmp, CPSR
ORR tmp, tmp, #0x80
MSR CPSR_c, tmp
}
}

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.