-
Thread
Mikrocontroller Einstieg
Energieverbrauch der Software, massiv parallele Architekturen wie GPUs, Side-Channel-Attacks, Optimierung der Software um diese Dinge so effizient wie möglich auszunutzen) nutzen trotzdem auch ganz entspannt High-Level-Frameworks wie Arduino und Hochsprachen. Weil das für viele Zwecke einfach am Schnellsten
dazu kaufen (ST-Link), die aber ebenfalls sehr billig zu haben sind. Da kann man dann den sehr guten GCC nutzen und auch debuggen.
-
Thread
Electronica 2024, Tag 1 – Chips, AI-Chips, Altium Discover und Vergussmasse
Fahrlärm (ähnlich der Noise Cancellation in einer Bombardier Dash8) spezialisiert hatte. ### MPS – Optimierung des Reglerverhaltens für LIDAR, mehr Power Modules Im Hause MPS optimiert man das Spektrum der Schaltfrequenzen, um – wie in der Abbildung gezeigt – außerhalb des für LIDAR kritischen Bereichs
Debian installieren und auf dem Device z.B. python3 starten. Oder Shell-Scripts verwenden. Oder gar gcc/g++ auf dem Device laufen lassen um die Antwendung zu übersetzen. Libraries einfach mit config/make/install. Netzwerkstacks sind schon im Linux drin.
-
Thread
Wert in AVR Register laden: optimalen Code generieren?
nur noch rückwärts mit der Optimierung bzgl. Codegröße. Alles, was am gcc verbessert wurde, ging in die X86/ARM-Architekturen, und bringt dem von-Neumann-Exoten AVR gar nichts. Oliver
Optimierung bzgl. Codegröße. Man kann durchaus auch alte Versionen nutzen. Der Fetisch des dauernden Updates ist manchmal kontraproduktiv. > Alles, was am gcc verbessert wurde, > ging in die X86/ARM-Architekturen
-
Thread
Welche Programmiersprache für numerische Rechnungen Gesperrt
nehmen das, was sie gut verstehen und am Cluster supported wird. Soweit ich informiert bin, ist der GCC am ARM das Maß aller Dinge. Am x86 LLVM oder der Intel Compiler. Dann stellt sich die Frage, wie die interconnects bedient werden. OpenMP ist z.B beim GCC quasi ein Compiler Flag. Es gibt da aber
wenig praxistauglich. Das heißt, bei Haskell gibt es schon einige größere Angriffsflächen für Optimierung. So ein paar grundlegende Infos zu C++ Optimierung gibt es hier und da auch noch, aber ich glaube, früher gab es davon noch mehr, im Moment werden Online viel Bücher zu C++ Optimierung in den
-
Thread
C > Struct > Pointer - Adresszuweisung
irgendwie sehen was der Compiler für Adressen als > "Endergbnis" liefert? Fuer die Mutigen mit gcc/binutils toolchain, die sich durch den Assembler lesen wollen: entweder gcc -save-temps .... und dann im .s File stoebern oder objdump -D bla.o | less und dann g'schwind lesen. Gruss WK
die sind Implementation Defined. Einige davon werden von der C/C++ Implmemtation festgelegt, für GCC etwa: https://gcc.gnu.org/onlinedocs/gcc/C-Implementation.html https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Implementation.html andere werden im ABI festgelegt, welches idR Hardware- und OS-abhängig
-
Thread
Einzelne Bit in Bitfeld in for Schleife ansprechen
wir hier C++ haben, könntest du auch den [] und = Operator überladen. Nur leider liefert der AVR-GCC ja die C++ stdlib nicht mit.
/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung [c] bool outputs[13]; // einfach, schnell, ein paar Bytes "verschwendet" uint16_t outputs; // Zugriff über Bitmasken, minimaler RAM-Bedarf, etwas
-
Thread
FLTK statisch linken
Normalerweise ist das ganz einfach, wenn man alles statisch linken will. Man macht einfach "gcc -s" statt "gcc", fertig. Solange man die Libs mit -lirgendnelib angegeben hat, und nicht mit libirgendnelib.so oder libirgendnelib.a, nimmt es dann jenachdem ob man -s angegeben hat oder nicht die .
> Normalerweise ist das ganz einfach, wenn man alles statisch linken will. > Man macht einfach "gcc -s" statt "gcc", fertig. Maja, nicht ganz. Man muss schon auch von sämtlichen verwendeten Libs eine statische Version installiert haben. Und in manchen Fällen, wie es z.B. oft bei openssl gemacht
-
Thread
Risc CPU im Pico-2 RP2350
nur mit Float bzw. > Double Variablen. Dieser Testcode sollte bei angeschalteten Compiler Optimierungen unabhängig vom verwendeten CPU Kern gleich schnell ab laufen, in etwas 0 Zeit. Die Eingangsparameter sind dem Compiler nämlich bereits zur Compile-Zeit bekannt, er kann das Ergebniss vorberechnen
Seite https://godbolt.org/ Stimmt, da war etwas. Ich bin jetzt etwas erstaunt, wie schlecht der gcc inzwischen doch ist, ich hätte erwartet, das er das mit der Constant-Value Optimierung kann, tut er aber nicht. der clang machts
-
Thread
volatile und Arduino
dem ist egal, was ich mit volatile mache. Wenn ich mich recht erinnere, sind bei Arduino die Optimierungen standardmäßig ausgeschaltet. Ich meine mich zu erinnern, dass man bei späteren Installationen gefragt wurde, ob man Optimierungen einschalten will oder nicht. Bei abgeschalteter Optimierung
__asm__ __volatile__ ("cli" ::: "memory") [/c] das ::: "memory" ist dann die Magie: https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html [code] The "memory" clobber tells the compiler that the assembly code performs memory reads or writes to items other than those listed in the input and output
-
Thread
MSP430 startet sporadisch neu
Ob ein Reset erfolgte kannst Du nur mit den Flags für den Resetgrund feststellen. Z.B. beim AVR-GCC läuft jeder Interrupt in den Resetvektor, für den kein Handler aufgesetzt wurde.
Fehler eindeutig nachgewiesen ist, kann ich mich an die Fehlerbehebung setzen und mich mit Code-Optimierung beschäftigen. Vielen Dank für eure Unterstützung. Grüße Andreas
-
Thread
Nach Initialisierung falsche Werte im Struct
Welches Flag für Compiler Optimierung hast Du gesetzt? versuche es mal mit -Og
Niklas G. schrieb im Beitrag #7709717: > Es ist extrem unwahrscheinlich, dass der GCC bei so etwas simplen > versagt. Es ist extremst unwahrscheinlich, das eine intakte toolchain ein „undefined reference to memcpy“ auswirft. Oliver
-
Thread
Ich verstehe diesen Code nicht
Absprachen" halt auch durch Personalunion. :) Beispiele dafür kannst du bei Georg-Johann Lays Arbeit an AVR-GCC und AVR-LibC finden.
Analyse des Laufzeitverhaltens und darauf aufbauender Optimierung. Ist aber nach meiner Erfahrung eher wenig nutzbringend. Bringt meistens nur bei großen Maschinen was, wenn Caches zu optimieren sind. Sonst nix. Drittens hatte (und hat vermutlich bis heute
-
Thread
Noch einer (f8); 8bit-Computing mit FPGA
werden auch keine komplexen Adressierungsarten für den Stack benötigt. Im Vergleich z.B. zum AVR-GCC benötigt der Keil C51 so deutlich weniger Flash für die gleiche Funktionalität. Was der 8051 nicht so gut kann, ist riesen Datenarrays hin und her zu schaufeln. Das ist aber auch nicht die typische
Assembler-Programmierung gedacht. Nur bedeutet es, dass eine C Operation port = port | 0x01; ohne Optimierung in Einzelbefehle umgesetzt, nicht identisch ist mit port |= 0x01; als einzelnem R-M-W Befehl. Der C Standard schreibt das jedoch vor. Und Standard hin oder her, man hat auf C Ebene keine echte
-
Thread
wie aktiviere ich ASM-Ausgabe in STM32CubeIDE?
keine einzige. Ich nutze hier die CubeIDE 1.7.0, ist aber bei 1.13.0 auch nicht anders. Dazu standard GCC, alle Settings so wie von STM vorgegeben. Ich habe mir eine neue BuildConfig erzeugt (ASM-List) und dort probiert, die Flags unter ToolSettings/MCU GCC Compiler/Miscellaneous/Other Flags hinzuzufügen
nicht-optimierten. Der Assembler-Code wird im Assembler nochmal optimiert? Ich dachte, alle Optimierungen finden vor der Assemblierung statt.
-
Artikel
IRMP
irmp-main-stellaris-arm.c bereits integriert. Ebenso kann IRMP auf STM32-Mikroprozessoren eingesetzt werden. avr-gcc-Optimierungen. Ab Version avr-gcc 4.7.x kann die LTO-Option genutzt werden, um den Aufruf der externen Funktion irmp_ISR() aus der eigentlichen ISR effizienter zu machen. Das verbessert das Zeitverhalten
nicht mehr optimiert wird. Auch muss -flto an den Linker übergeben werden, weil sonst die LTO-Optimierung nicht mehr greift. Konfiguration. Die Konfiguration von IRMP wird über Parameter in irmpconfig.h vorgenommen, nämlich: Anzahl Interrupts pro Sekunde Unterstützte IR-Protokolle Hardware-Pin zum IR-Empfänger
-
Thread
Z80 Single Board Computer
Dein Beitrag im Compiler-Unterforum besser aufgehoben wäre: https://www.mikrocontroller.net/forum/gcc Im Betreff würde ich das genaue Problem noch kurz umreißen, damit der Leser vorab weiß, worum es genau geht. VG und viel Erfolg, Z80 Ahoi :)
verwenden… Aus dem notwendigen INC und AND macht der Compiler einen viertel-Opcode, bei geringerer Optimierung vielleicht einen Halben. ;-)
-
Thread
Allgemeine Fragen zu Eigenbau-libc
festgestellt, dass ich bis jetzt immer eine schnellere und kleinere > Variante von Grundfunktionen als GCC "heraus gezaubert" habe. Zu > mindestens OHNE Optimierungsoptionen von GCC. Das ist bei vielen Standardfunktionen auch mit eingeschalteten Optimierungen nicht schwierig. Der C Compiler weiss nicht
die Quellen angehängt. Einfach mit... [code] gcc -I ./ -o bench bench.c cycle.S memcpy_c.c memcpy_a.S [/code] ...compilieren. Ergebnis auf meinem System OHNE Optimierung: [code] glibc (system) memcpy(): Min: 589 Max: 29830 Avg: 2119 C:
-
Thread
Anfänger-Entwicklung einer Gärbox Steuerung
-Wall der dieses Flag enthält). Ohne diesen Parameter würde er dich nicht warnen. Siehe https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html Ich benutze in der Regel -Wall, um auf möglichst viele potentielle Fehler aufmerksam zu werden. Dann ändere ich den Code so, dass der Compiler keine Warnungen
diesem Fall bis zu einer Sekunde mehr benötigt würde, ist das zu verschmerzen. Der Aufwand zur Optimierung der File-Leseoperationen scheint nicht im Verhältnis zum Ertrag zu stehen (s. KISS) Was ich verm. überhaupt nicht verstanden habe: Wie könnten Precompiler Directives für variable Settings verwendet
-
Thread
Kein Atmega 324A mehr in AVRDUDE?!
Hallo, genau da punktet Arduino und räumt mit ihren hochaktuellen avr-gcc 7.3.0 gnadenlos alles ab. Mal ernsthaft. Wenn damals Atmel und jetzt Microchip an der avr-gcc Entwicklung mitmachen würde, dann hätte auch jeder wie bei ARM aktuelle Toolchains zur Verfügung. Da
die eine oder andere Überraschung erleben. Und was die Codeoptimierung betrifft, wurden hier für gcc ja schon ein paar Beispiele aufgeführt, auch wenn sich die Diskussion dann etwas zerfasert hat.
-
Thread
GCC v14 Release
Seit einer Woche gibt es die neue GCC Release v14 Änderungen: https://gcc.gnu.org/gcc-14/changes.html AVR-spezifisch: https://gcc.gnu.org/gcc-14/changes.html#avr
ja kein Sprachfeature. Das wurde speziell > für den AVR eingebaut. [...] Irgendwelche neuen Optimierungen. Wie gesagt bessere indirekte RAM-Zugriffe bei Reduced Tiny (PR114100) Veit D. schrieb im Beitrag #7670327: > eine Frage zum avr-gcc 13.3. In "Change" wird AVR nicht erwähnt. Die Release
-
Thread
cli() und sei()
so, weil der 13-Jährige Timmy das in seinem TikTok-Video so gesagt hat"? Ist's um Compiler-Optimierungen zu verhindern? Braucht es das an allen Stellen, oder ist es z.B. in der ISR sinnfrei, weil während dem ISR-Lauf sowieso niemand anderes an deinen Pointern dreht? Brauchst du es in main()?
Interrupts > wieder freigeben, damit der Interrupt passieren kann. Stimmt, dafür gibt es im avr gcc die Funktion ATOMIC_BLOCK(){} > Und jetzt endlich die Frage: in dieser Schleife hatte ich den Code in > etwawhile (buffer_voll) > { > sei(); > cli(); > } Solche Fragmente sich Schrott
-
Thread
uint8_t auf int16_t erweitern
geht's auch ohne >> pgm_read_byte(). > > Kommt meiner dunklen Erinnerung nach darauf an welche GCC > Version man verwendet. Wird unterstützt ab GCC v4.7 (Release 2012). https://gcc.gnu.org/gcc-4.7/changes.html#avr Allerdings wird es nicht in C unterstützt sondern nur mit GNU-C; mit -std
Seltsam, dass es trotz des fehlerhaften Zugriffs überhaupt einigermaßen funktionierte. Wegen der gcc-Version: im MAP-File fand ich dies: gcc/avr/5.4.0 Gruß Wulf
-
Thread
Klasse Optimierung Laufzeit und Speicher CPP
Harald K. schrieb im Beitrag #7650748: > Premature optimization is the root of all evil. Optimierung auf Lesbarkeit keineswegs. Und das ist hier durchaus relevant.
ähnliches: ein int besser als Rückgabewert statt als Referenz. Oder gar ein struct mit 2 ints (kann avr-gcc in Registern halten).
-
Artikel
AVR-GCC-Tutorial/Exkurs Makefiles
werden alle temporären Dateien gelöscht (="aufgeräumt"). Sonstige Einstellungen. Optimierungsgrad. Der gcc-Compiler kennt verschiedene Stufen der Optimierung. Nur zu Testzwecken sollte die Optimierung ganz deaktiviert werden (OPT = 0). Die weiteren möglichen Optionen weisen den Compiler an, möglichst kompakten
der Compiler diese "Variablen" direkt Registern zuweist. Dies kann vermieden werden, indem die Optimierung abgeschaltet wird (im makefile). Man simuliert dann jedoch ein vom optimierten Code stark abweichendes Programm. Das Abschalten der Optimierung wird nicht empfohlen. Statt des Software-Simulators
-
Thread
Makefiles im C-Projekt
richtig? Nein, nicht wenn man es richtig macht. Du beziehst dich wohl auf LTO, was keine Optimierung des Linkers ist sondern des Compilers. GCC zum Beispiel zerlegt den globalen Call-Tree in Teilbäume, die parallel compiliert werden können. Einfach mal die LTO-Optioen anschauen.
Bruno V. schrieb im Beitrag #7637296: > Ich kenne AVR-GCC nicht. Kennst du einen gcc, kennst du alle. gcc ist gcc ist gcc ist gcc. > Wer macht dabei den dependency-Kram, also dass > nur die nötigen Schritte erfolgen? Niemand. Wer braucht schon solch
-
Thread
Arduino Bibliotheken funktionieren nicht beim AVR128DB-Prozessor
Erst kommt die Funktion, dann je nach Fall entfeder die Stabilität/Robustheit oder die Kosten-Optimierung. Und erst danach schaue ich, wie klein das geht, falls die Größe überhaupt von Interesse ist. "Möglichst klein" überlasse ich den Smartphone-Herstellern. Wobei ... kleiner als 6 Zoll will ich
noch vertretbar ist diese > Welten getrennt und gleichermaßen zu halten. Schau mal, welche avr-gcc Version in Microchips kommerziellem XC8 Paket enthalten ist. Mir sagt das vorgefundene, dass ich keine Lebenszeit mehr in dem Erlernen neuer AVR Serien stecke. Bei mir ist mit ISP+Debugwire das Ende
-
Thread
AVR-Studio 4.19 und JTAG ICE MK2 unter Windows 11 64 Bit installieren
Harald K. schrieb im Beitrag #7856793: > Zum Microchip Studio gehört eine freie gcc-Version, die man einfach so > nutzen kann Falls du die XC8 Toolchain meinst: Darin hat Microchip einige Optimierungen entfernt, um sie als "pro" Version gegen extra Geld zu verkaufen: -O2, -O3,
man wird nicht gezwungen, XC8 zu verwenden. Der gcc kennt natürlich all' die Optimierungsoptionen.
-
Thread
volatile -- Anwendung auf Arrays
meist ein Index berechnet werden muss kann ein Compiler hier ja keine Voraussagen bzw. Register- Optimierung anwenden um schnelleren Code zu erzeugen, es sei denn man greift mit einem konstanten Index auf ein Array- Element zu. Übersehe ich da auf die Schnelle etwas? Gibt es dazu feste Regeln oder
Ich habe mit Programmen auf PCs am meisten Erfahrung. Wenn man auf dem PC mit Visual Studio (oder gcc ...) die Optimierung angeschaltet hat, macht der Compiler viele Dinge. Er kann z.B. ganze Funktionsaufrufe, die zur Compile-Zeit schon berechnet werden können, ausrechnen. Im Code steht dann nur noch
-
Thread
Arduino IDE 2.3.2 was dauert so lange ?
Hinter der Arduino-IDE steckt ja ein GCC. Und der ist unter Windows auf dem gleichen Rechner erheblich langsamer als unter Linux. Warum das so ist erschließt sich mir aber auch nicht. Auf meinem Testsystem war damals "nur" der Windows Defender
Betriebssystem komplett neu kompilieren muß, behindert das den workflow doch ganz beträchtlich. Das der gcc unter Windows deutlich langsamer agiert als unter Linux, auch und gerade bei solchen Winzprogramme, die auf einen AVR passen, ist altbekannt. gcc arbeitet beim Compilieren halt mit unzähligen Dateien
-
Thread
Was haltet ihr von Google Go (Golang)?
status ~/tmp$ gcc -Wall -Wextra -pedantic -std=c11 -Os -o "x" "x.c" -lpthread ~/tmp$ file x x: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
Beitrag #7606494: > Hmmm, also ich muss da noch ›libpthread‹ explizit dazu linken. Nun ja, nur weil gcc die "libc" auf mehrere libs verteilt, ändert das nichts an der Aussage. Zudem: https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread Oliver
-
Thread
Windows 10, Windows 11 für "Normalnutzer" ein Witz kennt wer?
Steve van de Grens schrieb im Beitrag #7610119: > Beim gcc unter Windows habe ich außerdem mal das Argument gelesen, dass > der gcc aus der Unix Welt stamme und auf Windows portiert wurde, ohne > ihn Performance-Mäßig an Windows anzupassen. Aber was wäre
längst in den Compiler gewandert. Open Source Verbieger wie Microchip haben aus einem gcc Lauf allerdings drei Läufe gemacht, um dem Teil einen proprietären Zwischenlauf für deren spezielle Optimierung einzupflanzen, ohne den veröffentlichen zu müssen. Was also könnte man tun, anders
-
Thread
Mal wieder ein Mandelbrot, warum ist es so verzerrt?
OpenMP erreichen, zum Beispiel #pragma omp parallel for mit #include <omp.h> und -fopenmp (mit GCC oder Clang) oder -qopenmp (ICC).
OpenMP erreichen, zum Beispiel > #pragma omp parallel for > mit #include <omp.h> und -fopenmp (mit GCC oder Clang) oder -qopenmp > (ICC). Werde ich mir mal zu Gemüte führen, danke dafür.
-
Thread
Warum dauert Dateisuche eigentlich so lange?
lahmgelegt, keine Ahnung was das Filesystem da war. Bei mir (Win10) etwas läuft der clang-cl und der gcc Compiler im Vergleich zum MS cl deutlich langsamer (2-3x). Ich weiss aber, das der unter Linux deutlich schneller ist. Offensichtlich liegt es an irgendwelchen libc Optimierungen, die unter Windows
Dateien unter Windows zumindest nicht 100%ig. > Bei mir (Win10) etwas läuft der clang-cl und der gcc Compiler im > Vergleich zum MS cl deutlich langsamer (2-3x). Ich weiss aber, das der > unter Linux deutlich schneller ist. Offensichtlich liegt es an > irgendwelchen libc Optimierungen, die unter
-
Thread
AVR ATTiny13A Problem mit Servo + LED-Ansteuerung
fast den gesamten RAM frei. Schau mal hier rein: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Flash_mit_PROGMEM_und_pgm_read Etwas weiter unten gibt es auch noch die Beschreibung von "__flash", ist IMO einfacher in der Anwendung, nutze ich häufig für Konstanten. Reinhard
switch-case-Variante raten? Aber danke für den Hinweis auf den Zustandsautomaten, werde ich mir merken. Die Optimierung von Georg G. an der zufallsZeitWert()-Funktion habe ich übernommen. Danke für die Hinweise bzgl. CKDIV8 - das hatte ich nicht berücksichtigt. Ich habe Dein Programm, Veit D., am MCU getestet
-
Thread
Stromverbrauch von Webdeployments
Schon etwas älter, aber nett zum Durchblättern, wenn man sich für HTTP(s)-Server-Optimierung interessiert: http://nabstreamingsummit.com/wp-content/uploads/2022/05/2022-Streaming-Summit-Netflix.pdf
Huebi H. schrieb im Beitrag #7566445: > Ruhig auch mal den ICC von Intel, anstatt des gcc ausprobieren. Das liegt auch an Patenten, die gcc nicht zur Optimierung verwenden kann, bzw. warten darf bis diese ausgelaufen sind.
-
Thread
Bootloader Atmega644P
Eros S. schrieb im Beitrag #7564396: > Das Problem hierbei war, dass ich zum Debuggen die Optimierung > ausgeschaltet habe. Damit du weiter ohne störende Optimierung debuggen kannst lagere die Vektor-Umbiegung in eine eigene Funktion aus, dann kannst du Funktions-lokal die Optimierung so einstellen
| (1<<IVCE); MCUCR = temp | (1<<IVSEL); SREG = sregtemp; } #pragma GCC pop_options [/c]
-
Thread
Neuer gcc compiler für ARM und Optimierungen
Mit dem Wechsel von Debian 11 auf Debian 12 wurde auch der gcc für ARM aktualisiert (jetzt arm-none-eabi-gcc (15:12.2.rel1-1) 12.2.1 20221205). Leider liefen damit einige meiner Projekte nicht mehr. Also hab ich die Ursache eingegrenzt und bin auf eine Optimierung
Schiebe die Funktion in ein eigenes C-File und kompilier es mit -ffreestanding. Dann weis GCC, das er für die Datei keine libc vorrausetzen darf und lässt diese Optimierung weg. Ggf. funktioniert auch -fno-builtin-strlen in deinem Fall.
-
Thread
sqrtf() ist immer 1 - STM32F401
wird dann aber nicht in r0 zurück gegeben, sondern im FPU Register s0 ¹. Funktioniert auch mit Optimierungen. Das funktioniert so mit dem GCC-ARM-Embedded, welcher u.a. bei der STM32CubeIDE mitgeliefert wird, und auch einzeln hier bezogen werden kann: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads Bei manchen anderen (alten) GCC Distributionen klappt es so nicht. 1: AAPCS https://github.com/ARM-software/abi-aa/blob/2a70c42d62e9c3eb5887fa50b71257f20daca6f9/aapcs32/aapcs32.rst#procedure-calling
-
Thread
Compile Error AVR MAc
Steve van de Grens schrieb im Beitrag #7549177: > Das wüsste ich auch gerne. Mit dem avr-gcc 12.1.0 bekomme ich die > gleiche Fehlermeldung, mit dem avr-gcc 5.4.0 (den ich normalerweise > benutze) jedoch nicht, der kann das Projekt compilieren. GCC 12 verhält sich standardkonform hinsichtlich inline (und das tatsächliche Verhalten hängt auch noch von der [hier fehlenden] Optimierung ab). Bei GCC 5 gab es sowas noch nicht im Standard, daher war das Verhalten anders. Die korrekte Auflösung wurde bereits in der ersten Antwort im Thread genannt: deklariere die Funktion nicht
-
Thread
BFD DWARF Error - avr-gcc 13.2 & binutils 2.41
jedesmal alles überhaupt anzuwerfen. Diese Disassembler-Listings werden eh total überbewertet. Die Optimierungen des Compilers verwürfeln den Code hinreichend gut, als dass der Versuch, da noch zeilenweise den Sourcecode zuzuordnen, eher schlecht als recht funktioniert. Wenn du wirklich wissen willst, was
ausgeschalten hatte. In den Einstellungen des DxCore ist das auch drin. Übrigens erstellt der avr-gcc 12.3 nur eine Fehlermeldung statt 2.
-
Thread
Gleitender Mittelwert -> Algorithmus
intel c++ compiler ist wohl so ein Stück schlitzohriger Software, der es in diesem Fall mit der Optimierung (Einsparung von Rechenzeit) übertreibt. Aber ob der Compiler "aggresiv optimiert" sollte der obligatorische Regressiontest (Vergleich Ergebnisse alter, neuer Softwarestand) zeigen.
Da hast Du Recht, Klaus. Guter Einwand. Ich benutz meist GCC, da ist dieser Spaß zum Glück per Default deaktiviert. Wer doppelt sicher gehen will kann ja bei GCC mit -fno-associative-math das noch mal explizit deaktivieren.
-
Thread
Orange Pi 5 Plus - Shenzhen Xunlongs Antwort!
Betriebssystem-Unterstützung ist vergleichsweise neu, dass Shenzen Xunlong selbst verschiedene Unix-Varianten samt Optimierung für den Orange Pi anbietet - insbesondere bei „frisch“ auf den Markt geworfenen SOCs gilt, dass die Hardware-Unterstützung dieser Geräte besser ausfällt, als es bei den Armbian-Images der Fall ist
Eine Verständnisfrage dazu: Soweit mir bekannt ist, wird fast das ganze Betriebssystem mit dem GCC compiliert. Wie kommt es dann dazu, dass das Gerät einerseits mit Linux ausgeliefert wird, aber andererseits nicht zur C-Programmierung taugt?
-
Thread
Plugins für AVR-Studio 4 Was
Microchip herunterladen: https://www.microchip.com/en-us/tools-resources/develop/microchip-studio/gcc-compilers Die Toolchain entpackt man einfach in ein Wunschverzeichnis und in den dortigen bin-Ordner schmeißt man die make.exe von Sysprogs mit rein. Im AVR-Studio gibt man die Toolchain manuell an
du keine Probleme haben. Falls du jedoch meinst, dass du WinAVR nutzt...seitdem gab es einige Optimierungen/Verbesserungen, wie auch hier in manchen C-Tutorials zu finden, die in WinAVR noch nicht vorhanden waren. Und noch eine Anmerkung am Rande...früher hat sich recht hart ein Gerücht gehalten,
-
Thread
ATtiny 85 PWM timer0 reset nach sei();
leuchtet, geschweige denn gedimmt ist. Habe zu _delay_ms() nur den hinweise gefunden, dass die Optimierung des Compilers auf 1 gesetzt sein muss, was sie tut. _delay_ms() funktioniert auch hervorragend beim manuellen Schalten der LED... Vielen Dank! Johannes
Johannes schrieb im Beitrag #7538753: > Wieso brauch ich zwangsweise eine Endlosschleife? Beim avr-gcc enden Programme automatisch mit einer Endlosschleife, wenn die main() Funktion endet. Man muss das nicht hinschreiben.
-
Artikel
LED-Fading
anschliessen und los gehts. Es sollte hier noch erwähnt werden, dass das Programm mit eingeschalteter Optimierung compiliert werden muss, sonst stimmen die Zeiten der Warteschleifen aus util/delay.h nicht. Bei Verwendung der LEDs auf dem STK500 bzw. bei der Verwendung von invertierenden Treiberstufen ist das
Tabelle benötigte EEPROM-Speicher entspricht log_2(MAX+1)*steps bit. Fußnoten. Siehe auch. PWM AVR-GCC-Tutorial: PWM Soft-PWM - optimierte Software-PWM in C Eine LED weich blinken lassen ohne Mikrocontroller [PDF "Experimente zur logarithmischen Empfindlichkeitsskala - Das Weber-Fechnersche Gesetz" -
-
Thread
RISC-V mit GateMate FPGA
APB-Bridge, UART, I2C, SPI usw. mit 50Mhz, ziemlich auf Kante genäht, aber auch ohne irgendwelche Optimierungen im Design.
mit minimalem Platzbedarf ist man mit anderen Architekturen besser beraten. Bei der gezielten Optimierung auf f_max hat sich bisher bei mir herausgestellt: - Lokalen MMR-Bus (memory mapped register) mit Write-Delay-Pipes versehen. Wenn die Architektur unmittelbar zurücklesen koennen muss, muss man
-
Thread
Diverse fragen zu Hash Maps in C
grösseren Einfluss. (Ironischerweise sehen die movs von GCC sehr nach einem missglückten Versuch der Optimierung mit AVX aus. Auf dem Stack alignt der gcc unter amd64 die Structs normalerweise auf 16bytes, und die passen mit 16bytes auch ins 128bit grosse xmm0
compiliert und mit anderen Suchverfahren verglichen. Eine Frage habe ich dazu noch. War das mit Optimierungen ( /O2 ) oder ohne? Ich weiss nicht, wie das bei MS CL ist, aber bei GCC & Clang macht das massive Unterschiede (ungefähr 2x).
-
Thread
Arduino Uno struct in PROGMEM lesen ?
Konstanten kann der Optimizer super gut optimieren. Den Zugriff über Variablen weniger. Wenn man die Optimierung deaktiviert, dann brichts auch mit Konstanten ins Essen. Hier schalte ich partiell die Optimierung per volatile ab. a funktioniert trotz falschem Zugriff, dank Optimierung richtig b funktioniert
Beitrag #7509025: > Du hast das Problem des TO nicht verstanden! > Natürlich liegt es an der Optimierung, dass er "versehentlich" richtige > Daten bekommt, wenn ihm Konstanten verwendet. Wenn ein Programm mit/ohne Optimierung funktioniert, und ohen/mit nicht, liegt es niemals an der Optimierung
-
Thread
Drehgeber und Tastenentprellung für Arduino
richtig kompilieren. Weil hier ja die Rede von "Arduino" ist, denke ich, dass es sich dabei um den gcc (avr-gcc ?) handelt. Normalerweise wird der gcc (die Compiler) im Laufe der Zeit immer "standard-konformer" und findet auch mehr Fehler. Insgesamt also ein Indiz dafür, dass nicht der Compiler das Problem
kompilieren. > > Weil hier ja die Rede von "Arduino" ist, denke ich, dass es sich dabei > um den gcc (avr-gcc ?) handelt. Normalerweise wird der gcc (die > Compiler) im Laufe der Zeit immer "standard-konformer" und findet auch > mehr Fehler. Insgesamt also ein Indiz dafür, dass nicht der Compiler
-
Artikel
Umstieg von Arduino auf AVR
Arduino-IDE später deinstallieren möchte, eine separate Compiler-Installation vornehmen. Siehe dazu AVR-GCC. Ein Terminal-Programm wie Putty oder HTerm kann nie schaden. Antrieb. Man sollte sich überlegen, warum man sich vom Arduino lösen will. Dazu gibt es im wesentlichen 2 Gründe: Trennung von der Arduino-IDE
Hinweis: Der Compiler kann bei der Laufvariable i die Größe von 16 auf 8 Bit reduzieren via Code-Optimierung, und kann den Speicherplatz für die Konstante ledPin wegoptimieren (wenn man static const davorschreibt). Der GCC tut das in der Regel nicht, da dieser wie jeder Compiler von einer Mindestintelligenz