-
Thread
Frage zu C und möglichen Schreibweisen
Semikolon gehört natürlich nicht dahin. Aber zwei Meinungen? Es geht natürlich um einen Atmega und GCC Comiler uint16_t CRC_VAL; uint16_t std_value = 0xFFFF ;
Lesezugriff auch in >einer Abfrage ausgeführt wird. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung >Das mit der Schreibweise werd ich mir merken. [[Strukturierte Programmierung auf Mikrocontrollern]]
-
Thread
Studio 6.0 einzelschritt debuger
Stefan U. schrieb im Beitrag #4716970: > Deaktiviere Optimierungen mit -O0 Ok, aber unter debug--Options und settings kann ich es nicht finden. wo ist denn das dann drinnen
nächsten namen und wert in zeile 2 anzeigen usw... wie oben schon gsagt wurde. Wird das an der Optimierungs Einstellung liegen die sollte ich auf low setzen. Aber ich habe immer noch nicht raus gefunden wie ich dort hin komme. könnte mir bitte jemand weiter helfen? [c]/* * GccApplication21.c
-
Thread
Funktion wird wegoptimiert im AVR Studio mit gcc
Hallo libe Leute, Bei der Programmierung eine Warteschleife ist mir in meinem richtigen Projekt aufgefallen dass diese auf irgendeine Art und Weise gar nicht erkannt wird bzw aufgerufen wird. Nach einigen Nachforschungen bin ich dann auf verschiede Threads gestoßen die besagen dass bei eingeschalteter Optimierung diese Funktion wegen irgeneines Grundes umgangen wird. Mit ausgeschalteter Optimierung funktioniert es SUPER. Kann mir jemand sagen wo der Fehler liegt? Der Quellcode liegt im Anhang und ist aus nem Buch.Hier ein Auszug aus dem lss-File. ###########################################
-
Thread
Info zum verwendeten Compiler im HEX-File?
Du kannst beim GCC vordefinierte Macros als Konstante im Flash ablegen. [c] #define GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) [/c]
www.mikrocontroller.net/topic/429895#5054356 Das Problem tritt nur auf, wenn die OCaml-Runtime mit dem gcc und ganz bestimmten optimierungs Optionen gebaut wurde. https://caml.inria.fr/mantis/view.php?id=7452#c17108
-
Thread
Makefile Grundlagen - Frage
[c]prog: main.o foo.o bar.o gcc -o prog main.o foo.o bar.o main.o: main.c gcc -c main.c foo.o: foo.c gcc -c foo.c bar.o: bar.c gcc -c bar.c[/c] Bei diesem Beispiel verstehe ich nicht ganz wozu ich die erste
einfach ein Shell-Skript verwenden. Erkan schrieb im Beitrag #3089990: > Kann man außerdem das: > gcc -o programm main.c foo.c bar.c mit > gcc -o programm main.o foo.o bar.o gleichsetzen ?? Allgemein ja, denn gcc enthält selber ein paar Regeln, um aus Dateinamen die passenden Aktionen zu ermitteln
-
Thread
Effizienz von Bascom !?
ELAB Pascal (der leider sehr viel Geld kosten). Am Ende habe Ich mich eindeutig dafür entschieden GCC zu lernen. Hier gibt es genügend Freaks die einem helfen. Man braucht meist gar keine Fragen stellen - Ist alles schon mal gefragt worden (siehe Forum AVR-GCC). GCC kriegst du zudem kostenlos (siehe
MP3-Player mit Festplatte, LCD usw. in einem AT90S8515, programmiert mit AVR-GCC. Immer noch Zweifel?
-
Thread
WinCC Outputgrößen bei Optimierung
sich die Outputgrößen irgendwie nicht so verhalten wie ich es erwartet hätte, nämlich so: - Ohne Optimierung: Output: 7,05kB - mit -O/-O1 : 7,15kB - mit -O2 : 7,64kB - mit -O3: 7,75kB - mit -Os: 7,63kB Was ich nicht verstehe, ist, dass -Os so einen großen Output liefert, gerade im Vergleich zum
Versuch mal zusätzlich: > > -fno-inline-small-functions hmmm, ich dachte das wäre längst in gcc? Sind nur ein paar Zeilen das. FYI: [pre] Index: avr-protos.h =================================================================== --- avr-protos.h (Revision 160067) +++ avr-protos.h
-
Thread
Probleme mit inline bei neuem gcc
Hab grad den relativ neuen avr-gcc 7.1.0 auf einem Arch-System installiert. Wollte ein gut abgehangenes ATmega-Projekt kompilieren. Das Projekt hab ich damals zu gcc 4.X-Zeiten gestartet, aber zwischenzeitlich auch mit gcc 5.X und
Und die Funktion in den Header zu packen ist Grundvorrausetzug um den Compiler möglichst gute Optimierung zu ermöglichen. (von LTO mal abgesehen). Deswegen hab ich das so umgesetzt. Ich hab damals glaub ich auch mit anderen Qualifiern probiert. Ergebnis waren Linkerfehler. Nämlich dann wenn gcc
-
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
Wie stelle ich die Optimierung ein, dass...
dieses foo=4 wegoptimiert wird ( oder erwarte ich da zuviel ??? ) #include <avr/io.h> uint8_t foo; int main(void) { /* Setzt das Richtungsregister des Ports A auf 0xff (alle Pins als Ausgang): */ DDRB = 0xff; foo = 4; /* Setzt PortA auf 0x03, Bit 0 und 1 "high", restliche "low": */ PORTB = 0x03; }
-
Thread
extern void f(){};
Norbert schrieb im Beitrag #3962889: > // gcc -Wall -Wextra -o x x.c Und jetzt probiere das selbe mal mit -pedantic.
schrieb im Beitrag #3990040: > Der Linker zieht globale Variablen zusammen Habs oft genug beim gcc gehabt, dass er sich eine aussucht und nur einen Teil dorthin verlinkt. Böser Fehler. Manchmal finde ich, dass der gcc zu tolerant ist und selbst meint, was richtig sein könnte. So einige Optionen
-
Thread
Auf Arduino erstelltes Programm in C und Assembler anschauen
Entwicklungsumgebung von Microchip kennen gelernt. Dort ist zumindest bei Abschalten der Compiler-Optimierung hinter jedem einzelnen C-Befehl aufgeführt, wie er in Assembler übersetzt wurde. Mit AVR C und Assembler habe ich noch keine Erfahrung.
könnte eventuell auch in der "platform.txt" /pfad/zur/Arduino/IDE/hardware/platform.txt die GCC-Optionen für die Erzeugung der Assembler-List-Files anhängen: https://www.systutorials.com/240/generate-a-mixed-source-and-assembly-listing-using-gcc/
-
Thread
C Compiler für PIC
manche schwöre aber auch manche verhassen ;-) Aber ich kann dir diesen Compiler nur empfehlen. GCC gäbe es auch noch für PICs. hab aber damit noch keine Erfahrungen gemacht.
Hi der GCC kann keinen Code für den PIC erzeugen. Der einzige mir bekannte kostenlose Compiler ist der SDCC für PIC14. Matthias
-
Thread
avr-gcc: code optimieren?
Hi, ich wollt mal fragen ob schon mal jemand hier avr-gcc code optimiert hat. Dis Problem ist weniger, die Optimierungen zu machen, sondern ich hab überhaupt keinen Plan, wie die zurück in avr-gcc kommen. Das System von Mailinglisten ist mir auch net klar
# # Irgendwie klappt das net. Ich bekomme # [pre] /local/gcc-4.3.2-obj-avr/./gcc/as -mmcu=avr3 -o _mulsi3.o libgcc.s ../../../../gcc.gnu.org/gcc_4_3_2_release/libgcc/../gcc/config/avr/libgcc.S: Assembler messages: ../../../../gcc.gnu.org/gcc_4_3_2_release/libgcc
-
Thread
Vergleich der µCs nach IO-Performance
m. H. wrote: > Bleibt noch die Frage, gibt es einen freien C-Compiler für die > Steinchen? GCC. Von Microchip. Allerdings haben die es geschafft, diesen wider dem Geist der FSF so zu kastrieren, dass man für bessere Optimierung zahlen muss, indem dann ein separates proprietäres Programm eingeschleift
Andreas Kaiser wrote: > GCC. Von Microchip. Allerdings haben die es geschafft, diesen wider dem > Geist der FSF so zu kastrieren, dass man für bessere Optimierung zahlen > muss, indem dann ein separates proprietäres Programm
-
Thread
C++, virtual, inline, Fehler wenn ich abstrakte Basis-Klasse entferne
Compiler so alt ist, könnte das daran liegen. Da hat sich in den letzten Jahren schon einiges an den Optimierungen getan. Oliver
so alt ist, könnte das daran liegen. Da hat sich in > den letzten Jahren schon einiges an den Optimierungen getan. > > Oliver ich darf nur C++03, mein Testkompiler ist aber x64 mit aktuellem VS2019
-
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
define_ms() und F_CPU
Compiler-Optimierung eingeschaltet?
16mhz extern die Deklaration auch > geändert. Vor oder nach dem '#include <avr/delay.h>'? Optimierung 'Os' eingestellt?
-
Thread
Optimierung zeilenweise abschalten (AVR)
/Parameter senden LCD_DATA = SS_P3; //Parameter senden [/c] Gibt es eine Möglichkeit die Optimierung für diese Zeilen abzuschalten. Bei meinem alten Compiler CodeVision gabe es den Preprozessorbefehl #optimize- & #optimize+. Gibt es so etwas ähnliches auch für den GCC? Danke & Gruß Steffen
-
Thread
Floatingpoint Berechnung DSP vs. ARM CM3
Laufzeitfunktionen ab. Die kann man in Assembler effizient handoptimieren - oder beispielsweise beim GCC auch als generischen C Code erhalten, wenn sich niemand dafür fand.
der richtigen Compiler-Option bzw. Library zu fassen kriegt. Das beispielsweise kann einem beim avr-gcc blühen.
-
Thread
AVR programmierung unter Linux basiernede Systeme
Als Erstes brauchst du die 4 folgenden Pakete: gcc-avr avr-binutils avr-libc avrdude Am einfachsten installierst du sie aus deiner Linux-Distribution mit dem entsprechenden Installer (z.B. "apt-get install gcc-avr" in Debian) Damit kannst du
das neue Flash-Interface via /named address spaces/ (“NAS”). Aber es gibt auch endlos viele Optimierungen, die da reingekommen sind. Zuvor war es leider so, dass mit jeder neuen GCC-Version die Codegenerierung für den AVR (insbesondere die Code-Dichte) eher schlechter als besser wurde; 4.7 ist
-
Thread
LCD -> Probleme mit Optimierungsgrad
stelle. Dann kommen nur Hieroglyphen auf dem Display an. Ich verwende die LCD Routinen aus dem AVR-GCC Tutorial mit einem ATMega16-16PU und einem 16 MHz Quarz. Was mir aufgefallen ist: Der compiler spuckt bei der Optimierungs-Einstellung "-O0" die Warnung: [c]c:/winavr-20070525/bin/../avr/include
begrenzt, also bei 16 MHz auf maximal ca. 16,4 ms. Bei allem was länger ist kommt Murks raus. Ohne Optimierung werden die _delay_XX-Funktionen aufgebläht und wesentlich länger als gewünscht, so dass es durchaus nachvollziehbar ist, dass es ohne Optimierung funktioniert (schließlich sind die Pausen zwischen
-
Thread
AVR-GCC Fixed Point und Strings
> "long long sat fract". Unterstützt der AVR-GCC diesen Typen überhaupt?
nicht finden kann, d.h. die Funktion ist auch nicht in einer lib des gcc, die in jedem Falle mitgelinkt wird. Kann man dafür ausgehen, dass beim avr-gcc dafür einfach der Support fehlt?
-
Thread
C-Code mit AVR-Studio-Simulator debuggen möglich?
Stel die Optimierung mal auf '1' oder '2', bei 's' kommt der Debugger gerne mal aus dem Tritt. Und dass dein Programm nicht besonders sinnvoll ist, ist dir hoffentlich auch schon aufgefallen ;) hth. Jörg
} hab da extra noch das r++; in die schleife geschrieben geht aber immer noch nicht. die optimierung hatte ich auch schon auf 1 und 2 umgeschalten. geht auch nicht. was kann das dann noch sein? bin froh um jede hilfe? gruss raphael
-
Thread
AVR GCC inline Funktionen
. Dann kann der gcc auch über diese Files optimieren. Aber das ist die Ausnahme und nicht die Regel!
kann, während er bar.c übersetzt! Mit folgender Sequenz ist das _nicht_ der Fall. Auch GCC hat noch keine Kristallkugel. [pre] gcc foo.c -o foo.o -W -Wall -fno-keep-inline-functions -Winline -Os gcc bar.c -o bar.o -W -Wall -fno-keep-inline-functions -Winline -Os gcc foo.o bar.o -o foobar.elf
-
Thread
Anfängerfrage AVR GCC
Johann L. schrieb im Beitrag #6488746: > GCC zum Beispiel meckert main ohne finales return ebenfalls nicht an es gibt ja nicht nur GCC, mein Text war eben beispielhaft für alles was mir schon begegnet ist! Es gibt auch noch Compileroptionen
function main shall not be used (3.2) within a program. [...] [/pre] Und was C angeht, hat avr-gcc eine Optimierung, die Aufrufe von main im Endeffekt UB machen, es sei denn man verwendet -mno-main-is-OS_task, siehe http://gcc.gnu.org/gcc-8/changes.html#avr Logischerweise darf main dann auch
-
Thread
Avr Studio - Hex Datei plötzlich zu groß
Problem, dass meine compilierte hex datei auf einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr auf den Controller. Die eep Datei ist auch 6 mal so groß... Habe schon mit der Optimierungs-Einstellung rumgespielt
, dass meine compilierte hex datei auf > einmal fast doppelt so groß wird als wenn ich das selbe GCC Projekt auf > dem alten PC compiliere. Leider passt das Programm so jetzt nicht mehr > auf den Controller. Die eep Datei ist auch 6 mal so groß... > > Habe schon mit der Optimierungs-Einstellung
-
Thread
2.2'TFT ILI9340 und Arduino
überhaupt nicht vorschlagen. Der Thread ist eine Hilfestellung für die Inbetriebnahme und die Optimierung des Displays. Wenn Du genau hinschaust, findest Du einige Ergebnisse: 1. beschleunigtes Kurvenzeichnen für Analogsignal 2. Hinweise zur Optimierung der SPI am Arduino DUE 3. Link auf das schwer
nur mit Kanonen auf... Nein halt, anders rum... Mit Spatzen auf Kanonen geschossen. Nimm normales GCC, das können dann die Laien in ihrer ArduinoDingens kompilieren und man hat auch was fürs GCC.
-
Thread
Merkwürdige Laufzeitunterschiede bei umgestellten Gleichungen (float + int)
die Division fällt damit komplett raus. Das Gleiche bei Variante 3 "105.6 / 5.6" Welche Optimierung -O hattest du an?
der float-Behandlung nicht erforderlich ist, hilft z.B. -ffast-math oder ähnliche Optionen. Siehe GCC-Doku.
-
Thread
Übersetzungsfehler in GCC
müssen einige Summen und Differnzen gebildet werden. Leider funktioniert das beim Compilieren nicht. GCC verwirft in der Optimierung die Differenzenbildung. Ich weiß, nur leider nicht warum. Der Code in C lautet: [c]temp.real = fft[0].real; fft[0].real = (temp.real + fft[2].real)*8; fft[2].real
-
Thread
for(; ;) - Schleife
Und weil ältere Compiler mit wenig Sinn für Optimierung einzig daraus wirklich eine Schleife ohne sinnlosen Test gemacht haben.
Rolf, Du schreibst also ne Schleife in ne schlecht lesbare Rekursion um. Und was macht der AVR-GCC daraus ? Er formt es wieder in ne Schleife um ! Weg mit all den überflüssigen PUSH, POP, CALL und RET. Wow, hätte ich dem GCC nicht zugetraut. Nur das Inlinen von spi_out2 in spi_out packt
-
Thread
Warum ausgerechnet "PIC"?
@Dominik Ein Compiler ohne Optimierung? (Ich meine in dem Fall, dass man nicht alle 60 Tage reinstallieren möchte...) Beim WinAVR brauche ich die Optimierung dringend! Dabei geht es weniger um die Code-Größe als mehr die Geschwindigkeit
@MSE Tja wollte zwar gestern schon antworten aber der Server war ja down. Die Optimierung vom C18 wird natürlich nicht komplett abgeschaltet - der schaltet da nur die Optimierung auf die PIC18 Serie ab - also das mit dem "Erweiterten Befehlssatz". Viel ändert sich dadurch am Code aber
-
Thread
Warum kann der Compiler nicht erkennen, daß Variable in ISR geändert wird?
den Code ziemlich direkt wie er dastand, ohne sonderlich eindrucksvolle statement-übergreifende Optimierung. Weshalb volatile auch nicht ernsthaft benötigt wurde. Als die Compiler besser wurden, weil es genug RAM dafür gab, änderte sich das und es kam volatile.
Absichtlich, oder zu faul zum optimieren? ??? Wo landendenn globale Variablen beim C compiler? (Ohne Optimierung!) ???
-
Thread
Atollic TrueStudio Lite ohne CodeSizeLimitation
besseren Code als GCC.
Gleiche tun. Paradebeispiele sind die ST-Libs für den ST32 und den ST8. Als völlig unschlagbare Optimierung gibt es nach wie vor die Möglichkeit (auch mit GCC) die Quellen in Assembler zu erstellen ...
-
Thread
NUCLEO-L432KC Blinky Projekt mit 11kB Speicherverbrauch
Optimierung -Os Striping Symbols -s -Wl,--gc-sections und -ffunction-sections -fdata-sections -flto Bin ich auf 5704 statt 11048bytes Keil Compiler vom Kollegen liefert 4008bytes
erstmal der größte Brocken der Libraries dazu gepackt. GCC ist ein bisschen größer, aber trotzdem noch in Ordnung. Bisher war das um die 30% mehr Speicher.
-
Thread
Inline Assembler Wieso Contraints, ClobberList etc?
ist... dafür brauchst du die Listen. http://www.rn-wissen.de/index.php/Inline-Assembler_in_avr-gcc http://www.nongnu.org/avr-libc/user-manual/inline_asm.html
schließlich auch in deinem Assemblercode nicht schneller hin als der C-Compiler (sofern man ihm die Optimierung einschaltet natürlich).
-
Thread
mega 32 compilerfehler
unnötigen Schritt zuviel. Also kann man den auch wegoptimieren... Und noch lustiger wird es beim gcc-4.x mit Tail-Call-Optimierungen, besonders in rekursiven Funktionen. Da kann man dann in C fast schon so wie in LISP programmieren, und trotzdem gibt's kein Stack-Overflow. ;-)
mehreren Quellecodezeilen zuzuordnen. Das ist der wohlbekannte Pferdefuss bei eingeschalteter Code-Optimierung des Compilers. Weshalb in solchem Kontext auch immer der Tip gegeben wird, bei Nutzung des Debuggers die Code-Optimierung durch den Compiler abzuschalten. Was bei Controllern freilich bisweilen
-
Thread
Wie habt ihr C gelernt?
, Shell. µC habe ich hobbymäßig mit Assembler programmiert. Und vor ca. 3 Jahren erst habe ich das gcc-Tutorial hier überflogen und mein erstes C Projekt auf dem AVR durchgezogen. Ich würde mich all jenen anschließen, die empfehlen C auf dem PC zu lernen. Wenn man die Sprache an sich beherrscht und vielleicht auch schon die richtige^Wselbe Toolchain (gcc) verwendet, dann hilft das enorm weiter wenn man den Schritt zum µC geht. Da kommt dann eigentlich bloß noch ein Sack magische Namen wie PORTD oben drauf. Und natürlich eine andere Standardlibrary.
-
Thread
AVR Studio 4.07
; \ [ -s test.d ] || rm -f test.d -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3 20030421 (prerelease) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even
oben ist mein makefile. makefile:224: no file name for `-include' -------- begin -------- avr-gcc --version avr-gcc (GCC) 3.3 20030421 (prerelease) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even
-
Thread
AT90USB162 Endpoint Interrupts funktionieren nicht
Nur mal so: Compiler-Optimierung hast du eingeschaltet, ja?
#6879140: > Interesant, mit "optimize most (-O3)" geht es wieder. Muss eigentlich mit jeglicher Optimierung zum Laufen zu bekommen sein, nur -O0 (Optimierung ausgeschaltet) ist fragwürdig. Ich denke, du hast da noch irgendeine andere Sache drin. Marvin K. schrieb im Beitrag #6879135: > Ich habe
-
Thread
HEX Größe verzehnfacht durch if Abfrage
> es. Wenn ich die if Abfrage auskommentiere funktioniert es auch. Nur > zusammen nicht. Optimierungen sind an? Wenn du summe änderst, aber nicht nutzt, schmeißt der Optimierer die Änderung logischerweise raus. Ergo ist sqrt dein Problem.
Marian B. schrieb im Beitrag #3741610: > Optimierungen sind an? Wie schauts mit der Antwort auf die Frage aus?
-
Thread
Welcher µC ist "der Richtige"
teure Lizenzen nötig Wenn es um die PIC32 geht, gibt es bspw. auch die Möglichkeit den normalen GCC zu benutzen, auf welchem der XC32 bzw. XC32++ basiert http://wise-ware.org/wiki/index.php?n=Pic32.GccPic32 Für die Compiler von Microchip gilt: "No time or memory restrictions", "Unrestricted use—ideal
teuer einzukaufen Sind das nicht ARM Controller von ST? Wenn ja dann kann man doch Eclipse CTD und gcc verwenden oder geht das nicht? Oder verwechsel ich da was?
-
Thread
Frage zu IR-Remote+LED-Strips an AVR
offiziellen 50us Maximalpause vorhanden ist. Aus Interesse habe ich mir vor einiger Zeit mal den vom AVR-GCC erstellten Assembler Code (zu finden in der *.LSS Datei im Kopilerordner) für eine ISR angesehen... Je nach Optimierung des Compilers kann man für das Pushen / Pullen der uC Register auf den Stack
50us Maximalpause vorhanden ist. > >>Aus Interesse habe ich mir vor einiger Zeit mal den vom AVR-GCC >>erstellten Assembler Code (zu finden in der *.LSS Datei im >>Kopilerordner) für eine ISR angesehen... > > Und was hast du gesehen? Wieviele Takte wurden benötigt? > >>Je nach Optimierung des
-
Thread
AVR-GCC Win98 Fehler mit Schalter -Os
Was sagt denn avr-gcc -v ? Oder geht das auch nicht?
Moin, welcher Prozessor sitzt denn im Rechner? Eventuell wurde der GCC mit Optimierungen übersetzt die nicht verfügbar sind (INTEL <> AMD) MfG
-
Thread
C Neuling benötigt Schubs in die richtige Richtung Gesperrt
Hinweise. Gruß Torsten Nachtrag: auch wenn ich CodeBlocks verwende, so wird dort von mir der GNU GCC Compiler genutzt.
eher Java und .NET?), C++ hat sich wegen der tollen IDE durchgesetzt (welche soll das nochmal sein, gcc + vim?), etc. pp.
-
Thread
Fatale Größenoptimierung
Hab vorhin ein Problem mit der Optimierung in gcc 4.0.1 gefunden. Ich bin nicht ganz klar, ob man es als Bug in gcc oder in avr-libc werten soll. Ich habe allerdings gesehen, daß jemand es bereits als Bug bei der avr-libc gemeldet hat.
= !_BV(PB5); // _delay_ms(10); } [/C] Compiliert und die Codegröße angezeigt: $ avr-gcc -Os -mmcu=attiny2313 test.c $ avr-size text data bss dec hex filename 120 0 0 120 78 a.out Jetzt ohne den Kommentar: [C] #define F_CPU 8000000L
-
Thread
implizites modul init
://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html Damit kann sich ein Modul selbst initialisieren ohne daß dies von Hand in main geschehen muss. main sieht davon nix. Somit kann man auch mit avr-gcc
Constructors werden in GCC unterstützt, siehe obigen Link auf die GCC Dokumentation. Und: Bitte nicht constructor mit naked-Funktionen in init-Sections verwechseln! Letztere sind nicht zu anderen Architekturen portabel,
-
Thread
AVR-ASM: Simulierter call
@Charly B. Das ist aber mit Sicherheit nicht der gas aus den gcc-binutilities.
Insgesamt hat die Optimierung 220 Byte Programmspeicher gebracht.
-
Thread
Aus '\n' wird '\0'
hier 2 Beispiele: [c] #pragma GCC push_options #pragma GCC optimize ("O0") your code #pragma GCC pop_options [/c] und [c] void __attribute__((optimize("O0"))) foo(unsigned char data) { // unmodifiable compiler code
Compilieren >> konvertiert und das \n entfernt. >Genauer gesagt, ist es eine eine Built-In-Funktion des GCC. Aber das normale printf() im avr gcc schmeißt das \n doch nicht raus, oder?
-
Thread
Zu viele Symbole werden gestrippt (Code zu klein)
auch aus Win-AVR - die spielen beim Kompilieren selbst aber keine Rolle, die relevanten Tools (avr-gcc, avr-as, ...) liegen ja in bin oder avr/bin (dort als gcc, as, ...). Benutzt wird Win7. Es gibt keine Fehler beim kompilieren. Der Build log ist absolut identisch, bis auf die Ausgabe der Größen:
atmega128rfa1.ld -Wl,--section-start=.data=0x800200 -mmcu=atmega128rfa1 [/code] (aufgerufen wird avr-gcc mit o.g. LINKER_FLAGS) Warum in aller Welt verhält sich nun ein neuerer Kompiler/Linker so dermaßen anders? Mit einem selbst kompilierten AVR-GCC 4.9.1 passiert das gleiche... Hat jemand sowas