-
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
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
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
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.
-
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
-
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
-
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
-
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
-
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
-
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:
-
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
-
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
-
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
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
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
-
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
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
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
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
-
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
-
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
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
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
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?
-
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
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
MPLAB X Debugging mit Snap Debugger vs PicKit
github.com/cv007/XC3216 So etwas ähnliches kenne ich schon. Harald tat so, als ob es einen freien gcc für die PICs gäbe.
Harald K. schrieb im Beitrag #7925739: > Das wiederum ist ein Grund für viele, stattdessen den gcc zu verwenden, Das war mal der Fall, als es nur eine rudimentäre, bzw. wirklich "kastrierte" Optimierung gab. Is seit _gefühlt_ 10 Jahren nich mehr so.
-
Thread
Prozessorwechsel: Wie Code verifizieren?
Testsystem: STM32 Nucleo Board mit einem STM32F446RE (Cortex M4) - CPU Takt 180 MHz - keine Optimierung beim Compiler (GCC) - Speicherbedarf (RAM und Flash) ca. 34 KByte, davon 8 KByte RAM für den Speicherbereich des 68HC05 (Code/RAM/IO) - der unten stehende Testcode braucht für 100000 68HC05
Dieter S. schrieb im Beitrag #7926029: > - keine Optimierung beim Compiler (GCC) Und wie sieht das Ergebnis bei Optimierung auf Ausführungsgeschwindigkeit aus?
-
Thread
C typecast array nach struct
. So modern muss der Compiler dafür übrigens auch nicht sein. gcc macht das schon seit mindesten 25 Jahren.
Development Kit ist erst 15 Jahre alt, > kann aber den memcpy Hack nur mit voll aufgedrehten Optimierungen - was > schlecht ist wenn ich kleine Programme möchte. Das ist kein Hack, sondern eine Optimierung. > Ich weiss Linuxer verwenden überall und immer -O3 :-). > Wenn du in einer Freestanding
-
Thread
Compileroptionen
bewaffnet mit der Fehlermeldung kann man dem Compiler ja den präprozessierten Quelltext entlocken (gcc -E) und sieht das Problem dann meist sofort. > Solche einzeiligen Funktionen optimiert der gcc schon weg. Darum musst > du dich nicht manuell kümmern. Jein. Die Optimierung ist nicht das vordringliche
Rolf M. schrieb im Beitrag #7915116: >> Der GCC tut dies bei kleinen Funktionen und eingeschalteter Optimierung >> auch recht häufig, so dass die Verwendung von "inline" oft gar keinen >> Unterschied macht. > > Doch, es macht einen Unterschied
-
Thread
Wie ist PORTB implementiert?
interpretiert. Da es sich hier um ein Hardware Register handelt kann der Compilier keine Annahmen für Optimierungen treffen, daher ist das volatile notwenig. Der so erzeuge Pointer wird sofort dereferenziert damit damit eine einfach Zuweisung mit = möglich ist. Man kann sich das alles zur Compilezeit mit
(Ausnahmen: AVRrc und Operationen wie ELPM. Außerdem Instruktionen wie RAMPx verwenden, was aber GCC nicht nutzt). > als ein 8 Bit breiter Pointer Nitpick: Der Zeiger ist 16 Bits breit. Das Ziel ist ein 8-Bit Wert.
-
Thread
Wie baut man in C Strings zusammen?
erst einmal mathematisch > vereinfacht, bevor er Assembler-/Maschinencode daraus generiert. Im GCC kein voll ausgewachsenes CAS (wäre zu langsam), aber immerhin eine Beschreibungssprache die Vereinfachungen beschreibt: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/match.pd https://gcc.gnu.org
entsprechende Vorgaben machen können, >> was man gerne als Ergebnis hätte. > > Die Option -O existiert. GCC kennt mehr als 500 Optionen und Parameter (--param) alleine zum Tunen der Optimizer: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Hinzu kommen die genannten Sammeloptionen wie -O0,
-
Thread
AVR removed in GCC 16 ?
g [/code] Verstehe ich das falsch oder muss jetzt etwas gemacht werden? Grüße https://gcc.gnu.org/gcc-15/changes.html https://gcc.gnu.org/backends.html
#7884522: > der vorgeschlagener Patch mit optimize_function_for_size_p() > zielt auch auf eine Optimierung hin. Also werde ich mich mal weiter > in die Richtung damit beschäftigen. Das Patch wurde abgelehnt weil es nicht die Ursache behebt: https://gcc.gnu.org/pipermail/gcc-patches/2025-April/
-
Thread
ADC-Kanäle sukzessive abfragen
so das noch >400 für das > Hauptprogramm frei bleiben. Der Compiler ist z.B. WinAVR oder avr-gcc 14. Die Optimierung steht auf -Os. Haben Sie ein Code-Beispiel für das erwähnte Serial? Tx allein würde reichen.
Vielleicht liest der Autor dieser Seite ja gerade mit? https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe#Der_interne_ADC_im_AVR
-
Thread
CH32V003, float wirklich langsam?
(und im Anhang als Textdatei): [code] Benchmark Ergebnisse CH32V003 Compiler: riscv-none-elf-gcc Version 14.2.0 / ch32v003fun Framework | Zeit [s] | Optimierung | int8 | int16 | int32 | float | Codegroesse |
INT16-Test, korrektes Ergebnis: [code] Benchmark Ergebnisse CH32V003 Compiler: riscv-none-elf-gcc Version 14.2.0 / ch32v003fun Framework | Zeit [s] | Optimierung | int8 | int16 | int32 | float | Codegroesse | ------------------
-
Thread
Fehlermeldung: near initialization for
memory-mapped betrieben. Bis gestern lief auch alles wunderbar. Als Compiler hatte ich den avr-gcc.exe (GCC) 8.5.1 20241123. Heute habe ich noch eine weitere Datei erstellt. Das Compilieren klappt einwandfrei und mir wurde kein Fehler gemeldet. Wenn ich das Programm auf den Controller übertrage
stammt noch aus dem vorigen Jahrtausend. Da war gerade die Unterstützung eher kleiner Architekturen im GCC noch lange nicht so ausgefeilt wie heute. Da konnte man mit einem Makro schon mal etwas „Mikro-Optimierung“ machen – heutzutage ist das aufgrund des schlechter wartbaren Sourcecodes eher hinderlich.
-
Thread
C: Bedingte Anweisung "if"
kein undefined behaviour enthalten und der Compiler ist frei, unter dieser Annahme beliebige Optimierungen durchzuführen. Es kann sein, dass das mit deinem aktuellen Compiler und den aktuellen Einstellungen funktioniert und der Code genau das macht, was du erwartest. Genau so gut kann das irgendwann
); void call_fun (int a) { if (a >= 10 && a <= 20) fun(); }[/c] wird mit avr-gcc zu: [pre] call_fun: sbiw r24,10 sbiw r24,11 brsh .L1 rjmp fun .L1: ret[/pre] Man kann also die Teilausdrücke nicht mehr bestimmten Instruktion(sfolg)en
-
Thread
avrgcc: verteilte Array-Initialisierung
const Name __flash1 NameTable[] = Named Address Spaces? Was haben die damit zu tun? https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html#AVR-Named-Address-Spaces-1
Ursache für die fehlende initReadSensors_Schd_NameTableEntry_ctor() ist Linker-Optimierung. Wenn ich die Option -flto entferne, sind sie im Objekt enthalten. Gibt es eine Möglichkeit, dem Linker mitzuteilen, dass er eine Funktion von der Optimierung ausnehmen soll?
-
Thread
Raspberry Pi Pico SDR
schön, aber ist das so? Ich sehe aus meiner Sicht drei Optimierungen, die es wert wären in der Praxis zu testen: Diff nach Original vs. INA nach Sandras Vorschlag vs. "Doppelt Balanced" mit Übertragern nach dem Optimierungs-Paper. Da eh ein Muxer brach liegt
Wulf D. schrieb im Beitrag #7950362: > > Ich sehe aus meiner Sicht drei Optimierungen, die es wert wären in der > Praxis zu testen: Diff nach Original vs. INA nach Sandras Vorschlag vs. > "Doppelt Balanced" mit Übertragern nach dem Optimierungs-Paper. > > Da eh ein Muxer
-
Thread
Arduino: digitalRead in Interrupt ist unzuverlässig
Dieser Code ist 0 Verständlich Stimmt. Das ist ultrakompakter Code mit vielen Tricks bei der Optimierung. >und kaum Wartbar für > ein µC Programmier-Laie Ist das ein Maßstab, daß Laien sowas warten können? Laien und Profis benutzen Bibliotheken als Black Box, d.h sie benutzen die Funktion von
Compiler... > > Welcher genau ist das? v14 Wobei es die kürzeren ISR Prolog+Epilog bereits ab GCC v8 / Binutils v2.29 gibt. Im Code habe ich "last" als uint8_t definiert anstatt als int8_t. Der Wert ist ja in [0, 15], und mit int8_t bekommt man dann ein überflüssiges Sign-Extend beim Berechnen
-
Thread
cpp memory leaks vermeiden
ganze lasse ich auf folgenden Systemen laufen: * Arduino Nano (Atmega328), 2k Ram, 32kFlash gcc version 5.4.0 (GCC) gcc version 7.3.0 (GCC) * Pipico2, 520k Ram gcc version 14.2.0 (GCC) * PC, 16GB Ram gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04) Der Atmega hat den
landest und wenn nicht, warum nicht. Die Funktion ist ursprünglich hier definiert: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/src/c%2B%2B11/functexcept.cc
-
Thread
AVR64DD32, UART-Ausgabe bleibt hängen, Assembler
ich habe mir nun auch vorgenommen, mich mal in "Embedded-C" für AVRs einzuarbeiten, zunächst mit AVR-GCC oder dem Microchip XC8, da muss ich noch schauen, für was ich mich entscheide (Empfehlungen wären willkommen). Kann ja nicht schaden, auch wenn ich für AVRs mich weiterhin in Assembler vertiefen werde
habe mir nun auch vorgenommen, mich mal in "Embedded-C" für AVRs > einzuarbeiten, zunächst mit AVR-GCC oder dem Microchip XC8, da muss ich > noch schauen, für was ich mich entscheide. Soweit mir bekannt, basiert xc8 für AVR auf den GNU-Tools (avr-gcc etc.), allerdings hat Microchip einige Optimierungen
-
Artikel
Interrupt
, müssen um kritische Aktivitäten herum jedesmal die Interrupts abgeschaltet werden. Beispiel (AVR-GCC): Wenn man ein globales Einschalten der Interrupts mit sei() vermeiden will, kann man die folgende Methode benutzen. Hierbei werden die Interrupts nur eingeschaltet, wenn sie vorher bereits eingeschaltet
auf eine 16-Bit Variable. Siehe auch. ADC Timer FAQ#Timer AVR-Tutorial - Interrupts in Assembler AVR-GCC-Tutorial - Interrupts in C Forumsbeitrag: Minimale Pulsbreite zum Auslösen eines Pin Change Interrupts beim AVR Forumsbeitrag: Schwerer Bug in AVR-GCC 4.1.1 Forumsbeitrag: Code in den Atomic Block verschleppt
-
Thread
Welcher Controller für Unterrichtszwecke?
speziell wenn Du Assemblerprogrammierung machen möchtest. Und da Microchip da einen (wenn auch alten) GCC einsetzt, könnte das vielleicht im Unterricht auch Vorteile haben. Bei PIC24 brauchst Du auch nicht mehr unbedingt High-Voltage Programmierung und kannst dann auch MPLAB SNAP als Programmer einsetzen
Gerhard O. schrieb: >> Hallo Falk, >> >> CCS ist Eclipse mit SWD JTAG Debugger und Compiler ist GCC. >> >> Der CCS fühlt sich genauso an wie das STM32 IDE. Debugger ist auch sehr >> ähnlich mit dem des STM32 IDEs. >> >> Ich fühl mich damit sauwohl. > > Ich kenn CCS6, damit arbeite ich seit
-
Thread
Atomic-Variable etc. - ich verstehe fast nur Bahnhof
dass man sie auf Single-Core Systemen *ohne* Cache (also Cortex-M3/4) weglassen könnte, das weiß der GCC nur anscheinend nicht.
den Compiler klar, dass sich die Variable jederzeit ändern kann und er kommt nicht auf die Idee Optimierungen durchzuführen, die zu beschädigten Daten führen. "Volatile" garantiert aber keinen atomaren Zugriff. Ob der Zugriff atomar ist, hängt von einigen Randbedingungen ab. Am besten schaut man ins