Forum: Mikrocontroller und Digitale Elektronik Frage zur Sättigung des Cortex M3


von A. M. (am85)


Lesenswert?

Hi

Ich arbeite mich gerade in den Cortex M3 (LM3S9B92 von TI) ein. Da ich 
mit ihm einige DSP Aufgaben in C erledigen möchte, ist für mich die 
Unterstüzung der Sättigung interessant. Bisher habe ich aber nur 
Assembler Anweisungen gefunden und das Datenblatt erwähnt nur ein 
Sättigungsbit im Programm Status Register.

Wie sieht es beim Cortex mit der Sättigung aus? Muss man das ganze erst 
aktivieren oder geht wird das ganze nur bei Rechnungen mit expliziter 
Assembleranweisung unterstützt?

Würde mich freuen, wenn mir jemand bei dieser Frage helfen könnte.

Schöne Grüße

von (prx) A. K. (prx)


Lesenswert?

André M. schrieb:

> wird das ganze nur bei Rechnungen mit expliziter
> Assembleranweisung unterstützt?

Ebendies. Wenn es um den GCC geht, dann lassen sich solche 
Assembler-Anweisungen allerdings recht elegant in den C Code einbauen. 
Inwieweit andere Compiler diese Befehle als Intrinsics unterstützen muss 
du nachsehen.

von A. M. (am85)


Lesenswert?

A. K. schrieb:
> André M. schrieb:
>
>> wird das ganze nur bei Rechnungen mit expliziter
>> Assembleranweisung unterstützt?
>
> Ebendies. Wenn es um den GCC geht, dann lassen sich solche
> Assembler-Anweisungen allerdings recht elegant in den C Code einbauen.
> Inwieweit andere Compiler diese Befehle als Intrinsics unterstützen muss
> du nachsehen.

Danke für deine schnelle Antwort. Ich arbeite mit dem Code Composer 
Studio und dem entsprechenden Compiler. Mh, das ist natürlich ärgerlich, 
wenn ich dann noch auf Assembler Eben "rumfrickeln" muss, was ich eher 
vermeiden wollte.

von A. M. (am85)


Lesenswert?

Ich habe dazu gleich mal eine Anschlussfrage. Der Cortex M3 besitzt ja 
auch hardware devider und untersützt die hardwareseitige multiplikation 
und accumulation (ähnlich der MAC Einheit beim DSP), was als SIMD 
(Single Instruction Multiple Data) bezeichnet wird. Können auch diese 
Funktionalitäten nur aus Assembler heraus genutzt werden oder generieren 
die C Compiler Code, der diese Hardwarefunktionalitäten ausnutzt?

von A. M. (am85)


Lesenswert?

push...

von (prx) A. K. (prx)


Lesenswert?

André M. schrieb:

> Mh, das ist natürlich ärgerlich,
> wenn ich dann noch auf Assembler Eben "rumfrickeln" muss, was ich eher
> vermeiden wollte.

Hast du nachgesehen, ob dieser Compiler nicht schon Intrinsics für diese 
Befehle anbietet?

von Arc N. (arc)


Lesenswert?


von A. M. (am85)


Lesenswert?

Hi,

danke für eure Antworten. Ich habe mir den User Guide zu dem Compiler 
(TMS470, http://www.ti.com/lit/ug/spnu151g/spnu151g.pdf) angeschaut und 
der offenbart mir, dass es für den M3 Intrinsics für die 
Sättigungsoperationen gibt (Seite 104) aber für die für DSP Aufgaben 
interessesanten Operationen wie "multiply-accumulation" gibt es 
seltsamerweise nur welche für den M4, obwohl doch der M3 diese Befehle 
auch unterstützt. Oder sollten diese Intrinsics auch für den M3 
funktionieren?

von (prx) A. K. (prx)


Lesenswert?

André M. schrieb:

> obwohl doch der M3 diese Befehle auch unterstützt.

Nur 32x32=>32/64bit. Und die stehen dort nicht drin.

von A. M. (am85)


Lesenswert?

A. K. schrieb:
> André M. schrieb:
>
>> obwohl doch der M3 diese Befehle auch unterstützt.
>
> Nur 32x32=>32/64bit. Und die stehen dort nicht drin.

Und das heißt in letzter Konsequenz was?

von Zorg (Gast)


Lesenswert?

Das Du nen M4 nehmen sollst der M3 hat den ganzen DSP Kram nicht das ist 
ja der Unterschied zwischen den beiden.

von A. M. (am85)


Lesenswert?

Zorg schrieb:
> Das Du nen M4 nehmen sollst der M3 hat den ganzen DSP Kram nicht das ist
> ja der Unterschied zwischen den beiden.

Naja, der M3 wird es sein müssen, das steht fest und der Befehlssatz ist 
ja da und wird vom M3 unterstützt, also zumindest die beiden für mich 
relevanten Funktionen der Sättigung und der "multiply-accumulation". 
Müsste es nicht sonst möglich sein, letztere Funktionalität über "inline 
assembler" aus meinem C Code heraus zu nutzen? Wäre ja aus der Sicht der 
Performance ganz schön die Hardwareblöcke nutzen zu können.

von Phantomix (Gast)


Lesenswert?

André M. schrieb:
> Ich arbeite mich gerade in den Cortex M3 (LM3S9B92 von TI) ein.

Da würd ich an deiner Stelle mal die Verfügbarkeit prüfen. Mit dem 
Prozessor haben wir vor nem halben Jahr schon ein Projekt durchgezogen 
und dann mit hängen und Würgen ein paar Samples gekriegt, 
Massenverfügbarkeit = 0
Es gibt nur diese dämlichen Entwicklungskits... Oder hat sich das 
mittlerweile geändert? Farnell und Digikey haben jedenfalls keine

von A. M. (am85)


Lesenswert?

Phantomix schrieb:
> André M. schrieb:
>> Ich arbeite mich gerade in den Cortex M3 (LM3S9B92 von TI) ein.
>
> Da würd ich an deiner Stelle mal die Verfügbarkeit prüfen. Mit dem
> Prozessor haben wir vor nem halben Jahr schon ein Projekt durchgezogen
> und dann mit hängen und Würgen ein paar Samples gekriegt,
> Massenverfügbarkeit = 0
> Es gibt nur diese dämlichen Entwicklungskits... Oder hat sich das
> mittlerweile geändert? Farnell und Digikey haben jedenfalls keine

Es soll kein Massenprodukt werden sondern dient zur Studie für eine 
Bachelorarbeit. Es geht dabei rein um Machbarkeitsuntersuchungen.

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.