-
Thread
Wozu 'inline' in C++?
Compiler-spezifischen Attributen zum Erzwingen des Inlining helfen kann, z.B. "__attribute__((always_inline))" beim GCC.
inzwischen besser geworden ist, andererseits sind die Optimierungs Möglichkeiten bei modernen i7 mit AVX512 auch gestiegen.
-
Thread
Black Magic Probe auf ST Link v2 clone "baite"
ja, das ist ein normales Verhalten wenn man optimierten Code debuggt. Da ist es besser die Optimierung auszuschalten, beim gcc kompilieren mit -O0. Da kann auch Segger nicht zaubern und das hat nichts mit Gefrickel zu tun.
ja, das ist ein normales Verhalten wenn man optimierten Code debuggt. Da > ist es besser die Optimierung auszuschalten, beim gcc kompilieren mit > -O0. Danke, klar, macht absolut Sinn. Mal sehen wie ich dem Arduino zusätzliche Parameter mitgeben kann. Ich komme beruflich zwar aus der SW-Ecke
-
Thread
STM32F103 USB CDC von W.S.
entdeckte jemand, dass neuere Compiler die Nop() Funktion wegoptimieren, was mit Abschaltung der Optimierung via "void __attribute__((optimize("O0"))) Nop(uint32_t count)" gelöst werden kann. Aber auch das hat nicht geholfen. Hat jemand eine Idee, woran es liegen könnte, oder wie ich mich der Ursache
daß das Ding als 'anderes Gerät' angezeigt wird. Nochwas zu dem ewigen Thema Warteschleife bei GCC-Benutzern: Die dient wirklich nur dazu, daß ein paar µs vergehen, so daß der Host das ACK-Paket noch auf der Adresse 0 abholen kann, bevor man die gegebene Adresse per USB_SetAddress setzt. Im Prinzip
-
Thread
c++ std::vector at(i) or [i]
noexcept einen dokumentierenden Charakter und andererseits erlaubt es weiter gehende (automatische) Optimierungen. Es ist also schon der Performance zuträglich, welches ja eins der Design Ziele ist. mh schrieb im Beitrag #6451130: >> Performance und Sicherheit schließen sich in dem Fall gegenseitig aus
#6451529: > using V = std::vector<int>; > static_assert(noexcept(std::declval<V>()[0])); Die gcc libc++ implementiert das so, aber das ist eben nur deren Interpretation des Standards. [c] operator[](size_type __n) _GLIBCXX_NOEXCEPT { __glibcxx_requires_subscript(__n); return *(this
-
Thread
Einheitlicher uC-Perpherie-Abstraktions-Layer
das war ja nicht die Frage, oder? Warum nicht professionell einsetzen? Dahinter steckt ein gcu-gcc/-g++ als Compiler und die LIbraries sind auch einsehbar. Im Gegensatz zu STM-Discovery- und -Nucleso-Boards dürfen die (originalen) Arduino-Boards sogar in kommerziellen Geräten verbaut werden. Die
DB durchlesen muss, oder noch schlimmer, eine HAL vom Hersteller verwenden muss. Wenn wirklich Optimierung gefordert ist, kann dies immernoch durch einen separaten Treiber geschehen. Ich denke mir das der Ansatz nicht neu sein kann und dass es doch ein Framework/Schnittstelle zwischen Arduino und
-
Thread
for-schleife rückwärts bis auf 0 laufen lassen probleme
im Quellcode stand. Allein schon deshalb, weil der Compiler oft in 64kB passen musste und für Optimierung dann wenig Platz war. Ich will nicht ausschliessen, dass einfacher gestrickte Compiler für kleine Mikrocontroller es immer noch so halten. Gute Compiler sind indes nicht selten pfiffiger als
Gute Compiler sind indes > nicht selten pfiffiger als der Programmierer. Arduino basiert auf dem GCC. Ist der nach dieser Definition "gut"? Oliver S. schrieb im Beitrag #6442861: > Mit einer do...while Schleife, die deinem > Assembler-Ansatz entspricht, wäre es kein Problem gewesen. hurr. Ich
-
Thread
bestimmte gnu-arm-as Version im Netz finden
Du könntest hier schauen ob der da dabei ist: https://launchpad.net/gcc-arm-embedded/+series
2.24-"Kollegen" anders machen zu müssen. Vielleicht gibt es ja einen Schalter, der gewisse Optimierungen steuert?
-
Thread
Arduino RAM sparen mit PROGMEM und strcpy_P()
verändert werden darf und somit darf der Compiler/Linker das auch annehmen und entsprechende Optimierungen durchführen.
aber er ist offenkundig noch immer zu doof dazu. Der arm-gcc kann diesbezüglich einiges besser, als der avr-gcc. Vermutlich hat es damit zu tun, dass AVR spezielle Befehle für den Zugriff auf den Flash Speicher brauchen, die gängigen ARM Controller aber nicht
-
Thread
Buch: Realtime C++
darauf werden hin und her übergeben beim > Funktionsaufruf. ..bei ausgeschalteter (globaler) Optimierung?
einem Arduino! Das macht man ganz normal auf dem PC. Daher: [c] gcc (GCC) 11.0.0 20201009 (experimental) Copyright (C) 2020 Free Software Foundation, Inc. Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es gibt KEINE Garantie; auch nicht für
-
Thread
SPI will auf AVR nicht laufen
nicht sein! Nicht ohne Grund sind die SPI Register als volatile deklariert. Also sind sie von Optimierungen ausgeschlossen.
kann ein solcher Fehler auch nicht auftreten. Wie schon gesagt... Mit einem halben Dutzend AVR Gcc Toolchains getestet.
-
Thread
Makro Funktionen avr-gcc
ausgerechnet). So steht da einfach nur: [c] printf("%d\n", (2+3)); [/c] Das kannst du mit gcc -E mein_file.c sehen. Für die Optimierung ist der Compiler zuständig.
Vorteile, bei gleich guter Lesbarkeit. Ganz Klar schrieb im Beitrag #6420590: > aber mit Optimierung hat das nichts zu tun. Ja! Da sind Makros weder förderlich, noch hemmend. Auch schient mir hier nicht die Optimierung als ganzes gemeint zu sein, sondern nur der Teilbereich "Ausführung zur
-
Thread
STM32 - Funktion liefert merkwürdiges Ergebnis zurück
FSMC gelesen? Ist outputRawVoltage dann auch volatile deklariert? Oder Compiler Option -O0 (keine Optimierung) oder Debug Build ausprobiert?
gelesen? Ist outputRawVoltage dann > auch volatile deklariert? Oder Compiler Option -O0 (keine Optimierung) > oder Debug Build ausprobiert? *outputRawVoltage ist ein Pointer, der auf ein Element eines uint16-Arrays zeigt. Dieses Array wird vom DMA mit ADC-Werten gefüllt. In der DMA-ISR wird noch
-
Thread
Verständnis AVR Interrupts Gesperrt
auch doofe Compiler wenn sie optimieren, z.B. bei Inlining oder Loop Unrolling. Insbesondere bei Optimierung auf Geschwindigkeit.
könnte ich dem GCC das schon relativ problemlos beibiegen. Aber der Rest ist Sackstand. Letztlich liefe es darauf hinaus, das halbe Programm doch wieder in Asm zu schreiben (mit der unsäglich grottigen gcc-Inkarnation
-
Thread
Weiß jemand, was für ein Atmega-Board das ist?
verwenden 0 Bytes (0%) des dynamischen Speichers, Das Ergebnis ist nicht anders, als wenn Du avr-gcc von Hand aufrufst, nichts mit Maxim B. schrieb im Beitrag #6403144: > IDE gibt zurück ein paar kb Code.
Martin H. schrieb im Beitrag #6403251: > Das Ergebnis ist nicht anders, als wenn Du avr-gcc von Hand aufrufst Wundert auch nicht da die Arduino-IDE ja u.a. den avr-gcc benutzt da der ja Teil des Pakets ist ;)
-
Thread
Linux wird nicht wirklich akzeptiert, woran liegt das ?
tun, was man erwartet, eben weil man irgendeine andere Kombination von Hardware, Kernel, Desktop, gcc-Version oder sonstwas als der Entwickler hat. Beispiel: Netzwerkmanager. Oh Graus.
Bei mir läuft es eh parallel. Ich habe Windows und Linux Rechner im Einsatz. SW Entwicklung mit GCC läuft z.B. unter Linux ohne das msys oder cygwin Gefrickel, und der Heimflug mit dem neuen MS Flight Simulator findet dann unter Windows statt. Ich nutze einfach das was für den jeweiligen Zweck am
-
Thread
unions structs bildfields
als compiler nutze ich avr-gcc
, and objects described in the library clause (clause > 7). > > Man kann mit dem avr-gcc alles nutzen, was in "clause 7" steht? Ob er (bzw. die avr-libc) das vollständig untestützt, kann ich nicht sagen. Ich vermute mal, nicht. Aber zumindest wird gcc per Default im "hosted"-Modus betrieben
-
Thread
C: Konstante weak definieren Gesperrt
Schau mal unter http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html Stichwort weak
. > In C++ ist sowas erlaubt wie const int n=11; int a[n];. In C geht das > nicht (selbst wenn gcc das erlauben sollte). Und was hat das jetzt mit Optimierung zu tun?
-
Thread
Mikrocontroller Klausur Aufgabe Speichertest
*lauf=0x00; if (*lauf != 0x00) return lauf; } return 0; } [/c] macht der GCC mit Optimierung zu: [avrasm] single_c_t: .LFB0: .cfi_startproc endbr64 .L2: cmpq %rsi, %rdi ja .L5 movl $0, (%rdi) addq $4,
-
Thread
arduino oder GCC Programmierung
sowas, aber libstdc++ ist eine binäre (vorcompilierte) Library (und eins der "missing pieces" beim AVR-GCC, das hat nie jemand bis zu Ende gebracht). Durch all den Template-Kram kann man bei C++ zwar auch mehr in Headerfiles unterbringen, aber das Argument der Compilezeit bleibt dabei natürlich.
Debug unterscheidet sowieso nur Microsoft. ich meine nicht nur das -g, sondern Profile die auch Optimierung und defines anders setzen. Die Optimierung macht debuggen schwieriger.
-
Thread
AVR Inline Optimierung kaputt?
Da gibts einen weiteren Link auf einen guten Blog: https://www.airs.com/blog/archives/120 Der gcc macht diese Optimierungen schon seit 20 Jahren.
Ich habe jetzt mal versucht, das verhalten auf dem PC (gcc 10.1.0, mingw, Windows) nachzuvollziehen. Die UB-Optimierung habe ich dort nicht hinbekommen. Das einzige, was mir gelungen ist, ist eine Warnung in folgendem Programm: [c] #include <iostream>
-
Thread
STM32 - Low Level Library Dokumentation
ST-Funktionen inline definiert sind, hält sich der Overhead vermutlich in Grenzen. Und selbst wenn: Optimierung sollte immer der letzte Schritt sein, wenn die Software an sich funktioniert. Und das meiste holt man sicherlich nicht bei einer handgestrickten Initialisierung der Peripherie raus... > Ich glaube
die zugehörigen *.c Dateien. Ist einfacher so. Zu einer eigentlichen Frage: Unterhalb von "MCU GCC Compiler" gibt es noch einen Abschnitt für den Linker, da musst du den Pfad auch einstellen.
-
Thread
volatile Funktionen
volatile wird die ISR nicht hindern, > dazwischenzugrätschen. Richtig. Volatile schaltet nur die Optimierung einer Variablen aus. Mit Interrupts hat das nichts zu tun.
Laden. std::atomic hat hier also das "volatile" ersetzt, und das ohne Interruptsperre (erzeugt der GCC sowieso nicht automatisch).
-
Thread
SPI-Kommunikation Atmega644 - ADS1118
sauber strukturiert, lesbar und vor allem funktional KORREKT sein! Dann kann man irgendwann über Optimierungen nachdenken! https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung Und warum in aller Welt glaubst du, permanent die IOs umkonfigurieren zu müssen? Das
erstmal läuft, worüber er sich freuen kann (und ich mich mit ihm). Wenn er Unterstützung bei der Optimierung wünscht/benötigt, wird er sich schon melden. Dieser aufkommende leicht aggressive Unterton aber ärgert mich.
-
Thread
PPS5330 Labor-Netzteil hack
Bytes im Flash und 28 Byte im SRAM. Ich programmiere mit Atmel Studio 7.0 und habe die Compiler Optimierung auf "Os" stehen. Ein kleines Problem ist die Linearisierung der Ausgangsspannung. Die stimmt noch nicht so ganz. Die Abweichung beträgt bei Vorgabe von 1.00V = 1.09V und bei 30.00V = 29.81V.
im Beitrag #6391595: > Ich weiß nicht, welcher Compiler so schlau ist bis jetzt konnte man den GCC eigentlich vertrauen, aber natürlich kann man mit pure ASM noch einiges rausholen, fragt mal c-hater :) Ich frage mich manchmal auch warum immer alle Register auf den Stacl gesichert werden obwohl
-
Thread
C Best Practice für konstante globale Variablen
config.h nenne. Das sind keine Variablen, und zwar mit Absicht, damit sie kein RAM belegen. Beim arm-gcc sorgt das Schlüsselwort const schon dafür, dass kein RAM belegt wird. Aber beim avr-gcc geht das nicht so einfach, deswegen #define. Was nicht konstante Variablen angeht: Diese vermeide ich wo immer
sollte aber Wartbarkeit sein. Code zu warten, bei https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
-
Thread
Timer, Ticks Verständnis
CPU-Familie nachschaut, wie viele Taktzyklen jeder Befehl braucht. In vielen verbreiteten Makefiles für gcc für AVR wird der Assembler-Code direkt mit in eine Datei ausgegeben, mit *.lst oder *.s oder *.lss-Endung. Das sieht dann (Ausschnitt) zum Beispiel so aus: [code] 25:main.c **** // Activate
r25,lo8(64) out 0x1b,r25 [/code] (Ist leider nicht immer so eindeutig, gerade bei starken Optimierungen) Im AVR Instruction Set Manual http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf findet man dann: > 73. LDI – Load Immediate > [...] > Cycles 1
-
Thread
AVR-GCC: Optimierung?
Hallo zusammen, ich schreibe gerade an einem kleinen Ladecontroller und bin dabei auf eine Frage gestoßen, die ich gern im Vorfeld klären möchte (also bevor ich den Code laufen lasse). Es geht um folgenden Codeausschnitt: [c] while ( (_batteryVoltageCB() <= _vTerminateCharge) && (_batteryCurrentCB() < _iChargeMax) && (_pwmValue < 255) ) _setChargerPWM(++(_pwmValue)); [/c] Beabsichtigt ist, dass die Funktionen ...CB() bei jedem Schleifendurchlauf ausgeführt werden! Geht das so, oder muss ich da "vorsorglich" eingreifen, damit der Compiler nicht "denkt", dass ein Aufruf für die
-
Thread
warum braucht Blinkbeispiel 780 byte Flash?
einem Atmega4809 läuft ein LED-Blink-Beispiel. Siehe das zip. Compiliert wurde mit WinAVR auf Basis GCC 8.4.0. Da der Code nicht viel macht stellt sich die Frage wofür die 780 bytes Flash im Einzelnen verbraucht werden.
https://stackoverflow.com/questions/56844328/how-do-i-generate-an-accurate-listing-file-using-avr-gcc
-
Artikel
ARM GCC
ARM-GCC bezeichnet die für ARM-Mikrocontroller konfigurierte Variante des C- und C++- Crosscompilers GCC. In diesem Artikel geht es primär um den arm-none-eabi-gcc, der ein für embedded Systems optimiertes
aus, nicht alle! -Wextra erzeugt noch einmal mehr Warnungen. -O[0,1,2,3,s,g] Wählt die Art der Optimierung. -O0: keine Optimierung -O[1,2,3]: Optimierung auf Ausführungsgeschwindigkeit. Je höher die Stufe, desto aggressiver ist die Optimierung. Das führt unter Umständen zu beträchtlich größerem Code
-
Thread
AVR-GCC - seltsames array-index verhalten
Hallo, vorab: - Ich benutzte Atmel Studio 7.0.1931 - ein "normales" GCC C++ Projekt mit einem ATMEGA328P Was mache ich: ASCII-Zeichen via 2D-Bitmap Byte-Weise auslesen und über SPI auf eine Dot-Matrix ausgeben. Problem: In einer for-Schleife werden eine bestimmte
Problem mit den Index-Variablen, und "volatile" benutzt, das hat nicht geholfen. Auch die Compiler-Optimierung "-O0 (none)" hat nichts gebracht. Weiß jemand, warum das "vorwärts"-Auslesen probleme macht, das "rückwärts"-Auslesen aber nicht? MfG Hier der Code für "vorwärts": [c] //Bitmap: char font8x8
-
Thread
Komplexes Problem: C++ xml Server und Tomcat Java (forwarding SOAP xml Requests)
mit CppCheck und PVS-Studio - Quelltext einfach unter Windows/Linux prüfen -AdressSanitizer aus dem gcc/clang (ab gcc 4.8 unklar ob für AIX verfügbar) und/oder Valgrind für Runtime-Analyse -direkte manuelle Analyse des Codes also mal Fakten auf den Tisch: 1. Welche C/C++, AIX/Linux Erfahrung hast
PVS-Studio - Quelltext einfach unter > Windows/Linux prüfen haben wir > -AdressSanitizer aus dem gcc/clang (ab gcc 4.8 unklar ob für AIX > verfügbar) > und/oder Valgrind für Runtime-Analyse > -direkte manuelle Analyse des Codes Analysiere gerade den Java Teil, inkl. statischer Code Analyse, manuelle
-
Thread
Funktion, welches je nach Datentype der Eingangsvariablen anders reagiert - geht sowas ?
Sorry: Sprache C, Compiler GCC (AVR Studio) Ziel: Möglichst sparsam mit Ressourcen
/onlinedocs/gcc/Common-Function-Attributes.html
-
Thread
Verständnisfrage zu "volatile"
Bei einer lokalen Variabel ist volatile sinnlos. Damit kann man bestenfalls dem Compiler die Optimierung verbieten und in einigen Degug-Situationen was reißen. volatile ist nur für globale Variablen sinnvoll, auf welche an mehreren Stellen zugegriffen werden kann. Also Variablen für ISR-Kommunikation
Bei einer lokalen Variabel ist volatile sinnlos. Damit kann man > bestenfalls dem Compiler die Optimierung verbieten und in einigen > Degug-Situationen was reißen. volatile ist nur für globale Variablen > sinnvoll, auf welche an mehreren Stellen zugegriffen werden kann. Also > Variablen für ISR-Kommunikation
-
Thread
avr-gcc-10 - "volatile deprecated [-Wvolatile]" Warnungen
// Prescaler 8 TCCR1B = TCCR1B & ~( _BV(CS12) | _BV(CS11) | _BV(CS10) ); [/c] Die Optimierung in ein einzelnes sbi, falls das register im passenden Adressbereich liegt, macht der Compiler trotzdem. (*) ich 'abe gar kein gcc 10 ;) // -----------------------------------------------
Hallo, wenn ich keine Tomaten auf den Augen habe macht der gcc Compiler in mh Bsp. in allen 3 Fällen zuerst eine Addition mit b. Danach erfolgt eine unterschiedliche "Optimierung" in der Zuweisung des Ergebnisses an a. Ich kann da erstmal kein Problem erkennen.
-
Thread
Geany, C, GCC4.7, eigenes makefile: Will for-Schleife nicht kompilieren!
Hallo, diese for-Schleife wird vom gcc mit folgenden Fehlermelungen beworfen: gcc -Wall -c "menue.c" (im Verzeichnis: /home/ranger/Projekte/Mal_sehn_obs_geht) menue.c:9:1: error: expected identifier or ‘(’ before ‘for’ for(i=0;i<8;
> diese for-Schleife wird vom gcc mit folgenden Fehlermelungen beworfen: Und das zurecht. HTH
-
Thread
Anforderungen Laptop zum Programmieren
meiner C Projekte erstelle, dauert das mehr als doppelt so lange, wie wenn ich release builds mit Optimierung und gc-sections mache. Jenachdem, was man machen will, können sich die HW Anforderungen schon ändern. Wenn man parallelisierbare Simulationen oder Games machen will, wäre z.B. eine (nicht-nvidia
Die Fehlermeldungen vom gcc bei Trigraphen im Programm sind auch gar nicht so übel ;)
-
Thread
Go-Compiler für MSP430
Mal ganz blöd gefragt: Für den GCC gibt es ein Go-Frontend und ein MSP430 Backend. Lassen die sich nicht miteinander verheiraten, so dass nur noch Bibliotheken fehlen?
Εrnst B. schrieb im Beitrag #6269573: > Für den GCC gibt es ein Go-Frontend und ein MSP430 Backend. > > Lassen die sich nicht miteinander verheiraten, so dass nur noch > Bibliotheken fehlen? Meines Wissens nach ist der GCC nicht so modular aufgebaut
-
Thread
IAR kooperiert (?) mit QT
"In v8 verrutschen sogar Breakpoints im IAR." := "Ich bin zu doof die Optimierung auszuschalten."
Die Optimierung is aus ;) Der BP verrutscht nicht beim debuggen. Es verrutscht der BP wenn du in der IDE Codezeilen hinzufügst. Zudem der GCC kann mit leichter Optimierung debugbaren Code erzeugen -> -Og
-
Thread
while (1) Äquivalenz
Hermann K. schrieb im Beitrag #6240068: > Bei vielen modernen Compilern wird das bei aktivierter Optimierung > tatsächlich äquivalent sein. Es gibt da die Tail call optimization > (keine Ahnung wie das auf Deutsch heißt). Nicht nur das. Bei mir macht gcc sämtliche Aufrufe komplett weg und ersetzt
W.S. schrieb im Beitrag #6244013: > OK, ich selber benutze den GCC aus derartigen Gründen nicht, aber es > erstaunt mich immer wieder, mit was für eigentümlichen Hakeleien die > GCC-Benutzer sich herumschlagen müssen. Der gcc macht diese Optimierung gerade *NICHT
-
Thread
Atmel Studio und J-Link Debugger: keine Breakpoints und kein Singlestepping möglich?
oft dass man einen Breakpoint an der Stelle setzen kann wo man möchte. Also erst mal jegliche Optimierung ausschalten .... -O0 Der J-Link ist jedenfalls primär nicht dran schuld. Works on my machine, sozusagen.
Mitlesa schrieb im Beitrag #6238254: > Also erst mal jegliche > Optimierung ausschalten .... -O0 Moderner GCC kennt auch -Og als "Optimieren fürs Debugging". Ansonsten auch mal nach den Linker Optionen schauen.
-
Thread
static volatile variable in einer Funktion
or reordered except as permitted by the rules for evaluating expressions. [/pre] noch einige Optimierungen offen lässt.
Arduino Fanboy D. schrieb im Beitrag #6232464: > mh schrieb: >> noch einige Optimierungen offen lässt. > Ja, z.B. die "Short circuit evaluation" Die ist keine Optimierung, sondern in C vorgeschriebenes Verhalten. Das heißt, dass bei [C] int i = 0; volatile int j = 3; if (i
-
Thread
Welche IDE um Controller zu programmieren/flashen
noch gar keine AVR. Makefiles schreibe ich auch schon länger, als es die AVR gibt. Und der Rest (avr-gcc, avr-gdb, avrdude) ist mit einem Tastendruck in aptitude installiert.
XC32 weder Lizenz-Bedingungen für die einzelnen Lizenzen, noch eine andere Information zu der Optimierung. Free geht nur bis -O1, -O2 ist ab PRO.
-
Thread
hardwarenah, objektorientiert programmiert
Hexcode - Welt: -> lieber C Vom technischen her schaut man eher auf den Übersetzer, Peephole-Optimierung, Datentypenpräferenzen, Alignements, MC-Typ u.ä. ( https://en.wikipedia.org/wiki/Peephole_optimization ) (z.B.)
Prüfung der Bonität) natürlich eine ideale Anwendung. Da wird nix recycled, da sind sogar alle Optimierungen im Preis inbegriffen. Nur leider: so viel wollte echt noch niemand zahlen...
-
Thread
Entprellen (kein AVR) Gesperrt
blt .L3 nop add sp, fp, #0 @ sp needed ldr fp, [sp], #4 bx lr .size optimierung, .-optimierung .ident "GCC: (15:6.3.1+svn253039-1build1) 6.3.1 20170620" 2) arm-none-eabi-gcc dummy.c -O1 -S optimierung: @ Function supports interworking. @ args = 0, pretend =
frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. bx lr .size optimierung, .-optimierung .ident "GCC: (15:6.3.1+svn253039-1build1) 6.3.1 20170620" W.S. schrieb im Beitrag #6218621: > Insofern ist der GCC eben kein anständiger Compiler Doch, der gcc ist ein
-
Thread
C++: VS2017 kompiliert viel langsamer als VS2015?
gemacht? Zusatz-Infos: -Ja ich weiss das Windows und das VStudio ganz ganz schlecht sind und mit dem GCC und Linux sowas nicht passiert wäre, leider kann ich die Vorgaben nicht ändern :)
gelöst haben, aber die > Ursache des Problems →VS2017← nicht loswerden. Äh, ja... unter Linux/GCC/Clang baut die Software auch nicht super schnell und zusätzlich ist es eben leider nicht das Kunden-System also was hilft dein Statement?
-
Thread
In ISR Inlining einer selten benutzten Funktion vermeiden um pushs zu sparen
er es aber in "offensichtlichen" Fällen nicht. Und die nächste Frage, ob gcc so implementiert ist, dass er das tut; offenbar nicht. Leider kann ich die letzte Frage nicht beantworten. Aber hier treibt sich doch einer herum :-) der am gcc zugange ist. Interessant wäre mal
vor die ISR zu setzen. Dazu musst du Shrink-Wrapping im AVR-Backend implementieren. Diese Optimierung gibt es bislang nicht bzw. entsprechende Hooks sind für avr nicht implementiert, d.h. wenn du wirklich darauf angewiesen bist, dann bleibt dir nur Assembler (oder C++ für die GCC-Quellen).
-
Thread
XMC4700 vs STM32
kompliziert und machte einen sehr gewachsenen Eindruck. Da ich für jeden Projekt (wenn möglich) den GCC verwende, war der "Workflow" wie üblich.
Overhead mit sich. Hast die in den Compiler-Einstellungen (Project->Active Project Settings->Arm gcc Compiler) die Optimierung eingeschaltet? Ich wähle meistens "Optimize (-O1)" aus. Tut man das nicht, so hast Du Recht: Dann sind einige Funktionen (z.B. das Setzen von Pins) in der Tat etwas langsam
-
Thread
Neue MCU APM32F103
Das Ganze dient als Vorbereitung für die FPU sin() Zyklenmessung. Ist in HAL, ohne irgend eine Optimierung. Erst einmal zum testen ob es überhaupt läuft.
allen Peripherials. Kann das Problem daran liegen das der Keil Compiler bei Aufrufen gegenüber der gcc etwas anders macht? Das .lib file ist ja von und für Keil.
-
Thread
WD-Reset und Reset Pin erzeugen nicht das selbe wie Power off
Weitere erkenntnis. Wenn ich die Optimierung aus schalte dann funktioniert das Ausschalten des WD. Wenn ich Jedoch die Optimierung ganz normal auf Os schalte dann ist das Verhalten eine Endlosschleife die versucht den WD auszuschalten.
. Hat nichts damit zu tun ob man Arduino nutzt oder auch nicht. Ardino verwendet auch Routinen vom GCC.