mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C: Thumb-Mode Programm ruft ARM-Mode Programm auf


Autor: Karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Thumb-Mode Programm lädt ein ARM-Mode Programm ins RAM. Wie kann ich 
unter C zum ARM-Mode Programm verzweigen?

Die Programmierumgebung ist von Keil. Der Compiler ist der CARM.

Autor: Tim Seidel (maxxie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Generell: 
http://publications.gbdirect.co.uk/c_book/chapter5...

Das LSB der Adresse unterscheidet über ARM/Thumb Mode. Ist es 0, wird 
der Code als ARM ausgeführt, ist es 1 als Thumb. (Die Adresse muss ja so 
oder so 32 bzw 16 Bit aligned sein, also steht das Bit dafür zur 
Verfügung)

Autor: Karlheinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Wechsel in den ARM-Mode und der Sprung ins RAM funktioniert:

  __asm
  {
   LDR  R5,=0x200000
   BX   R5
  }

Jetzt läßt sich aber kein Code im RAM ausführen. Im Simulator kommt die 
Fehlermeldung:

*** error 65: access violation at 0x00200000 : no 'execute/read' 
permission

Was muß ich noch einstellen?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Richtige Adresse eintragen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird die Funktion per Programm ad hoc erstellt, oder sollte Keil 
tatsächlich nicht in der Lage sein, Funktionen explizit als ARM 
Funktionen deklarieren zu lassen und ins RAM zu legen?

Wenn Keil Funktionen als ARM oder Thumb deklarieren kann, dann sollte 
ein entsprechender Zeiger auf solch eine Funktion ebenfalls ausreichen.

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo haste denn den CARM ausgegraben? Der wird seit vielen Jahren nicht 
mehr gepflegt und ist nie so ganz zur Produktreife gelangt. Sollte aber 
trotzdem gehen, ein Wechsel zu MDK oder einem anderen aktuellen 
C-Compiler waere sehr empfehlenswert!
Robert

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.