-
Thread
Inline Assambler compiler error
funktioniert auch nicht und stammt von http://www.roboternetz.de/wissen/index.php/Inline-Assembler_in_avr-gcc mfg.
als der Code, den Hochsprachen-Compiler erzeugen. Für BASCOM ist das uneingeschränkt der Fall. Für GCC muss man manchmal staunen, daß der Code besser ist als handgeschrieben. Vor allem dann, wenn er Optimierungen sieht, die einem verborgen blieben, oder wenn Cache und Pipelines im Spiel sind oder der
-
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
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
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
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
Wie erzeuge ich ein Listing mit AVR-GCC?
Versuch mal das hier. Das ist über DJGPP (gcc für DOS), sollte aber eigentlich mit allen gcc Versionen funktionieren (wenn es denn funktioniert, probiert hab ichs nicht:): http://www.delorie.com/djgpp/v2faq/faq8_20.html
sein dass die Assemblerzeilen und der C Code durcheinandergeworfen werden, das passiert scheinbar bei gcc, wenn man Debuginformationen und Optimierungen eingeschaltet hat (viele Compiler lassen es auch gar nicht erst zu, Code zu optimieren und mit Debuginfos zu versehen). Falls du -O, -O3 oder ähnlich
-
Thread
Optimierung bei if-Abfrage mit kurzem Rumpf
Moin moin, Ich möchte mit folgendem C-Code-Schnipsel für ATMega8 ein Signal generieren: [c] ISR(TIMER0_OVF_vect) { uint16_t temp = outputValue; // global deklariert for(uint8_t i=16; i>0 i--) { if(temp & (1<<15)) { SDA_PORT |= (1<<SDA_PIN); } else { SDA_PORT ~= (1<<SDA_PIN); } // toggle clock SCL_PORT &= ~(1<<SCL_PIN); SCL_PORT |= (1<<SCL_PIN); // next bit temp <<= 1; } } [/c] Wird soweit mit -Os ganz nett übersetzt in sbi, cbi etc. Nur die if-else-Abfrage mit den extrem kurzen Schleifenrümpfen (1 Assembler-Befehl
-
Thread
[ASM] Unbenutzte Symbole entfernen
einfach mal an, was für Unterschiede der Compiler mit und ohne -ffunction-sections erzeugt (mittels "gcc -S" Assembler-Output erzeugen).
auch auf Assembler-Programme anwendbar. M.W. gibt bzw. gab es optimierende Assembler, die diese Optimierung implementiert haben. Der GNU-Assembler gehört aber nicht dazu.
-
Thread
STM32F4-Discovery - welche toolchain?
nicht an meinen selbst gesetzten Breakpoints >stehen :( >vielleicht hat jemand eine idee? Optimierung abschalten?
holger schrieb im Beitrag #2745098: > Optimierung abschalten? hab ich und -ggdb flag ist auch gesetzt
-
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
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
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
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
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
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
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
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
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
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
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
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
Basic-Interpreter auf einem AVR
Print und mit -O3 und nicht mit -Os. Wenn es um speed gehen soll dann sicherlich mit allen optimierungen und nicht der size. lg roman
@Roman Also die Optimierung ist doch mal ne Erwähnung Wert :-)) Ich werd das mal übernehmen und in mein unverständliches Kauderwelsch an Präprozessor-Anweisungen mit integrieren :)) Was mir zum Thema Speed-Optimierung
-
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
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
Warum übersetzt GCC-Compiler so unterschiedlich?
freq_zaehler ist unsigned long, phase_index ist unsigned int, Atmel AVR 8-bit GNU Toolchain 3.6.0.1734 (avr-gcc-5.4.0.exe), AVR Studio 4.19 Vielen Dank im voraus für eine Erklärung.
schrieb im Beitrag #5375814: > 0x00008000 Das ist ein long (32bit) (1<<15) ist ein int. Optimierungen sind eingeschaltet?
-
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
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
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
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
Zähl-Algorithmus
unsicheren Kopierfunktion die sich auf die 0-Terminierung verlässt. Dann noch Pointer Arithmetik. Die Optimierungen mit der 0-Kette und dem angepassten br bringen wenig, machen den Code dafür größer und kosten Eleganz. Aber trotzdem Lob (ernst gemeint). An den Details kann man ja noch feilen.
einem i5-6267U mit 2,90 > GHz. Auch interessant, hier mal mit einem 2,4Ghz ARM (RK3588). [c] gcc time ./test 8 2 25 75 o 563853888 Kombinationen gefunden real 0m5,894s user 0m5,873s sys 0m0,020s gcc -O1 time ./test 8 2 25 75 o 563853888 Kombinationen gefunden real 0m3,217s
-
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
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
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
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
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
_delay_ms(1) ungenau!
braucht. Damit kannst du ausrechnen wie lange soetwas dauert- wegen dem delay: Hast du die Optimierung eingeschaltet?
ich zuhause bin werd ich das ganze testen mit einer variable > statt einem literal und werd mal optimierung suchen! Ganz schlechte Idee.
-
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
_delay_us macht eine ms
Kein Plann schrieb im Beitrag #2971935: > Komisch an der Sache ist, schalte ich die Optimierung ein, funktioniert > das Display nicht und der Pin bleibt auf Low. Und ohne Optimierung bekanntermassen nicht das Delay. Was folgt daraus? Du hast kein Problem mit dem Delay, sondern mit dem
darauf? ;-) Ne, es werden nur 2 Stück ausgegeben. Beide weisen mich darauf hin das Delay nur mit Optimierung funktioniert.
-
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
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
Arduino: Ist boolean intern als Bit oder byte (char) organisiert?
Der avr-gcc Compiler, den Arduino verwendet, belegt ein ganzes Byte für boolean Werte.
. Schuld ist also nicht der gcc, sondern das vieler Hinsicht unsägliche Grundkonzept von C. Auf der anderen Seite bemüht sich der gcc allerdings durchaus, mit Bitoperationen zu arbeiten, wenn das Zielsystem solche anbietet. Der
-
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
uint8_t cast to int8_t
das Problem doch eher vor dem Computer zu sitzen. Es gibt keine fehlerfreie Software, aber das ein gcc einen einfachen signed-Vergleich versemmelt, ist doch eher unwahrscheinlich. Da du aber keine aussagekräftige Sourcen zeigst, ist die ganze Diskussion müßig. Zeig ein compilierbares Beispiel mit
und den Wert als char plus uint8_t. Da hätte ich jetzt von IAR mehr erwartet. (Selbst VSCode mit GCC zeigt die Datentypen int8_t, uint8_t korrekt an....)
-
Thread
Einführung in ASM auf STM32F4
> GCC Inline Assembler Das ist ja nun die absolute Hilfskruecke. Der GNU-Assembler heisst *gas*.
Du musst in der Assemblerprogrammierung schon ziemlich gut sein, um den GCC zu schlagen. Das heißt nicht, dass der vom GCC erzeugte Code nicht weiter optimierbar ist, aber wenn du frisch mit Assembler beginnst, wirst du wirst einige Zeit dafür investieren müssen. Evtl. gelingt
-
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
AVR-Studio 6 kompiliert fehlerhaft
Bei den Delay Funktionen muss man aufpassen, dass die Optimierung eingeschaltet ist - sonst gibt das viel zu lange Wartezeiten. Mit Optimierung kann es passieren das einige variablen ganz wegoptimiert werden und mit den Debug Funktionen schwer zu fassen sind
beim Debuggen immer Optimierungen ausschalten! Und wenn ein Breakpoint nicht greift, dann hat GCC ganz einfach die Zeile wegoptimiert. Wenn Du in ein Projekt reinschreibst: unsigned char counter; counter = 1; counter
-
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
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. >>
-
Thread
AVR GCC Tutorial
bereits installiert ist. Ach ja, um auf Deine Ausgangsfrage zurückzukommen: WINAVR enthält den AVR-GCC-C-Compiler, auf den sich auch das [[AVR-GCC-Tutorial]] bezieht...
Ich habe jetzt nochmal nachgesehen ich habe kein GCC drauf. Da hat sich also niemand an meinem PC vergriffen. Aber ich kann trotzdem GCC auswählen. jedoch seht beim starten das: gcc plug-in: No WinAVR installation found. The AVR GCC plug-in can still
-
Thread
cycles bei Rechnung mit float-Zahlen
Simulator im AVR Studio verwende, kann ich ja den cycle counter verwenden. Wenn ich allerdings die Optimierung einschalte, kann ich nicht mehr durch das Programm laufen und die benötigten cycles ablesen. Jetzt meine Frage: Wie wirkt sich die Optimierung in etwa aus? Das hängt sicherlich stark von dem
offenbar (mindestens) zwei Bereiche sinnvoll, falls es in Fixpunkt gemacht werden soll. Zu den Optimierungen: debig-informationen werden mit -g... auch zusammen mit -O... erzeugt (zumindest macht GCC das so). Speziell wirde -O1 konzipiert, um bei optimiertem Code halbwegs vernünftig debuggen zu können