-
Thread
Problem bei If Bedingung
den Wertebereich jedes Datentyps angibt. Nützlich: Alle Warnungen des Compilers einschalten. Bei GCC wäre das -Wall.
(gedanklich) eine 0x00FF. Das passiert auf der rechten Seite auch, und schon passt es. Die Optimierung kann natürlich hinterher die Behandlung des high bytes wieder rauskicken.
-
Thread
Mein Erster, aber welcher?
entwickelt hat, schon. Diese Logik verstehe ich jetzt nicht... Und klar, wenn man schon so irre ist es mit GCC etc. aufnehmen zu wollen dann muss es natürlich Pascal sein.
Der Arduino (also der AVR auf dem Board) wird in echtem C programmiert, übersetzt wird mit dem avr-gcc. Lediglich die IDE ist jede von Processing. Für die Visualisierung auf dem PC wird dann Processing benutzt.
-
Thread
avr >> int oder char
Eigenmächtigkeit" des GCC ;-)
> so eine "Eigenmächtigkeit" des GCC ;-) Der gcc kann da nichts dafür. Das liegt am avr.
-
Thread
Laufzeitoptimierung
ich wär mir da nicht so sicher), wie auch immer das läuft darauf hinaus, daß beim Debuggen (ohne Optimierung) was anderes als Ergebnis rauskommt, als beim späteren Programm mit Optimierung. Sowas bewusst zu programmieren halte ich für fahrlässig, zumindest wenn es später weiter verwendet wird.
der debug als auch release version constant folding aktivieren. Während dem debuggen stört diese optimierung nicht, da der code nicht umsortiert wird. Meiner Erfahrung nach führt der gcc schon ohne optimierung constant folding automatisch aus.
-
Thread
Gründe gegen einen AVR
Die getrennten Adressräume für ROM und RAM sind bei der C-Programmierung (zumindest mit GCC) lästig.
> sich jemand aus Not zusammengebastelt hat ;) Sag sowas nicht. Der C30 Compiler ist afaik ein gcc Compiler + Optimierungen von Microchip. Und genau diese machen Problem und erzeugen teilweise unsinnigen, wenn nicht sogar falschen Code.
-
Thread
Compilerbug bei AVR-GCC ?: Stack Pointer und Interrupts
Deutet folgende Befehlsfolge auf ein Problem im Bereich Stack Pointer und Interrupts beim AVR-GCC hin ? Vorweg eine Beschreibung ... Die Compilerausgabedatei xxx.lss enthält zusätzlich zum Projekt-C-Source den übersetzten Assemblercode. Es folgt ein kleiner Auszug daraus: a1c: 2d
und bei abgeschalteter Optimierung sowieso. (Nur passt dann das Timing an einigen stellen nicht mehr so gut und der Code wird ziemlich aufgebläht) Habe leider gerade keinen Code an dem ich das demonstrieren kann (darf ich noch
-
Thread
Allg. Frage zum Optimierer
Stellen kann man Schiffbruch erleiden. Beispielsweise weil die "__delay_xx" Schleifchen erst mit Optimierung ihre wahre Kunst entfalten.
einzuschalten oder eher nicht ? Es muss auch sichergestellt sein, daß das RAM ausreicht. Ohne Optimierung legt gcc lokale Variablen auf dem Stapel ab, was flott zu merklichem (dynamischem) RAM-Verbrauch führen kann. Weil der Verbrauch dynamisch ist -- also erst zur Laufzeit entsteht -- ist er nur schwer
-
Thread
Compiler für µP.
Die Compiler sind immer spezifisch für den Prozessor-Typ aufgebaut, der freie GCC hat halt dann die passenden "submodule" wie ich es mal nennen möchte ist aber nicht Code begrenzt. Die µC-Hersteller bieten auf ihren Internetseiten entweder eigene Produkte an, oder "kastrierte
lernen, da gibt es fuer eigentlich jeden uP einen Compiler > fuer. Dann kommst du in den Genuss des GCC, den es für n>>1 Architekturen gibt. PIC und 80C51 ausgeschlossen, dafür gibt's den SDCC. http://gcc.gnu.org/install/specific.html
-
Thread
Arithmetikfunktionen in AVR GCC
, dass der ICC-Compiler Arithmetik-Funktionen im Umfang von 1033 Bytes eingebaut hat, der GCC-Compiler hingegen 3292 Bytes. Als Optimierung ist -Os eingestellt, andere Einstellungen liefern noch mehr Code. Die Linker-Option -lm , welche in einem anderen Beitrag vorgeschlagen wurde, bringt keine
nur die Grundrechenarten und Konvertierungen verwendet, höhere mathematische Funktionen nicht. Der GCC-Compiler baut dafür Library-Funktionen aus der "libgcc.a" im Umfang von mehr als 3KBytes ein. Viele Grüße
-
Thread
avr-size: invalid option -- C
nichts geändert. Optionen = wie von AVR Studio vorgegeben + -fno-inline-small-functions + -Os GCC 4.3.3 -> 1018 bytes (99.4% Full) GCC 4.7.2 -> 1048 bytes (102.3% Full) ohne -fno-inline-small-functions GCC 4.3.3 -> 1114 bytes (108.8% Full) GCC 4.7.2 -> 1048 bytes (102.3% Full) ??
G. schrieb im Beitrag #2920069: > GCC 4.3.3 -> 1018 bytes (99.4% Full) > GCC 4.7.2 -> 1048 bytes (102.3% Full) > > ohne -fno-inline-small-functions > GCC 4.3.3 -> 1114 bytes (108.8% Full) > GCC 4.7.2 -> 1048 bytes (102.3% Full)
-
Thread
Verständnisfrage zum Speicher
Ja, ich verwende einen 8bit AVR mit GCC und programmier ihn mit AVR Studio. Ich werde mir den Link mal anschauen, danke!
oder? (Es sind zu viele, als das sie als Array in den SRAM passen würden, daher mein Wunsch der Optimierung.)
-
Thread
Datenaustausch zwischen ISRs
Falls du den gcc verwendest: https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
Es gibt auch eine gcc memory barrier: asm volatile("":::"memory");
-
Thread
Unterschiede im compilierten Code nach Neuübersetzung
Hallo! Gab es hier nicht mal irgendwo eine Diskussion bezüglich des GCC, dass sogar Optimierungen abhängig sind von der aktuellen Prozessorlast und Ähnlichem? Ich hab da irgendwas im Hinterkopf... Gruß Dennis
Dennis S. schrieb im Beitrag #4050964: > Gab es hier nicht mal irgendwo eine Diskussion bezüglich des GCC, dass > sogar Optimierungen abhängig sind von der aktuellen Prozessorlast und > Ähnlichem? Ich hab da irgendwas im Hinterkopf... Ja, die gab es. Siehe http://www.mikrocontroller.net/topic/357362
-
Thread
MMC/SD Bootloader füt ATMega16
avr-gcc (GCC) 3.4.6 Ich hab dein makefile nicht verändert und auch (noch) nicht am Quellcode rumgefummelt.
Das Datenblatt gibt die größe in Word an und der gcc-avr gibt sie in Byte an.
-
Thread
Welche Programmiersprache auf µC
+ Compiler in Form des g++ frei Haus kommt. http://embeddedgurus.com/stack-overflow/2010/02/is-gcc-a-good-compiler/
return printf("Hello, Word!"); } [/c] ...compiliert und linkt ohne Fehlermeldungen mit VC und GCC.
-
Thread
Schokolade aufteilen ist doch einfach! Oh wait (Programmierknobelaufgabe inside!)
Lösung gibt?! Auch ein Aspekt, ja. Aber in meiner Lösung rührte der TLE daher, dass ich eine Optimierung gemacht habe die dann doch keine war :)
Ist an euren Algorithmen grundlegend was anders als bei mir oder "beschränken" sich eure Optimierung auf effizienteres Ausschließen von unmöglichen Fällen. Eine offensichtliche Optimierung, die ich bei mir sehe ist die Teilmengen effizienter zu generieren. Ich hätte da noch ein Aufgäbchen, die
-
Thread
C Programmierung
Christian H. schrieb: > Gerhard M. schrieb: ... > Dabei hattest Du natürlich alle Optimierungen abgeschaltet, oder? nee
> Naja, man weiß nie was der Compiler draus macht. Natürlich weiß man das. gcc -S
-
Thread
Frage: AVR-GCC
Bernd schrieb im Beitrag #4427074: > Keine Variablen in _delay_us mehr erlaubt? Seit welcher AVR-GCC Version > ist das so? M.W.n. war das schon immer so. D.h., erlaubt sind sie schon, aber es kommt nicht das dabei heraus, was du erwartest mangels Gleitkomma-Optimierung... Mach ne Schleife und
Guckst Doku: http://gcc.gnu.org/onlinedocs/gcc/AVR-Built-in-Functions.html
-
Thread
msp430-gcc Segmentation Fault
Hallo, wenn ich ein Sourcefile mit dem msp430-gcc ohne Optimierung kompiliere funktioniert alles. Versuche ich das selbe File mit der Optimierung ( -Os) zu kompilieren beendet sich der Compiler mit einer Segmentation Fault. Ich habe schon versucht
Langsame Lösung: Programm gründlich auf das Problem reduzieren (also kein 10000 Zeilen-Paket) und GCC-Bugzilla und ggf passende Mailing-Liste drauf ansetzen.
-
Thread
Hex-Datei zu groß??
Hi jetzt verwendest du -O0 was AFAIK gleichbedeutend mit "keine Optimierung" ist. Das sorgt für sehr große Dateien. Verwende -Os. Du mußt keinen neuen Compiler verwenden. Höchstens einen aktuellen WinAVR. Matthias
schreiben »reg = val;«. Also einfach eine Zuweisung. inp() und outp() waren Krücken, die AVR-GCC mal gebraucht hat, weil die Form der direkten Zuweisung (wie sie von Atmel überall propagiert wird und in allen anderen AVR-Compilern schon immer drin war) anfangs im AVR-GCC noch nicht implementiert
-
Thread
Welchen Controller für C++ Programmierung? Gesperrt
ähnlich (Touch, TFT, USB > ...) Man korrigiere mich, wenn ich flashc liege, aber ich glaube, der GCC unterstützt den PIC32 nicht (ich habe zumindest auf die Schnelle nix in der Dokumentation https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/ gefunden).
Fall war das von g++ erzeugte Binary sogar minimal kleiner als das von gcc. Die große Ausnahme, für die ich bislang noch keine Lösung gefunden habe, betrifft globale Variablen, die in einer ISR() und anderen Funktionen wie main() verwendet werden. Da scheint der GCC nicht
-
Thread
Optimizer fehlerhaft?
als Nebeneffekt einer Datenflussanalyse. Die kostet Zeit und wird eigentlich mit dem Ziel der Optimierung durchgeführt. Folglich kommt die Meldung nur bei eingeschalteter Optimierung. Und dass sich solcherart fehlerhafte Programme mit und ohne Optimierung völlig anders verhalten ist ganz normal. Ohne Optimierung landen Variablen immer im Speicher, mit Optimierung oft im Register, was bei fehlender Initialisierung gänzlich andere Werte zur Folge hat.
-
Thread
AVR: zwei ISR's blockieren sich
Wahl, meinen Code > entsprechend dem Analyseergebnis zu organisieren. Ich machs kurz: https://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars Keine Programmiersprache ersetzt die nötigen Kenntnisse dieser. (sonst gehts wie im Thread "irgendwas mit C++" -_- )
FelixW schrieb im Beitrag #4024137: > Ich machs kurz: > https://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars Hmm... DAS kannte ich noch nicht. Ich wußte, das IAR sowas kann, aber ich wußte nicht, daß das auch der gcc kann. > Keine Programmiersprache
-
Thread
Mit dem ATMEL STUDIO 7 klarkommen Gesperrt
sehenden Paste & Copy Code, fehlerfrei zu compilieren ? *volatile* hilft auch nicht. Es ist ein *GCC C Executable Project*. Bernd_Stein
Bernd S. schrieb im Beitrag #7400808: > Was läuft jetzt wieder falsch ? Hast du die Optimierung des Compilers deaktiviert?
-
Thread
Minimum Struct größe erzwingen
GCC bietet dazu mehrere Möglichkeiten an. https://gcc.gnu.org/onlinedocs/gcc/Structure-Packing-Pragmas.html
dann sollte fast immer die geschickteste Reihenfolge erreicht werden. Ggf. macht das aber je nach Optimierung auch der Compiler, ganz sicher bin ich mir da im Moment aber nicht. Gruß, Stefan
-
Thread
for(;;) bedeutung?
Geschwindigkeitsvorteil in manchen Fällen keinen Unterschied zum Bibliotheks-printf merkt. 2. Der GCC macht zwar kleinere Optimierungen, indem er, wo dies möglich ist, den printf durch einen putchar- oder puts-Aufruf ersetzt, eine Optimierung in Anbhängigkeit von den Argumenttypen ist aber (
Compiler muß das selber handhaben - SELBER! verstehst du das? Du weißt aber, dass er das im Falle von GCC auch tut? Hier eine Liste der im Compiler eingebauten Standardfunktionen: https://gcc.gnu.org/onlinedocs/gcc-6.2.0/gcc/Other-Builtins.html#Other-Builtins Soviel dazu, sich erstmal zu informieren.
-
Thread
Strings ohne Null am Ende? Gesperrt
MS-Compiler alles fix und fertig in nur die eine Variable bzw. Konstante. Kann aber schon sein, dass ein GCC oder sonstiger Compiler das nicht so elegant hinbekommt. Ohne eingeschaltete Optimierung sieht's mit Visual auch leicht verwegen aus (fummelt dann die Strings in den Strukturen im Startup-Code zusammen
die ich beide direkt > davor im Code wörtlich stehen habe? Guckst du zB in den Quellen von avr-gcc http://gcc.gnu.org/viewcvs/trunk/gcc/config/avr/avr.c?content-type=text%2Fplain&view=co nach dem Makro STR_PREFIX_P sowie der inline-Funktion avr_replace_prefix und wie sie verwendet werden.
-
Thread
Size Benchmark mit GCC, Imagecraft und IAR
: Ich werde bei der Auswahl des Controllers eine Nummer grösser einsteigen und GCC nehmen. MfG
dem GCC 3.4.x und dem IAR, insofern wäre es interessant, den gleichen Code auch noch einmal auf einem GCC 4.1.0 zu testen. Mehmet, falls du den Code freigeben kannst, biete ich mich für einen Test an.
-
Thread
AVR mit Display - verschiedene Menu-Sprachen
Jens schrieb im Beitrag #1801047: > ja zweidimensionales Arry ist die Optimierung der Variante b, allerdings > steht dann doch immer alles im Ram oder sehe ich das flasch? Benutzt du den IAR Compiler (wegen dem const. Beim IAR legt der das dann IMHO ins Flash. Dem gcc ist
stellt Makros bereit, um Daten aus dem Flash zu lesen. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Array_aus_Strings_im_Flash-Speicher
-
Thread
Suche schnellen µC
einen schnellen µC. Mein letzter Hexa lief mit zwei ATmega644 (20MHz) und war trotz heftiger optimierung zu 60-70% ausgelastet. Dieses mal möchte ich noch deutlich anspruchsvollere Bewegungen berwerkstelligen und weniger auf Optimierung achten um Zeit zu Sparen und den Code leserlicher zu machen.
ausschlaggebende Kriterium ist also wohl der Compiler und > Entwicklungsumgebung. > > > > Eclipse, CDT, GCC, OpenOCD ist als Ersatz von MPLAB oder als Paket für > STM32 gemeint? Eclipse=IDE CDT=C Development für Eclipse GCC ist der Compiler, der Microchip C32 ist auch ein GCC OpenOCD ist der Treiber
-
Thread
probleme mit der Syntax __irq in Ecllipse
){ // A lot of Work VICVectAddr = 0; // Acknowledge Interrupt } [/c] Eher für den GCC geeignet ist (frei nach [[ARM-elf-GCC-Tutorial]]) /Ernst
Vorsicht bei Verwendung dieses Attributs bei arm-gcc (wie auch in Yagarto enthalten). Zumindest ältere Versionen des kommen dabei in straucheln, wenn bei eingeschalteter Optimierung nicht alles im "ARM-mode" kompiliert wird (und mglw. anderen Kombinationen
-
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 Objekte als Struct effizient kapseln
gemessen, wie viel "Overhead" entsteht? Und im Vergleich zu was? Ein paar Performance-Tipps: - Optimierung des Compilers einschalten (GCC: -Os) - Link Time Optimization einschalten (GCC: -flto bei Compiler und Linker) - Den am häufigsten benutzten Member in der Struktur an die erste Position setzen
helfen, indem man ihm schon zur Compilezeit möglichst viele Informationen liefert, die er zur Optimierung verwenden kann. In deinem Beispiel gibt es mehrere Strukturen, die Konfigurationsdaten wie bspw. Ports, Bitnummern u.ä. enthalten. Diese Daten sind meist unveränderlich, aber der Compiler weiß
-
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
Ein Programm mit unterschiedlichen Auswirkungen
meinte ich die Optimierungsstufe. Die ist auf -0S eingestellt. IDE verwende ich AVR Studio 4 und den GCC Compiler. Lg
Vorteile würde mir eine Optimierung bringen? Daß der Code kleiner und schneller ist als ohne.
-
Thread
Schieben vs. Tabelle
8) n = 8; // nötig?! Aber da ich NICHT "volatile" verwendet habe ist meine Frage ob C Compiler (GCC) in hoher Optimierungsstufe mir automatisch die Limitierung der Schiebevorgänge auf 8 abnehmen?
Beitrag #7070793: > Aber da ich NICHT "volatile" verwendet habe ist meine Frage ob C > Compiler (GCC) in hoher Optimierungsstufe mir automatisch die > Limitierung der Schiebevorgänge auf 8 abnehmen? Hoffentlich nicht, denn das wäre ja für alle n<8 (was der Normalfall sein sollte) keine Optimierung
-
Thread
gcc: Fehlermeldung: findet Funktionen nicht --> ?
die meine_lib.h zu kopieren, allerdings ohne Erfolg. Was kann noch falsch sein? Oder muss ich dem GCC-dings explizit die meine_lib.h auch noch angeben? Macht für mich keinen Sinn, da dann die #include Anweisung überflüssig ist. Wo könnte es noch Fallstricke geben?
auch zusammengelinkt werden. Am einfachsten geht das, wenn du beim gcc AUfruf einfach beides angibst. gcc test.c meine_lib.c > muss ich dem GCC-dings explizit die meine_lib.h auch noch angeben? Macht > für mich keinen Sinn, da dann die #include Anweisung überflüssig
-
Thread
MMC karte adressieren 32bit will nicht
ich hatte mal ein ähnliches problem, da war der compiler schuld. versuch mal ne andere optimierung (-O0 / -O2 / -Os). hatte schon code/avr-gcc versionen, da ging 32bit code mit -O2 nicht und sogar auch schon, dass es mit -O0 nicht ging aber mit -O2. vielleicht startet auch der watchdog nach
Schreibe in Deinen Code rein: [c] typedef unsigned long int uint32_t; [/c] Dann sollte Dir der gcc sagen, woher er die andere Definition hat (mit der es dann kollidiert).
-
Thread
IRMP - Infrared Multi Protocol Decoder
Das mit F_CPU habe ich mir schon gedacht. Benutze GCC und habe in den Optionen Atmega8+12MHz eingestellt. Sollte dann also passen, danke!
Grundlagen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ausg.C3.A4nge
-
Thread
Probleme win WinAVR 20081205
W-Leitung 0 DDRD = 0xFF; } [/c] Bitte gebt Feedback ob das jetzt passt ... Bzgl. der Optimierung habe ich jetzt "-Os -fno-inline-small-functions" verwendet. [pre] > "make.exe" all avr-gcc -g -Wextra -Os -fno-inline-small-functions -mmcu=atmega8 -c -o LCD1.o LCD1.c avr-gcc -g -Wextra
steht ist > -O2 daher meine Standardwahl. Das dürfte ein bekanntes Problem sein, siehe http://gcc.gnu.org/ml/gcc/2008-12/msg00329.html http://gcc.gnu.org/ml/gcc-help/2008-12/msg00232.html sowie die Antworten darauf.
-
Thread
Warum brauchen Android Apps so viel Speicher
um code size. Und da könnte man eine Menge rausholen, wenn der java Compiler so gut wäre wie der GCC. Sieht man ja schon, wieviel proguard rausholen kann. Von der Optimierung her ist das aber ein Witz ggü. GCC. Übrigens kann dies auch Obfuscation Versuche zu nichte machen; selber schon erlebt
natürlich nicht so optimal wie wenn man das zur Laufzeit macht, aber dafür kostet die Analyse und Optimierung auch keine Laufzeit.
-
Thread
Umstieg von PIC auf AVR - Fragen vor dem Kauf
Als compiler emfehle ich den kostenlosen gcc-avr bzw. WinAVR. Codeoptimierung ist mit drin.
leider net... Debugger bzw. Simulator hast du aber im AVR-Studio auch (der gdb-Debugger gehört zum gcc-Compiler). > Ist der kostenlose C-Compiler bei AVR effizient? Bei Microchip bekommt > man die Code-Optimierung im ansonsten kostenlosen Compiler nur gegen > Bezahlung. Der dürfte relativ effizient
-
Thread
universelle Tasterabfrage von Peter Dannegger
Schalte mal die Optimierung aus. Gruß Fabian
Doch, das Problem kenne ich vom AVR-Studio mit GCC auch. Wenn die Optimierung zu aggressiv ist, dann kann der Debugger (via JTAG-ICE2) die Sprünge nicht mehr korrekt anzeigen. Bisher hatte ich solche Probleme mit Os oder O3. Mit O2 gehts im Allgemeinen
-
Thread
GIGATRON Emulator im STM32
Taktfrequenz! Der Code ist zwar sehr übersichtlich, aber nicht sonderlich effizient. Mit etwas Optimierung habe ich die C-Variante auf ca. 96 Clocks pro Gigatron-Instruction gebracht, das wären dann min. 127 Clocks, was ungefähr 790 MHz Taktfrequenz bedeutet. Mit einem RasPi sollte das zu schaffen sein
- schlimmstenfalls macht er das als if/elseif/else-Kette. Eine jump table kann man jedenfalls beim GCC aber auch mit computed goto erzwingen, einer GCC-Erweiterung.
-
Thread
Unsigned Char vergleich beim AVR GCC
dann Bit 0 testen zu können, statt gleich auf's gewünschte Bit loszugehen. Nobody is perfect, auch gcc/avr nicht.
warum nicht? Klar, es müsste ihm ,,nur'' jemand beibiegen. Da alle Architekturen, für die am GCC ,hauptberuflich' gebaut wird, dieses Problem aber nicht haben (deren Register sind eh' alle 32 bits breit), muss sich da wohl jemand aus der Microcontroller-Ecke drum kümmern, dass derartige Optimierungen
-
Thread
Atmel AVR Frequenzgenerator
vorne an. Messe mit der 1ms Verion nochmal die High- und Low-Zeiten. Und berichte mit welcher Optimierungs-Option du compiliert hast. Die Delay-Funktionalität arbeitet nur korrekt wenn die Optimierung auf -Os eingestellt ist. Abgesehen von der While Schleife (braucht wenige usec, wenn nicht weniger
> > Messe mit der 1ms Verion nochmal die High- und Low-Zeiten. > Und berichte mit welcher Optimierungs-Option du compiliert hast. > > Die Delay-Funktionalität arbeitet nur korrekt wenn die Optimierung > auf -Os eingestellt ist. > > Abgesehen von der While Schleife (braucht wenige usec, wenn
-
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
atmega32 Interrupt Problem
ich nicht so. Auf dem Board ist ein ATMega32. Kompiliert habe ich mit (Resultat vom makefile): avr-gcc -c -Wall -Os -mmcu=atmega32 -o main.lo avr-gcc -o main main.lo avr-objcopy -j .text -j .data -O ihex main main.hex avrdude -cpony-stk200 -patmega32 -Uflash:w:main.hex:i
Im avr-gcc-Aufruf für das Linken fehlt die -mmcu= Option.
-
Thread
Bestimmte Code-Teile nicht optimieren
dastien schrieb im Beitrag #1922295: > gibt es eine möglichkeit bestimmte Teile eines Codes aus der Optimierung > zu nehmen ? Anweisungen an den Compiler werden mit der pragma-Direktive gemacht. Damit solltest du auch Optimierungen ausschalten können. Google mal nach pragma...
Mein Vorschlag: Compile die C files zu object files (mit den spezifischen Compiler-Optimierungen). Und dann das ganze zu einem binary zusammenlinken. Cheers
-
Thread
Wahrheit von Zeigerarithmetik
man dann tatsächlich den Aufruf einer Funktion einsparen kann. Das Potential für eine derartige 'Optimierung' würde ich aber mit 1% (eher sogar weniger) einschätzen. Aber es mag solche Fälle tatsächlich geben.
nur gcc und MS-VC++ unter die Finger. > >>> Was heißt "weg zu lassen"? Wozu wurde er überhaupt dazugefügt? Er ist >>> an dieser Stelle völlig unnötig. >> >> Lebensnotwendig ist er sicher nicht. >>