www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TC1796 FreeRTOS Port


Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
versuche gerade die FreeRTOS Portierung für den TC1796 in Betrieb zu 
nehmen.

Scheitern tut das ganze an Assembler Zeilen wie dieser (zu finden in der 
port.c beim Context Switch):
  unsigned portLONG xSavePCX, xSaveLR;
  ...
  __asm__( "mov.d %0, %%a11":"=r"(xSaveLR) );

Folgende Fehlermeldung bekomme ich vom GCC (v3.3):
   ../src/RTOS/port/port.c:247: error: [12568] inconsistent operand
   constraints in an `asm'

Bin leider nicht so der Assemblerheld. Hoffe mir kann jemand helfen.

Danke.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist portLONG?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da der Tricore verschiedene Registertypen hat, könnte es sein dass "=r" 
nicht zulässig ist und target-abhängige constraints verwendet werden 
müssen. Die nur die Doku der betreffenden GCC Portierung kennt. Da die 
nicht Bestandteil der offiziellen Version ist...

Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das klingt gut. Hab ich auch schon probiert, bin dabei aber leider auf 
keine grünen Zweig gekommen.
Hast du ne Idee welche ich nutzen kann: Muss ein long schreiben und 
Adressen lesen.

Wundern würde mich noch, das das eine Portierung für den GCC und für den 
TC1796 sein soll.

portLONG ist ein typedef oder Makro 32 Bit Wert.

Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleiner Nachtrag.
Hab das gerade im Handbuch nachgelesen.
Die "=r" wird unterstützt.

Mist

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:

> Hast du ne Idee welche ich nutzen kann: Muss ein long schreiben und
> Adressen lesen.

Habe weder einen Tricore noch eine Doku für dessen GCC. Mehr als 
allgemeine Auskünfte gibt's dazu also von mir nicht.

> Wundern würde mich noch, das das eine Portierung für den GCC und für den
> TC1796 sein soll.

Den Satz krieg ich nicht dekodiert. Ein TC1796 ist laut Google ein 
Tricore und so ein ASM-Statement mitsamt dem Begriff "operand 
constraint" gibt's jedenfalls nur beim GCC.

Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mal ein paar andere constraints ausprobiert die mir passend 
erschienen.

Dazu meint der GCC:
  C:\DOKUME~1\hausm\LOKALE~1\Temp/ccq2aaaa.s: Assembler messages:
  C:\DOKUME~1\hausm\LOKALE~1\Temp/ccq2aaaa.s:159: Error: Opcode/operand
  mismatch: mov.d [%a10]4,%a11


> Den Satz krieg ich nicht dekodiert. Ein TC1796 ist laut Google ein
> Tricore und so ein ASM-Statement mitsamt dem Begriff "operand
> constraint" gibt's jedenfalls nur beim GCC.

Das schon war, hab mich da nur gefragt wie der Erfinder dieses Codes es 
geschafft hat zu kompilieren.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier es eher mal mit sowas wie

__asm__( "mov.d %0, %%a11":"=d"(xSaveLR) );

Ein operand constraint ist das "r" in "=r"(x). %0 ist bloss der Verweis 
darauf. Aber ob da "r" oder "d" oder "D" oder ... richtig ist kann ich 
nicht erraten.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:

> Das schon war, hab mich da nur gefragt wie der Erfinder dieses Codes es
> geschafft hat zu kompilieren.

Andere Version?

Autor: mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

you will find a TriCore training for GCC and Inline Assembler at 
http://www.hightec-rt.com/de/downloads/cat_view/58...

Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mario,
hab in einem anderen Thread von dir eine Antwort gefunden, das es noch 
andere freeRTOS implementierungen für den TriCore gibt.
(Uni-Erlangen, Uni Budapest, TU Wien and University in Singapore)

Könntest du mir da auch die Kontakte zukommen lassen?

Autor: M. H. (kroggy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke.
Das mit dem "=d" und "=D" hab ich heute morgen auch entdeckt. Die "=r" 
wird doch nicht für die TriCore GCC Portierung unterstützt.
Kompilieren tut das ganze jetzt auf jeden Fall mal.

Funktionieren noch nicht. Werde mir das morgen früh mal mit dem Debugger 
genauer anschauen.

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.