Forum: Digitale Signalverarbeitung / DSP / Machine Learning VisualDSP: calling assembly subroutines from C


von Unit* (Gast)


Lesenswert?

Hallo,


wollte mit dem ADSP-21369 Simulator die Aufgaben des Tutorials im 
VisualDSP++ 5.0 Getting Started Guide lösen, aber mit der zweiten 
Aufgabe habe ich ziemlich viel Stress. Dort wird gezeigt, wie man 
assembly-Funktionen im C-Code aufrufen kann. Das Tutorial ist für 
Blackfin Prozessoren gedacht. Ich benutze einen SHARC (hab den Simulator 
auf meinem SHARC umgestellt), aber das sollte eigentlich kein Problem 
sein...
Wenn ich die Beispielfiles ins Projekt importiere, und das ganze builden 
will, kommt folgende Fehlermeldung auf:
1
[Error ea1007] ".\dotprod_func.asm":3 [column 1] Syntax Error at ".global".
2
3
[Error ea1040] ".\dotprod_func.asm":6 '_my_asm' not in a section:
4
A valid directive defining a section must precede any label.
5
Attempting error recovery by creating section '.dummyCode'.

Ich habe die entsprechenden Seiten im Compiler Manual durchgelesen, und 
das Program ist so aufgebaut, wie es sein soll, d.h.

im C-File muss stehen:

vor dem Calling die asm-Funktion als function prototype deklarieren:
1
...
2
extern int my_asm( int );
3
4
...
5
6
void main()
7
{
8
  ...
9
  out = my_asm(in);
10
  ...
11
}
im asm-File muss stehen:
1
.section asm_sect;
2
.global _my_asm;
3
4
_my_asm:
5
  
6
  ...
7
8
_my_asm.end:

Ich komme einfach nicht weiter... Kann mir jemend helfen?

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Hab auf die Schnelle nur einen alten Code von mir gefunden:
1
.section/DOUBLE32 program;
2
_foo:
3
4
// ...
5
6
._foo.end:
7
.global _foo;

Hab das Manual leider nicht hier...

Edit: Dem Linker ist deine section bekannt?

von Unit* (Gast)


Lesenswert?

Hi T.H.,


danke für die schnelle Antwort. Nee, die section ist dem Linker nicht 
bekannt. Aber diese Fehlermeldung liefert der Compiler.
Ansonsten wenn ich den Expert Linker öffne (um die section da 
einzutragen), stürzt VisualDSP ab, obwohl es nicht gehackt oder 
manipuliert ist ;-) Die Updates habe ich auch alle installiert.

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.