-
Thread
Fühlt sich der gcc hier veralbert?
why-do-compilers-not-warn-about-out-of-bounds-static-array-indices > > "Enable optimization. Without at least -O2, GCC is not doing enough > analysis to know what a is, and that you ran off the edge." Das wäre jetzt auch mein Vorschlag gewesen, mal die Optimierungen einzuschalten. > WTF? -.- Wie meinst? Der
Rolf M. schrieb im Beitrag #8072654: > Das wäre jetzt auch mein Vorschlag gewesen, mal die Optimierungen > einzuschalten. Optimierungen sind eingeschaltet. [pre] $ grep "^:set make" ~/.vimrc :set makeprg=\(gcc\ -Wall\ -Wextra\ -pedantic\ -O3\ -std=c2x\ -save-temps\ -c\ %\ 2>&1\\\|tee\ errors
-
Thread
AVR: Watchdog löst keinen Interrupt aus
Jahrzehnte langer Verwendung von Interrupts - einem der zentralsten Themen in der uC Entwicklung - im avr-gcc immer noch ohne jegliche Warnung zur Weg-Optimierung einer globalen Variablen in einer ISR kommt. Es ist m.E. einfach nicht mehr zeitgemäß, dem Optimierer des avr-gcc da nicht eine entsprechende Regel
langer Verwendung von Interrupts > - einem der zentralsten Themen in der uC Entwicklung - im avr-gcc immer > noch ohne jegliche Warnung zur Weg-Optimierung einer globalen Variablen > in einer ISR kommt. Es ist m.E. einfach nicht mehr zeitgemäß, dem > Optimierer des avr-gcc da nicht eine entsprechende
-
Thread
Warum ist die USB/CDC Implementierung der Cube HAL so groẞ?
? Nick schrieb im Beitrag #8007084: > Sicherlich gibts auch eine komplett freie Toolchain. Der gcc sollte ja > wohl arm können. Also der GCC kann die CubeHAL kleiner kompilieren als der GCC der bei Arduino oder STM32CubeIDE mitgeliefert ist?
Niklas G. schrieb im Beitrag #8007090: > Also der GCC kann die CubeHAL kleiner kompilieren als der GCC der bei > Arduino oder STM32CubeIDE mitgeliefert ist? Quatsch. Hör endlich auf dir so wirres Zeug zusammen zu fantasieren. Ich habs schon mal
-
Thread
Eigener Bootloader stm32f103
Test zeigt eine um 25% reduzierte Größe für ein gerade hier > rumliegendes Cortex-M0 Binary. Mit GCC erstellte Cortex-M Binaries enthalten eine Menge Null-Bytes, d.h. relativ wenig Entropie. Wäre eigentlich mal interessant zu testen ob man durch clevere manuelle Assembler-Optimierung Null-Bytes und
einen Report zu erstellen... Oder bevor ein neuer PR erstellt wird mal die Entwickler fragen in gcc-help@gcc.gnu.org. Vielleicht gibt es ja schon nen PR dazu. Die Internals sagen nicht viel zu MEM_ALIAS_SET und wie die für arm umgesetzt sind. https://gcc.gnu.org/onlinedocs/gccint/Special-Accessors.html
-
Thread
Digikey teurer, Vivado unter Jahresabonnement, kostenlose Compiler von Microchip uvam
Hallo, aha Danke. Mir war nicht bewusst das gcc die PICs nicht unterstützt. Ich dachte immer gcc unterstützt alles, weil jeder mitmachen kann. Vielleicht hätte sich Microchip aus jetziger Sicht lieber im gcc einbringen sollen. Wer weiß.
im Beitrag #8072251: > was ist denn überhaupt der Vorteil vom MPLAB X Compiler gegenüber dem > gcc? Soweit ich weiß gab es nie einen. Im Gegenteil: Die haben einige Optimierungen aus ihrer Kopie des avr-gcc entfernt, um sie gegen Lösegeld zurück zu bringen. Ich fand das schon immer sehr frech.
-
Thread
Mein neues C-Buch braucht ehrliche Kritik
verstärkt anzuziehen: > https://www.heise.de/news/Linus-Torvalds-wettert-gegen-Compiler-Collection-GCC-4-9-2268920.html > > Manche sagen "Ballast" andere sagen "Erfahrung". Das Torvaldsinterview ist aus dem Jahr 2014 und in Compilerversion GCC 4.9. GCC gibt es schon noch länger und es wäre interessant
> Respekt alter, Wow!!. Danke. > Wäre eigentlich nett (Wunschliste ;)) wenn ein wenig mehr gcc-asm-inline > mit drin wäre, denn da gibt es auch eher wenig oder eher unstandarsierte > oder didaktische Hilfe > (https://sys.cs.fau.de/lehre/ss22/bst/uebung/doc/extern/gcc-inline-assembly.html
-
Thread
Bizarrer Firmware crash - ATmega4808. Wie Debuggen?
angeht, so werden diese i.d.R in den Release Notes angekündigt sofern erwähnenswert: https://gcc.gnu.org/gcc-8/changes.html#avr https://gcc.gnu.org/gcc-9/changes.html#avr https://gcc.gnu.org/gcc-10/changes.html#avr https://gcc.gnu.org/gcc-11/changes.html#avr https://gcc.gnu.org/gcc-12/changes.html#avr https://gcc.gnu.org/gcc-13/changes.html#avr https://gcc.gnu.org/gcc-14/changes.html#avr https://gcc.gnu.org/gcc-15/changes.html#avr https://gcc.gnu.org/gcc-16/changes.html#avr https://gcc.gnu.org/gcc-17/changes.html
-
Thread
direkt in ein Register des Tiny5 schreiben
://gcc.gnu.org/gcc-5/changes.html#avr
Explorer hat gemeckert.... > Hab deine Option per Copy&Paste eingefügt. Hätte ich mir von avr-gcc auch gewünscht. Das Verrückte ist, hab gerade in die bash history geschaut. Weiter oben hatte ich es erst einmal richtig und im weiteren Verlauf mit verschiedenen Optimierungen dann zielsicher durch
-
Thread
Versuch einer Millis Funktion für AVR
einfach eine avr-g++ Toolchain basteln. Siehe auch dortige Bugreports. Dass der Code nicht zu GCC beigetragen wurde lässt auch tief blicken (Wakely ist ja GCC Maintainer).
". Die Beschreibung ist gültig bis avr-gcc 14.x.
-
Thread
Günstiges und einfaches Mini-Controller Board, was würdet ihr heute nehmen?
int main(void) {' >> main.c > echo ' printf("Hello World!\n");' >> main.c > echo '}' >> main.c > gcc -o main main.c > ./main Noch einfacher: [pre] gcc -xc - && a.out #include <stdio.h> int main(void) { printf("Hello World!\n"); } ^D [/pre] Da die erste Zeile sowieso immer gleich
Beitrag #7993214: > die Zertifizierung für > sicherheitskritische Systeme, und höchste Compiler-Optimierung sind auch für gewerbliche Hersteller in den wenigsten Fällen notwendig. ciao Marci
-
Thread
Tipps zur Speicheranalyse gesucht
Erhoffe mir Tipps wie man Fehler bei der Speicherallokation auf die Spur > kommt. Sanitizer? Im GCC -fsanitize= https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html
Beitrag #7972555: > Mit -Os ist der objdump auch noch gut lesbar, evt. besser als > ganz ohne Optimierung. Oder -Og
-
Thread
"Memory Barrier" in C99
sorgen, dass entsprechende Funktionen siese Eigenschaft haben, etwa indem man interprozedurale Optimierungen deaktiviert.
angegeben oder Seiteneffekte beschrieben werden können, firmal existiert also noch nicht einmal eine GCC Memory Barrier wie asm("" ::: "memory").
-
Thread
Arduino Uno R4: Besonderheiten und Abhilfen
nützt die schnellste CPU nichts. Wie immer gilt. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
nein - ist sie nicht > > Wie immer gilt. > > https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung Vielen Dank für den Link, lese ich ersteinmal. Viele Grüße Kai
-
Thread
Object Oriented Forth
Hab' vor Jahren mal eines für ein ST7735 1,8" TFT geschrieben. Hat einen Tag gedauert. Inklusive Optimierung.
Stackmaschinen mies aus. Der Punkt ist halt schlussendlich in der klassischen embedded Entwicklung der: GCC oder nicht GCC (oder dito LLVM). GCC ist aber klar auf Registermaschinen ausgelegt und 'kennt' die Forth-Denke nicht. Also bleibt praktisch gesehen Forth nur noch allenfalls fuer paralleles Multiprozessing
-
Thread
C mit Visual Studio Code
C-Compiler direkt als Extension in das VS Code einbinden und welcher ist empfehlenswert (gibt es dort GCC)?
Udo S. schrieb im Beitrag #8017595: > Ich persönlich würde ja den GCC Compiler, ggf. make und einen netten > Editor nehmen. VSCode ist nur ein Editor, sonst nichts. Ob nett, ist Ansichtssache. Und da unter Linux gcc und make dranzudengeln sollte man wohl hinbekommen
-
Artikel
AVR-GCC
aus dem svn kommen (svn co svn://gcc.gnu.org/svn/gcc/branches/branchname gcc ,mit branchname gcc-version-branch, aktuell ist gcc-6-branch) oder aus dem aktuellen trunk (svn co svn://gcc.gnu.org/svn/gcc/trunk). Die AVR-LibC: Download. Achtung
Einstieg in die Nutzung des avr-gcc unter MS-Windows mit WinAVR (englisch) AVR-GCC und Linux GCC-Forum auf mikrocontroller.net
-
Artikel
AVR-GCC-Tutorial
allem (aber nicht nur) den Abschnitt = Oft gestellte Fragen (und Antworten dazu). Den Artikel AVR-GCC in diesem Wiki lesen. Das GCC-Forum auf www.mikrocontroller.net nach vergleichbaren Problemen absuchen. Das avr-gcc-Forum bei AVRfreaks nach vergleichbaren Problemen absuchen. Das Archiv der avr-gcc
Warteschleifen) vorzuziehen, da leere Zählschleifen ohne besondere Vorkehrungen sonst bei eingeschalteter Optimierung vom avr-gcc-Compiler wegoptimiert werden. Weiterhin sind die Bibliotheksfunktionen bereits darauf vorbereitet, die in F_CPU definierte Taktfrequenz zu verwenden. Außerdem sind die Funktionen der
-
Thread
Systemnahe Programmierung in C (SPiC) Vorlesungsfolien, Übungen und Projekte
virtuellen Maschine ausgeführt. > [pre] > $ python > Python 3.13.7 (main, Aug 15 2025, 12:34:02) [GCC 15.2.1 20250813] on > linux > Type "help", "copyright", "credits" or "license" for more information. >>>> print("Hier auch?") > Hier auch? >>>> > [/pre] [pre] Python 3.14.0 (main, Nov 18 2025, 05:53:34) [GCC 14.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys; _ = sys.stdout.write("Ja.\n") Ja. >>> [/pre]
-
Thread
8 mal 1bit zu einmal 3bit zusammenfassen
zur Verfügung stehen. Dann bist Du mit dem Erfassen der WW-Tabelle bereits fertig; weitere Optimierung unnötig: Ein 8-auf-1-Multiplexer kann JEDE boolsche Funktion mit 3 Variablen darstellen, und es ist immer EXAKT derselbe Aufwand notwendig... Nichttriviales Beispiel: Gefordert wird ein
popcount ..N ..N = 1 + ..N .endr .size look, . - look[/pre] [pre] $ avr-gcc -c popcount.sx && avr-objdump -d popcount.o Disassembly of section .text: 00000000 <look>: 0: 00 01 01 02 01 02 02 03 01 02 02 03 02 03 03 04 ................ 10: 01 02 02 03 02 03
-
Thread
eine mit 'volatile' erzeugte Variable wird im zweiten C-File ignoriert
aus einem Beispiel, evtl. sogar vom Tutorial hier. Findes es aber gerade nicht. Von irgendwo, mit GCC her. Da war es so geschrieben. Wie würde es denn richtig sein?
keine *.cpp Datei mehr. Auch wieder: Alles an einem Ort. *.h only Angeblich hilft das gar der Optimierung auf die Sprünge. Wenn es auch das kompilieren verlängern mag. Für mich macht es das "besser"! Du magst anderer Ansicht sein. Harald K. schrieb im Beitrag #7938588: > weil es neuer ist?
-
Artikel
Avr-gcc Bugs
Useless code generated for stack / register operations 12.3 92729 Switch from cc0 to CCmode so avr-gcc can be kept in GCC v11+ 11.0 82658 Right-shifting 8-bit unsigned integers. 10.0 92055 Support 64-bit double 10.0 86040 RAMPZ not cleared after reading from __flashN 9.3, 8.4, 7.5 85805 Wrong code for
epilogue on naked function 4.5.3 41885 Rotate patterns do not correctly consider overlap. 4.5.0 Weblinks. gcc.gnu.org/bugzilla: avr avr-libc: Fehler
-
Thread
Programmieren mit KI
Flag noch nie > gebraucht! Hast du halt "Glück" gehabt und benutzt wahrscheinlich "ältere" AVR-GCC. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 Niklas G. schrieb im Beitrag #8028325: > Was würde es hochgerechnet pro Monat kosten wenn man dieses Pensum > täglich umsetzt? Das ist eines
schrieb im Beitrag #8028325: > Sicher dass es *false* Positives sind?! Siehe zum Beispiel https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56456 Ein GCC Maintainer bezeichnete -Warray-bounds mal als "broken by design". Ähnlich ist die Lage bei -Wstringop-overflow https://gcc.gnu.org/bugzilla/show_bug.cgi
-
Artikel
Bitmanipulation
Operation (1 MEINBIT1) stillschweigend, gemäß den C-Regeln, die 1 als Integer-Typ ansieht. Beim AVR-GCC bedeutet das 16-Bit/signed und die folgende Operation bringt ggf. nicht das gewünschte Ergebnis (Stichwort: „Integer Promotion“). Angenommen, Bit 15 soll in einer 32-Bit weiten Variable gesetzt werden
der Bitmanipulation bei IO-Registern Weblinks. AVR Built-in Functions – spezielle Funktion im avr-gcc zur schnellen Bitvertauschung (englisch) Sean Eron Anderson: Bit Twiddling Hacks – Sammlung von komplexeren Bitmanipulationen (englisch) Günther Jena: Bitmanipulation mit C – mit Übungen
-
Artikel
Festkommaarithmetik
undefiniert , in aller Regel spuckt es das unbekannte Zeichen aus (wie bei '%' ). 'S' ist eine avr-gcc-Erweiterung: Es interpretiert den übergebenen Zeiger als Flash-Adresse und liest die Bytes intern mit pgm_read_byte() . Anders als bei Windows, wo "%S" mit Unicode zu tun hat. Dadurch ist die printf-Funktionalität
der Ablage im Speicher berücksichtigt werden. Im Sinne der Verständlichkeit wurde bewusst auf Optimierungen und kompakt/kryptische Schreibweisen verzichtet. Der Syntax ist Standard-C und somit auf jedem Compiler nutzbar. Diese Funktion gibt auch führende Nullen aus. Das ist erstmal OK, denn so wissen
-
Thread
TWI1 auf Atmega328PB schlägt fehl
330R serielle Widerstände eingefügt, nichts hilft. Um Probleme mit meinem Code (AVR command line gcc) auszuschließen, habe ich die Arduino-IDE gestartet und das Beispiel aus https://github.com/mathertel/LiquidCrystal_PCF8574 auf mein Board geladen. Ich habe das Beispiel mit vielen Serial.print() Statements
Beispiel für abstruse, scheinbar völlig unerklärliche Fehler, die sich so ergeben können. Nach Optimierung der Bürden lief das dann mit beiden Oszillatortypen gleichermaßen, insbesondere auch inclusive Timer4... > Ist der > PB Oszillator wirklich so pingelig? Ja. Alle LowPower-Oszillatoren sind
-
Artikel
FIFO
Bytes arbeiten. Die kleine Bibliothek ist als Archiv verfügbar. Für die Simulation muss man die Optimierung des Compilers ausschalten, um alle Variablen anzeigen zu können. 2 n -Ringpuffer - die schnellste Lösung. Vorteile: Durch Bitmaske auf den Feld-Index write kann der nicht "Amoklaufen" und beliebige
werden, bzw. durch Generische FIFO mit C-Präprozessor. Mit einigen zusätzlichen Macro-Tricks (und GCC Compiler Extensions) ist es möglich diese FIFO auf beliebige Datentypen und Längen zu erweitern. Die Grundidee ist, dass für jede FIFO ein neuer struct erstellt wird, dessen Bestandteile identisch benannt
-
Artikel
Pulsweitenmodulation
zusammen. Etwas genauer: Schaltverluste beim FET Siehe auch. Pulsdichtemodulation AVR-Tutorial: PWM AVR-GCC-Tutorial: PWM Soft-PWM Motoransteuerung mit PWM LED-Fading AVR PWM Ambilight in Hardware 1-Bit Digital-Analog-Wandlung Forumsbeitrag: Audioausgabe mit PWM Forumsbeitrag: SPWM auf Atmega8, bitte um Feedback hinsichtlich Optimierung Forumsbeitrag: H-Bridge 50Hz Sinus - LC Filter dimensionieren Forumsbeitrag: Arduino Mega 11 PWM-Pins mit 1kHz Forumsbeitrag: Sprung in der PWM-Kennlinie beim ATtiny85 und Timer 1 Forumsbeitrag: