Forum: Mikrocontroller und Digitale Elektronik STR9 Hilfe


von Stefan R. (kroko)


Lesenswert?

Hallo Leute!

Gibt es eine beschreibung/hilfe, speziell für den str9, damit mein ich 
kein forum?
Wenn nicht, ich glaube, dass jetzt schon ein paar leute von uns im 
besitz eines str9 sind und die auch interesse an einer beschreibung für 
befehle usw. hätten.
Könnte man sowas einrichten? Kennt sich schon einer recht gut mit dem 
controller aus?

Mfg Kroko

von A.K. (Gast)


Lesenswert?

Es gibt ein Forum bei ST. Englisch natürlich. Allerdings ist das kein 
Anfängerforum, man sollte man die verfügbaren Unterlagen schon kennen.

Doku über die Architektur (Befehle usw) findet sich bei ARM, ebenfalls 
über den verwendeten ARM-Core. Assemblerprogrammierung auf ARM kann ich 
allerdings nur Leuten empfehlen, die keine zusätzliche 
Befehlsbeschreibung mehr nötig haben. Die Dinger sollte besser in C 
programmiert werden. Es gibt durchaus Webseiten, die 
Assemblerprogrammierung vom ARM beschreiben. Das ist zwar meist ARM7, 
aber das stört erst einmal nicht.

Anonsten ist mir der STR9 vor allem durch seine enorme Diskrepanz 
zwischen Anspruch und Wirklichkeit aufgefallen. Lies: Zwischen dem womit 
er beworben wird, und dem was er tatsächlich leisten kann. Derzeit 
kämpfe ich grad mit dem Anschein von ~8 Waitstates beim RAM-Zugriff via 
DTCM und hoffe inständig darauf, dass der Fehler bei mir liegt.

von T.E.- STM (Gast)


Lesenswert?

Hallo,

bin von STM, kann ich beheflich sein? Bin zwar "nur" von Marketing, aber 
vielleicht kann ich trotzdem helfen ;-)!

@Kroko
Wir empfehlen mit einem Starter-Kit anzufangen (Keil, IAR, Hitex, 
Raisonance). Die kosten nicht mal 200Eur, enthalten aber dafür ein 
Board, JTAG Debugger, Code-Beispiel und Toolchain (Code Limitiert):

http://mcu.st.com/mcu/modules.php?name=mcu&file=debug_tools&fam=101


@A.K.
Du meinst schon Zugriff auf internal SRAM via DTCM, und nicht external 
SRAM via EMI? Kannst Du mir mehr Info geben? Internal SRAM söllte keinen 
Wait-State haben, sogar bei 96MHz.

Was betrifft die erwähnt Diskrepanz, darf ich mal fragen welche Version 
vom Silicium im einsatzt ist?

Zur Info, falls Ihr kein Support vom Distri bekommt, dann gibt es zwei 
Alternativen:

ST Forum: http://mcu.st.com/mcu/modules.php?name=Splatt_Forums

Techn Support: 
http://www.st.com/stonline/domains/support/contact_mcu_support.htm

Gruss,

T.E.

von A.K. (Gast)


Lesenswert?

Version ist D,701.

DTCM ohne Waitstate scheint zu funktionieren. Irritierend ist freilich, 
dass die diversen Samples von ST,Keil,Hitex ziemlich konsequent mit WS 
arbeiten.

Dem Support-Forum nach zu schliessen ist es noch niemandem gelungen, das 
Teil mit den versprochenen 96MHz ohne gezogene Handbremse zu betreiben. 
Also bei einem Flash-Takt von ebenfalls 96MHz. Von allen Beispielcodes 
die ich bisher sah, arbeitet denn auch einzig die Hitex-Demo mit 96MHz 
Core dafür, alle anderen maximal mit 48MHz Core.

Die Hitex-Demo allerdings kombiniert den 96MHz Core-Takt mit halbiertem 
Flash-Takt. Damit wird jedoch der Core derart gedrosselt, dass man mit 
66MHz Core und dann aber zwangsläufig extern zugeführtem USB-Takt besser 
fährt, da pro Befehlswort 2 Takte draufgehen und die Latenzzeit von 
Sprungbefehlen und den bei ARM sehr häufigen Flash-Lesebefehlen 
exorbitant gross ist.

Von der Problematik mit dem Flash-Takt ist im Errata-Sheet nichts zu 
finden, obwohl Probleme damit schon seit längerer Zeit im Forum 
aufgeführt sind. Von Waitstates steht im Flash-Manual etwas drin, 
sonderlich verständlich ist dieser Passus allerdings nicht formuliert. 
Hat auch keinen Einfluss darauf, auch mit maximaler Anzahl Waistates 
geht da nichts.

Eine erste Peilung der Zeiten von Interrupts und RTOS-Contextswitches 
deutet an, dass ein STR9 langsamer ist als ein LPC2000 - beide mit Code 
im Flash; läuft der LPC2000 an den kritischen Stellen im RAM, wirds noch 
krasser.

von perdok (Gast)


Lesenswert?

http://ti.fb2.fh-frankfurt.de/personal/Grote/userManuel_ARM9_STR9.pdf

hier das usermanuel. ich habe schon ein paar programme zur led- und 
lcd-ansteuerung auf dem mcbstr9 von keil geschrieben. also ganz einfache 
programme.

chris

von A.K. (Gast)


Lesenswert?

Update zu den RAM-Zugriffen: Mittlerweise bin ich soweit, dass ein 
RAM-Zugriff per LDR auch nur 2 Takte kostet (ohne WS, einen N-Zyklus 
darf man wohl generell mit 2 Takten einrechnen). Allerdings nur, wenn es 
in der Schleife nicht mehr als 4 LDRs sind, ab 5 lande ich stets bei 10 
Takten pro LDR.

von T.E. - STM (Gast)


Lesenswert?

Hallo A.K.


vielen Dank für Deine Input, es hilft uns um Produkt & Docs zu 
verbessern. Ich bin am Montag in Büro, ich werde es genauer anschauen. 
Wenn Du Zeit Hast, kannst Du mir bitte ein Link zu dem genauen Thread 
Forum schicken?

Aber schon vorab, die D Version war die erste die gesampelt und 
produziert würde. Wir sampeln gerade über Distributor die 
überbearbeitete G Version (STR91xFA).

Bei der G Version haben wir den BC fast vervierfacht, es söllte aber in 
dem Beispiel mit LDR Loops keine Influss haben, da nach einmal genommen, 
ist die Branch im Cache. Generell haber wir aber bei Benchs mit G 
Version von 20% bis zu 30% Verbesserung gemessen (abhängig von Code und 
Compile Version und Option). Könnte das Fluschen von dem 5-Stage pipe 
eine Einfluss im diesem "LDR loop Test" haben??? Zu prüfen...

96MHz stellt bei diesem Prozess keine grössere Schwerigkeiten für die 
Logic Teile (CPU / SRAM). Dagegen Wichtig ist aber Flash Zugriff.

Um den Produkt bei 96MHz zu betreiben, müssten wir eine Kombination von 
Burst Flash und Memory Accelerator einbauen. Es besteht um einen 
Pre-Fetch-Queue (PFQ) und einen Branch Cache (BC). Mit Sequentiel 
Zugriff lauft das ganze schon bis 96MHz, wenn aber Branches, die nicht 
im BC liegen, genommen werden, dann tretten die WS auf (Frequenz 
abhängig).

Wir söllten prüfen dass alles richtig konfiguriert ist. Wir haben schon 
als Beispiel beim Kude gesehen, dass der PFQ nicht aktiviert war...


Schönes Wochenende und bis Montag,

T.E.

von A.K. (Gast)


Lesenswert?

Hier der LDR-Test, @48MHz.
1
/*
2
 *  1x LDR      9
3
 *  4x LDR     15  => 2/LDR für 1..4  ARM9:1+interlock
4
 *  5x LDR     53
5
 *  6x LDR     63
6
 * 10x LDR    103  => 10/LDR ab 5
7
 *
8
 * 10x LDR, 1WS    114
9
 */
10
unsigned
11
test5(unsigned count)
12
{
13
    unsigned t = TIM0.cntr, temp = 0;
14
    const unsigned *p = data;
15
16
    asm volatile ("1:\n\t"
17
      "  ldr %2,[%1,%2]  \n\t"
18
      "  ldr %2,[%1,%2]  \n\t"
19
      "  ldr %2,[%1,%2]  \n\t"
20
      "  ldr %2,[%1,%2]  \n\t"
21
      "  ldr %2,[%1,%2]  \n\t"
22
      "  ldr %2,[%1,%2]  \n\t"
23
      "  ldr %2,[%1,%2]  \n\t"
24
      "  ldr %2,[%1,%2]  \n\t"
25
      "  ldr %2,[%1,%2]  \n\t"
26
      "  ldr %2,[%1,%2]  \n\t"
27
      "  subs %0,%0,#1  \n\t"
28
      "  bne 1b" : "+r"(count), "+r"(p), "+r"(temp));
29
30
    return TIM0.cntr - t;
31
}

von A.K. (Gast)


Lesenswert?

PS: data[0] = 0 und im RAM, d.h. es ist immer die gleiche Adresse.

von A.K. (Gast)


Lesenswert?

PFQ/BC ist aktiviert, sonst wäre t=9 bei 1xLDR kaum machbar, da ohne BC 
allein die Zählschleife schon auf 11 Takte kommt (BC:5).

    SCU.scr0 |= SCU_SCR0_PFQBC_EN;
    SCU.scr0 &= ~SCU_SCR0_DTCM_1WS;

Sämtliche Takte sind dabei /1. ITCM/DTCM enabled, unordered - ich habe 
aber sicherlich auch ordered DTCM ausprobiert. FMI 1WS.

96MHz Flash-Takt hat bei mir exakt so lang funktioniert, bis der erste 
LDR-Befehl nach der Taktumschaltung ans Flash wollte, dann war Schluss 
und die CPU spukte irgendwo in der Weltgeschichte herum. So jedenfalls 
die Erkenntnis vom Hitex/JTAG-Debugger.

Link (prx bin ich): 
http://mcu.st.com/mcu/modules.php?mop=modload&name=Splatt_Forums&file=viewtopic&topic=5230&forum=21

von A.K. (Gast)


Lesenswert?


von Stefan R. (kroko)


Lesenswert?

Danke Leute für die hilfe.

Tut mir leid, dass ich mich so spät melde, meine internet verbindung 
hatte schon wieder mal einen kompletten aussetzer.

@ T.E.- STM:
Habe mir das kleine system von hitex, also den str9-comstick gekauft, 
aber ich habe probleme, dass ich mal zum programmieren anfange, hab 
vorher pics programmiet und die sind mit dem arm gar nicht zu 
vergleichen!
Das größte problem ist für mich, soweit das programm zu schreiben, dass 
ich mal meinen code rein schreiben kann, also die ganzen einstellungen 
für takt, gpio usw.
Dokumente in englisch sind ja genug vorhanden, nur tu ich mir ziemlich 
schwer, als arm anfänger, da was herauszulesen.

mfg kroko

von T. E. (Firma: STMicroelectronics) (stm)


Lesenswert?

Hallo Kroko,

ich bin kein PIC Expert, kann mich aber vorstellen, dass da der Gap 
ziemlich gross sein kann...

Hast Du schon die Beispiel von Hitex auf dem ComStick Webseite 
angeschaut? Für jeder Beispiel gibt es Docs und Sourcen, du findest sie 
unten bei:

http://www.hitex.com/str9-comstick/

Es gibt auch den Hitex Insider Guide für STR9, Du kannst die 
Low-Resolution kostenlos von unserer Web herunterladen, einfach nach 
"Hitex" suchen unten:

http://mcu.st.com/mcu/modules.php?name=mcu&file=familiesdocs&FAM=101

Ich finde dieser Insider Guide echt gut und weniger trocken zu lesen als 
den ganzen User Manual + Datasheet ;-)! Wobei natülich für Detailsfragen 
sind UM und DS die beste Referenz.

Ich hoffe es hilft Dir weiter, lass mir wissen.

Gruss,

T.E.

von T. E. (Firma: STMicroelectronics) (stm)


Lesenswert?

Hallo A.K.

danke für die Details. Ich kann leider keine Lösung/Antworte direkt 
geben.

Ich würde gern deinen Test bei unseren Appli laufen lassen. Wärest Du OK 
uns Deinen Projekt-Bench zu schicken? So können unsere Experten alle 
Einstellungen prüfen und sogar auf den neuen STR91xFA laufen lassen.

Ich werde auch puschen, so dass wir eine Applikation-Note rausbringen, 
wo man die beste Einstellungen gibt, um den Produkt mit voller 
Geschindigkeweit zu betreiben.

Gruss,

T.E.

von A.K. (Gast)


Angehängte Dateien:

Lesenswert?

> uns Deinen Projekt-Bench zu schicken

Gern. Ist allerdings teilweise C++ und ziemlich GCC-lastig.

Wohin?

von A.K. (Gast)


Angehängte Dateien:

Lesenswert?

Ok, die Frage nach dem Wohin hat sich erledigt, hängt oben dran. Nun 
auch mit Mail-Adresse.

von T. E. (Firma: STMicroelectronics) (stm)


Lesenswert?

Hallo A.K.,

sorry für die späte Antworte, ich war oft unterwegs die letze Zeit.

Unsere Support konnte die Timing-Erhöhung ab 5 LDR nicht widerholen. 
Sowohl aus den Timer Werte als auch mit einem JTAG TRACE. Bei unsere 
Messungen bleibt die Steigerung Linear.

Ist es OK wenn unserer support bei Dir via Email sich meldet? Das 
Endergebnisse würden wir nachher hier posten für alle andere Users.


Gruss,

T.E.


von A.K. (Gast)


Lesenswert?

Klar. Deshalb hatte ich die Mail-Adresse ja eigens reingeschrieben.

von T. E. (Firma: STMicroelectronics) (stm)


Lesenswert?

Hallo,

zur Info, die Applikation Note ist jetzt erschienen:

"AN2551: Configuring STR91xFA for Optimum CPU Performance"

http://www.st.com/stonline/products/literature/an/13563.pdf

Gruss,

T.E.

von A.K. (Gast)


Lesenswert?

Schon gesehen. Gilt das auch für den STR91xF ohne "A"?

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.