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
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.
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.
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.
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
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.
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.
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 | }
|
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
Apropos Doku, noch ein Link: http://mcu.st.com/mcu/modules.php?mop=modload&name=Splatt_Forums&file=viewtopic&topic=5206&forum=21
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
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.
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.
> uns Deinen Projekt-Bench zu schicken
Gern. Ist allerdings teilweise C++ und ziemlich GCC-lastig.
Wohin?
Ok, die Frage nach dem Wohin hat sich erledigt, hängt oben dran. Nun auch mit Mail-Adresse.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.