Erste Gehversuche auf STM32F und Olimex P103 Board. Grundsätzlich funktioniert es. (KEIL MDK EVA-Version). Benutze die STM LIB 2.0.1 8MHz Quarz extern, PLL auf 72MHz. Wie kommen die enormen Geschwindigkeitsunterschiede zu stande? Die Zeiten sind immer die zwischen PIN setzen und PIN rücksetzen, ohne irgendwelche anderen Anweisungen dazwischen: GPIO_WriteBit(GPIOC, GPIO_Pin_12, Bit_RESET); // 280ns mit GPIO_ResetBits(GPIOC,GPIO_Pin_12); // 250ns mit GPIOC->BSRR = GPIO_Pin_12; // 25ns Letzte Anweisung ist extrem schnell. Ich vermute, es hat was mit der ASSERT_PARM Funktion zu tun.
schau doch einfach in den source code der lib ausserdem rate ich dir besser mal die neue lib 3.x zu holen, die alte hat viele bugs
Ulf schrieb: > Erste Gehversuche auf STM32F und Olimex P103 Board. Grundsätzlich > funktioniert es. (KEIL MDK EVA-Version). Benutze die STM LIB 2.0.1 > 8MHz Quarz extern, PLL auf 72MHz. > > Wie kommen die enormen Geschwindigkeitsunterschiede zu stande? Die > Zeiten sind immer die zwischen PIN setzen und PIN rücksetzen, ohne > irgendwelche anderen Anweisungen dazwischen: > > GPIO_WriteBit(GPIOC, GPIO_Pin_12, Bit_RESET); // 280ns > > mit > GPIO_ResetBits(GPIOC,GPIO_Pin_12); // 250ns > > mit > GPIOC->BSRR = GPIO_Pin_12; // 25ns > > Letzte Anweisung ist extrem schnell. Ich vermute, es hat was mit der > ASSERT_PARM Funktion zu tun. Vermute ich nicht. Implementierungen der Funktionen oder Makros ansehen. Wenn es sich dabei um echte Funktionen handelt: Ist der Optimizer eingeschaltet und werden die Funktionen geinlined? Wenn nicht dann hast du da höchst wahrscheinlich schon das Problem: Die Funktionen müssen indirekt über die Adresse von GPIOC zugreifen. Der Unterschied zwischen 1) und 2) ist auch leicht durch einen zusätzlich notwendig if zur Unterscheidung der gewünschten Funktionalität erklärbar. Lediglich bei deiner Version 3) liegt schon alles so zurecht, dass der COmpiler auch ohne Optimizer kurzen, schnellen Code erzeugen kann. Also: Optimizer eingeschaltet?
Die FWlib wird i.d.R. nicht inlined sondern separat übersetzt. Folglich sind das vollständige Funktionen mit allem drum und dran.
Ok, die Optimierung auf "Level 03" brachte für die ersten beiden Varianten einen Zeitgewinn von ca. 30%. Schein mir immer noch recht langsam zu sein. Bei Variante 3 erwartungsgemäß kein Veränderung. Die Lib in Version 3 habe ich mir schon angesehen. Hat ja größere Änderungen von der Struktur her. Wollte aber mit der Standardinstallation von Keil erstmal etwas spielen. Mir ist auch nicht ganz klar, wie ich die Version 3 sinnvoll einbinden soll.
Ulf schrieb: > Ok, die Optimierung auf "Level 03" brachte für die ersten beiden > Varianten einen Zeitgewinn von ca. 30%. Schein mir immer noch recht > langsam zu sein. Der Rest wird Overhead durch den Funktionsaufruf sein. Du hast ja hier den Fall, dass du schon fast mehr Verwaltung (für den Funktionsaufruf) als tatsächliche Arbeit hast. Ich kenne die Lib nicht, aber wenn die Funktionen nicht geinlined werden können, würde ich mir zumindest eine Makroversion der Funktionen machen.
>ausserdem rate ich dir besser mal die neue lib 3.x zu holen, die alte >hat viele bugs Habe jetzt die LIB Version 3.3.0 von STM ausprobiert. Funktioniert mit ähnlichen Zeiten, ehr noch etwas langsamer. Assert_Param ist nicht das Problem. Die Funktion wird standardmäßig nicht verwendet. Ist es günstiger, eine .LIB zu verwenden, oder jeweils die benötigten Module in das Projekt im Quellcode-Format einzubinden?
Ulf schrieb: > Ist es günstiger, eine .LIB zu verwenden, oder jeweils die benötigten > Module in das Projekt im Quellcode-Format einzubinden? Definiere 'günstig' Was ist günstiger? Mit dem LKW von Hamburg nach Berlin zu fahren oder mit einem Smart Antwort: Kommt drauf an Wenn ich einen Wochenendausflug mache, ist der Smart günstiger. Wenn ich übersiedle, ist der LKW günstiger.
> günstiger
Abwegung der Vor- und Nachteile
.LIB Vorteile
- Projekt übersichtlicher, nur die .h werden eingebunden
- Projekt-Erstellung geht schneller
Nachteile
- LIB so optimiert, wie bei der Erstellung
- Compilerabhängig
- nicht INLINE
- einzelne Module können nicht angepasst werden (sollte man auch nicht
unbedingt tun, da STM dort pflegt), Problem sind ggf. nur die BUGs
sicher noch was vergessen.
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.