Forum: Mikrocontroller und Digitale Elektronik Tricore TC1796 und Matlab-C-Code


von Richard (Gast)


Lesenswert?

Hallo,

Ich arbeite momentan unter Windows XP mit Matlab 7.1.0.246(R14)Service 
Pack 3 und erzeuge mit Real-Time-Workshop C-Code für die Implemetierung 
meiner Mikrocontroller TRICORE TC1796 von Infineon. Ich habe auch schon 
bei Real-Time-Workshop die Hardware-Konfiguration erstellt, die den 
TC1796 unterstüzt.
Jetzt beim compilieren dieses Matlab-C-Codes mit dem TASKING Compiler 
v2.3r1 von Altium bekomme ich unter anderem folgende Fehlermeldungen:

ctc E201: ["simstruc.h" 281/1] #error Unrecognized use.
ctc E201: ["simstruc.h" 361/1] #error Must define one of RT, NRT, 
MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE
ctc E201: ["simstruc.h" 484/1] #error Unhandled case
ctc E208: ["simstruc.h" 1288/5] syntax error - token "<basic-type>" 
inserted before "mxArray"
ctc E208: ["simstruc.h" 1288/19] syntax error - token ";" inserted 
before "*"
ctc E208: ["simstruc.h" 1288/19] syntax error - token "<basic-type>" 
inserted before "*"
ctc E208: ["simstruc.h" 1999/6] syntax error - token "<basic-type>" 
inserted before "mxArray"
ctc I805: ["simstruc.h" 1999/6] start of current parameter declaration
ctc E208: ["simstruc.h" 1999/14] syntax error - token "," inserted 
before "*"
ctc E208: ["simstruc.h" 1999/14] syntax error - token "<basic-type>" 
inserted before "*"
ctc I805: ["simstruc.h" 1999/14] start of current parameter declaration


Und ein Teil des automatisch erzeugten Codes sieht so aus:


/*====================================*
 * Model reference sim target is an RTW generated
 * S-Function (from the point view of Simstruct).
 */
# if defined(MDL_REF_SIM_TGT)

#  undef  MATLAB_MEX_FILE
#  define MATLAB_MEX_FILE          (1)

#  undef  RTW_GENERATED_S_FUNCTION
#  define RTW_GENERATED_S_FUNCTION (1)

# endif

/*====================================*
 * Determine => MODE: SINGLE-TASKING OR MULTI-TASKING
 *
 * This must come after the inclusion of simstruc_types.h
 */
#if defined(MULTITASKING)
# undef  SS_MULTITASKING
# define SS_MULTITASKING     (1)
#endif

/*====================================*
 * Determine => MODE: SIMULATION OR GENERATED CODE
 */
#if defined(MATLAB_MEX_FILE) || defined(SL_INTERNAL) || 
defined(FIPXT_SHARED_MODULE)
# undef  SS_SIM
# define SS_SIM (1)
#else
# undef  SS_RTW
# define SS_RTW (1)
#endif

#elif defined(MATLAB_MEX_FILE)
  /*  Used in mex function that is NOT an S-Function mex
   */
/*
 * Currently, plain mex functions will be treated as if they are
 * normal sfunctions.
 *
# undef  SS_MEX
# define SS_MEX  (1)
*/
# undef  SS_SFCN_NORMAL
# define SS_SFCN_NORMAL    (1)

#else
# error Unrecognized use.
#endif

/*====================================================================== 
=====*
 * BEGIN SECTION
 * CHECK PROPER USAGE
 *
 * Issue errors if incompatible modes have been selected
 *======================================================================= 
====*/

#if (defined(RT) + defined(NRT) + defined(MATLAB_MEX_FILE) + 
defined(SL_INTERNAL) + defined(FIPXT_SHARED_MODULE) != 1)
# error Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or 
FIPXT_SHARED_MODULE
# if defined(RT)
#  error defined(RT)
# endif
# if defined(NRT)
#  error defined(NRT)
# endif
# if defined(MATLAB_MEX_FILE)
#  error defined(MATLAB_MEX_FILE)
# endif
# if defined(SL_INTERNAL)
#  error defined(SL_INTERNAL)
# endif
# if defined(FIPXT_SHARED_MODULE)
#  error defined(FIPXT_SHARED_MODULE)
# endif
#endif

# if !defined(TYPEDEF_MX_ARRAY)
#  define TYPEDEF_MX_ARRAY
    typedef real_T mxArray;
# endif
#else
  /*
   * Error
   */
# error Unhandled case
#endif

struct _ssSFcnParams {
    int_T         dlgNum;      /* Number of S-function parameters passed 
in   */
    mxArray       **dlgParams; /* The S-function parameters 
*/
    uint_T        *dlgAttribs; /* Disable parameter changes during 
simulation?*/

    /* union preserves the memory map of the Simstruc; the size of an 
integer
     * is always less than or equal to that of a pointer
     */
    union {
        int_T     numRtp;
        void      *placeholder;
    } numRtp;
    ssParamRec **rtp;
};



Jetzt weiß ich nicht was ich zu tun habe und würde mich sehr auf jede 
Hilfe freue.
Ich bedanke mich schon ein Mal für die Antworten.

Viele Grüße.
Richard



von Wolfram (Gast)


Lesenswert?

Entweder den ganzen Code posten, da es automatisch erzeugter Code ist 
lohnt isch das erstmal nur bedingt.

poste mal die Zeilen um Zeile 281 aus simstruc.h und markiere zeile 281.
Vielleicht sieht man es sofort.

von Dirk D. (dirkd)


Lesenswert?

Dann schau Dir doch mal die Fehler genauer an.

Es beginnt mit Präprozessor-Fehler.

Wahrscheinlich ist

MDL_REF_SIM_TGT

nicht definiert. Kurz deine Build-Umgebung ist nicht richtig 
konfiguriert.

von Richard (Gast)


Lesenswert?

Ok, werde jetzt wieder die Konfiguration anschauen vielleicht komme ich 
dann weiter.

Anhang: simstruc.h ( für diejenigen, die den Code genauer anschauen 
möchten)

von Richard (Gast)


Angehängte Dateien:

Lesenswert?

Ok, werde jetzt wieder die Konfiguration anschauen vielleicht komme ich
dann weiter.

Anhang: simstruc.h ( für diejenigen, die den Code genauer anschauen
möchten)

von antworter (Gast)


Lesenswert?

<draufguck>

"igitt" - den möchte ich nicht debuggen :-)

@Richard:

Sorry, da kann ich nicht helfen - meine Herangehensweise wäre anhand des 
füchterlichen Quelltextes wahrscheinlich, mir ein kleines "Flußdiagramm" 
(trifft es am ehesten) zu zeichnen, woraus ersichtlich wird, wann und wo 
die Strukturen etc. definiert werden (natürlich nur die, die Fehler 
erzeugen) und wovon sie abhängen.

Das ist zwar zeitintensiv, aber nach getaner Arbeit kann man das dann 
abheften, und beim nächsten Mal das Problem schneller lösen...

von Richard (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe das Problem gelöst, in dem ich jetzt meinen Code nicht 
mit Real-Time Workshop (grt.tlc) sondern mit Real-Time Embedded Coder 
(ert.tlc) automatisch erzeuge. (alle sind Toolboxen von Matlab/Simulink)
So kann ich den Code fehlerfrei für meinen Embedded Mikrocontroller 
compilieren und ich benötige nicht die Datei "simstruc.h" einzubinden 
und zu konfigurieren.

von Richard (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt habe ich ein einfach blödes Syntax-Fehler beim kompilieren leider 
weiß ich mometan nicht woran es liegen könnte. Ein paar tipps wären echt 
sehr hilfreich

TASKING program builder v2.3r1 Build 078 SN 00000000
Compiling and assembling "datei_code.c"
ctc E208: ["datei_code.c" 38/1] syntax error - token ";" inserted before 
"{"
ctc E208: ["datei_code.c" 52/1] syntax error - token ";" inserted before 
"{"
ctc E208: ["datei_code.c" 90/1] syntax error - token ";" inserted before 
"{"
3 errors, 0 warnings
wmk: *** action exited with value 1.

von Guenter F. (gfambach)


Lesenswert?

Hallo Richard,
ich befasse mich schon längerem mit dem RTW embedded coder. Da mir 
bisher nicht bekannt war, dass der TriCore als embedded target 
existiert, würde ich gerne mehr darüber erfahren, welches tlc-file du 
verwendest, bzw. welche Anpassungen du im ert.tlc vorgenommen hast und 
wie du den Tasking Compiler eingebunden hast. Außerdem wäre dir sehr 
dankbar, wenn ich dich unter deiner e-mail adresse erreichen könnte.

mfg Günter Fambach

von Richard (Gast)


Lesenswert?

Hallo Günter,

tut mir leid dass ich mich früher nicht gemeldet habe. Aber als ich hier 
nicht viele Antworten bekam hatte ich das Forum nicht mehr angeguckt. 
Und die letzte Monate hatte ich viel zu tun gehabt und mein Projekt mit 
dem Tricore ist auch längst zu ende gegangen.
Aber wenn ich noch für irgend etwas behilflich sein kann, dann melde 
dich unter folgende Email: gaetan_richard2004@hotmail.com

mfg Richard

von Gaetan R. (g_richard)


Angehängte Dateien:

Lesenswert?

@Steffen

Hallo Steffen,
schaue die Datei im Anhang, da sind schnelle Schritte um mit Real-Time 
Wokshop
(RTW)Code zu generieren. Dafür brauchst du RTW Embedded Coder (ERT) 
Toolbox, weil grob gesagt Mikrocontroller wie der Tricore nur mit ERT 
arbeiten sonst bekommt man Syntax-Fehler wie oben mit "simstruct.h" (von 
Matlab-Support gesagt). Genaue Schritte einfach selber 
rtw_getting_started Datei lesen.


@Holger

Hallo Holger,
ich würde gern wissen was für Syntax-Fehler du hast, sonst kann nicht 
viel helfen. Vielleicht hier ein paar im Forum packen, da können noch 
mehr helfen.
Aber es wie welche bei mir oben aussehen, dann muss du gucken ob du 
alles richtig definiert hast (Variablen und Funktionen). Und nicht nur 
wo der Fehler gezeigt wird, die Fehler sind meistens weiter weg...


Hoffe es kann euch weiter helfen.

Gruß.
Richard

von Hélène (Gast)


Lesenswert?

Hallo,
ich arbeite in meine Schule in Frankreich, um ein Atmel controller zu 
programmieren mit Matlab (RTW) und AVR.
Ich suche informationnen auf Englisch, Deutsch oder Franzosisch.
Ich muss sagen dass ich habe kein kenntnisse darüber.
Zwei Tag Früher wusste ich nor nicht was ein microcontroller ist!
Danke schon im voraus.
Hélène

von Dennis (Gast)


Lesenswert?

Hallo,

hat es mitlerweile jemand geschafft das auf einem avr zum laufen zu 
bringen?
Wenn ja dann wäre ich froh jemand die dazugehörigen dateien posten 
könnte :-)

Gruß
Dennis

von ope (Gast)


Lesenswert?

@ Gaetan Richard:

Leider kam per email keine Antwort; wie ist denn der Stand? Kann man 
ggf. darauf aufbauen?

Grüße
Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.