mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TriCore: versage schon bei simplen Sachen


Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

fuer die Uni soll was auf einem Infineon TriCore 1796 programmieren.
Nur Versage ich schon bei den einfachsten Dingen, wie z.B.:

#include <stdio.h>
#define USERDEBUG

int main(void){
  printf("alles funzt\n");
  #ifdef USERDEBUG
    printf("debugging");
  #endif
  P0_IOCR0 = 0x80808080;
  P0_IOCR4 = 0x80808080;
  P0_IOCR8 = 0x80808080;
  P0_IOCR12 = 0x80808080;
  P0_OUT = 0x0000ffff;

  for(;;){
     __nop();
  }
  return 0;
}


da ist ja nun eigentlich keine Zauberei drin als einfach alle Pins von
Port0 anzuschalten. Leider bekomme ich nur vom Compiler (Altium
Tasking)

ctc E333: ["main.c" 10/11] incompatible types at assignment
ctc E333: ["main.c" 11/11] incompatible types at assignment
ctc E333: ["main.c" 12/12] incompatible types at assignment
ctc E333: ["main.c" 13/9] incompatible types at assignment
ctc W544: ["main.c" 18/2] unreachable code
4 errors, 1 warnings
wmk: *** action exited with value 1.


Nun frage ich mich einfach was ich bei diesem Geraet prinzipiell falsch
mache? Ich hab ja nun schon Atmels Programmiert, aber wieso diese
daemliche Meldung kommt weiss ich einfach nicht.

Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist wohl eher ein C als ein tricore Problem.

entweder es fehlt ein include file, oder deine Typen sind falsch. Guck
doch mal wo die P0_IO.. definiert sind.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in diesem Tasking entwicklungumgebungsding hab ich die automatische
Einbindung von .sfr Dateien aktiviert. Da werden die ganzen Register
deklariert, z.B.:
#define P0_IOCR4 (*(P0_IOCR4_type*)  0xF0000C14u)  /* Input/Output
Control Register 4 */

typedef volatile union
{
  struct
  {
    unsigned int           : 4;
    unsigned int PC4        : 4;
    unsigned int           : 4;
    unsigned int PC5        : 4;
    unsigned int           : 4;
    unsigned int PC6        : 4;
    unsigned int           : 4;
    unsigned int PC7        : 4;
  } B;

  int I;
  unsigned int U;

} P0_IOCR4_type;

und er meckert ja auch nicht "unbekannter Name" sondern inkompatible
zuweisung.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast doch schon alles gefunden was du brauchst. Ich denke du weisst
es eigentlich. Du hast eine union vor Dir. Wie greift man in C auf eine
UNION zu?

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, guter Tipp!

Waere da nie drauf gekommen, dass ich bei meinen Registern jetzt immer
mit .I .U .B indizieren muss.

Aber wieso machen die das? Ist doch voellig egal ob ich

Register.I = 0xffffffff
 oder
Register.U = 0xffffffff

schreibe?

Hoechstens wichtig wenn ich lese? Aber dann koennte ich doch z.B. einer
funktion namens

lesen(signed int)

sowohl register.I als Register.U uebergeben, wichtig ist doch, dass
lesen denkt es sein ein register.I? Aber der Compiler meckert dann,
oder?

Autor: KlausT. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute

ich mach mich auch an den 3core.

Nur weis ich noch nicht wie man den programmiert? OK es gibt das 
Starterkit. Aber was wenn ich den TC1130 in eine externe Schaltung 
setzen will? Womit kann ich den programmieren? Oder geht nur Jtag?

Autor: KlausT. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jtag nur zum Debuggen?

Autor: Fabian Scheler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

also wir setzen hier den TriCore TC1796 seit ein paar Monaten 
erfolgreich an unserem Lehrstuhl ein, wir verwenden aber nicht den 
Tasking Compiler, sondern den GCC von HighTec. Ich habe hier ein paar 
Erfahrungen beizutragen, aber auch eine Frage:

Zum Thema eigene Schaltung:
alle TriCore-Derivate sind in BGA-Gehäusen unter gebracht, die in eine 
eigene Schaltung zu integrieren dürfte also schon ziemlich sportlich 
werden, wenn man kein professionelles Equipment zur Verfügung hat.

Zum Thema Debuggen:
der TriCore hat ein sog. OCDS (OnChip Debug System), also soetwas 
ähnliches wie ein JTAG, nur von Infineon :-) und die Eva-Boards von 
Infineon selbst haben auch alle einen Onboard-Wiggler, d.h. man kann die 
Teile einfach über die parallele Schnittstelle an flanschen und das Teil 
prinzipiell debuggen - man braucht aber noch etwas, das das 
OCDS-Protokoll in ein von irgendeinem Debugger unterstütztes Protokoll 
(z.B. für den GDB) umsetzt, die GNU Toolchain von HighTeC bringt hier 
einen sog. jtagserver mit. Das Debuggen mit dem GDB funktioniert zwar 
insgesamt sehr gut, ist aber für einen so komplexen Chip wie den TC1796 
schon etwas spartanisch, wir haben deshalb noch einen Lauterbach Trace32 
inkl. Tracer, d.h. man kann Instruktions-Traces mit Timestamps 
aufzeichnen lassen, zurück steppen (!!!), hat auch noch sehr einfach 
Zugriff auf alle möglichen Peripherie-Register ..., der Nachteil: das 
Teil hat ca. 10000 € gekostet, also für den Hobbyisten nicht 
erschwinglich, für ernsthafte Softwareentwicklung aber auf jedenfall 
lohnend.

Zum Thema Flashen:
Das Flashen über den Debugger (GDB und Trace32) laden zunächst über das 
OCDS ein Programm ins RAM des Controllers, das seinerseits die 
eigentlich Programmierung des Flash übernimmt, es ist also eine 
In-System-Programmierung. Prinzipiell kann der TC1796 auch von diversen 
Schnittstellen, wie z.B. seriell, CAN, etc. booten und man könnte sich 
überlegen, das Programm zum Flashen auf diese Weise zu laden. Wie man 
den TriCore aber "von außen" in den Zustand versetzt, dass er auf dieses 
spezielle Weise bootet, damit habe ich mich noch nicht beschäftigt, und 
weiß demzufolge auch nicht, ob das überhaupt klappt - abgesehen davon: 
man möchte das teil wirklich nicht alleine über eine LED debuggen, also 
kann man auch gleich über den Debugger Flashen (ich habe es allerdings 
noch nicht geschafft über den GDB Breakpoints im Flash zu setzen :-()

Meine Frage zum Thema Tasking:
Wie findest du bisher die Tasking Toolchain - viele Leute mit denen ich 
mich unterhalten habe, empfinden diese Toolchain als einzige Plage. Ist 
da mittlerweile das Linker-Skript-Format sauber dokumentiert?

Ciao, Fabian

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.