-
Thread
Warnung bei Verwendung von volatile
einfach das volatile vom Array wegnehmen. Die Fälle um die es bei volatile geht, sind mit Arrays beim gcc nicht realisierbar, sodass es kein Problem ist, Arrays nicht volatile zu machen.
Worum gehts den bei 'volatile'. Volatile sagt dem Compiler, dass er keine Optimierungen auf der Variablen machen soll. Das ist wichtig in Fällen wie: uint8_t flag ISR( ... ) { flag = 1; int main() { ... flag = 0; while( flag == 0 ) { ... } }
-
Thread
ARM, GCC, Linker-Skripts
nur dann, wenn Du damit im Betrieb das Flash beschreiben willst. Readonly-Phänomen: Wenn man beim GCC Variablen deklariert, die man aber nur lesend verwendet, dann schnallt GCC das und setzt die automatisch als read-only, auch ohne const. Das ist lästig, wenn man sie ganz bewußt nicht als const markiert
nicht nutzt (oder nicht sichtbar nutzt), die aber nicht wegoptimiert werden sollen. Da hilft beim gcc dann das __attribute "used".
-
Thread
Toochain bauen avr-gcc-x.x mit binutils-2.34 funktioniert nicht
binutils 2.32 > okay gcc 9.2 mit binutils 2.32 > okay gcc 9.2 mit binutils 2.34 > nicht okay gcc 9.2 mit binutils 2.33.1 > okay gcc 9.3 mit binutils 2.33.1 > okay Daraus schließe ich das mit den binutils 2.34 etwas nicht
CS11); // Prescaler 8 > TCCR1B = TCCR1B & ~( _BV(CS12) | _BV(CS11) | _BV(CS10) ); Die Optimierung in ein einzelnes sbi, falls das register im passenden Adressbereich liegt, macht der Compiler trotzdem. (*) ich 'abe gar kein gcc 10 ;) Oliver
-
Thread
ASM-Code und C in einem Programm
Lass das doch vom Compiler erledigen: https://gcc.gnu.org/onlinedocs/gcc/Using-Assembly-Language-with-C.html http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
können 1000 Jahre alte Steinplatten entziffern aber kaum noch digitale Medien seit 1980. Zur Optimierung gefällt mir immer wieder: https://www.youtube.com/watch?v=7FeqF1-Z1g0
-
Thread
STM32F4 Linker-Fehler region FLASH overflowed?
Leider bekomme ich jetzt beim Linken einen Fehler den ich nicht verstehe [code] /home/sean/.bin/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: bin/Release/iotogglem0 section `.text' will not fit in region `FLASH' /home/sean/.bin/gcc-arm-none-eabi/bin/../lib
Verwende mal die hier angegebenen Compiler/Linker Flags, die diverse Optimierungen einschalten und eben Exceptions und RTTI abschalten: http://www.mikrocontroller.net/articles/ARM_GCC#Compiler_.26_Linker_Flags
-
Thread
Bräuchte ein paar "Tipps"
erstmal getrost auslassen. wenn man die Grundlagen von C drauf hat, würde ich empfehlen mit dem AVR-gcc-Tutorial hier anzufangen und ein paar LEDs blinken zu lassen
schrieb im Beitrag #2465533: > Allerdings ist es lustiger ein C-Programm zu debuggen, wenn die > Optimierung einen Code erzeugt, der nichts mehr mit dem Quelltext zu tun > hat Die Optimierung darf das Endergebnis nicht verändern.
-
Thread
Winavr + Bootloader + Interrupt
Peter Fleurys Bootloader verwendet: [c] /* * since this bootloader is not linked against the avr-gcc crt1 functions, * to reduce the code size, we need to provide our own initialization */ void __jumpMain (void) __attribute__ ((naked)) __attribute__ ((section (".init9"))); void __jumpMain
__stack, %0" :: "i" (RAMEND) ); asm volatile ( "clr __zero_reg__" ); // GCC depends on register r1 set to 0 asm volatile ( "out %0, __zero_reg__" :: "I" (_SFR_IO_ADDR(SREG)) ); // set SREG to 0 asm volatile ( "rjmp main"); // jump to
-
Thread
M16C M32C Mitsubishi Microcontroller
Hmm, wie es der Zufall so will lese ich gerade auf http://gcc.gnu.org/ folgendes: July 20, 2005 Red Hat Inc has contributed a port for the Renesas R8C/M16C/M32C families. Ich hab mal einen Thread dazu im GCC-Forum eröffnet.
mit Entwicklungsumgebung, aber leider läuft diese wohl nach einer Weile aus. Ich schau mir mal den gcc Thread an. Vielen Danl Marko !
-
Thread
WINAVR und CarryFlag
könnte. Aber wenn eine Funktion nicht mindestens 10% der CPU-Zeit verbraucht, lohnt sich eine Optimierung in den seltensten Fällen.
. Siehe [[Soft-PWM]], dort lohnt sich eine Optimierung nur in der ISR. MFg Falk
-
Thread
C: Zuweisung von 2 Variablen auf einmal
nur einmal vorhanden sein wird, wenn du das in zwei Zeilen aufteilst (ausgenommen, wenn man die Optimierung ganz deaktiviert).
Gerald K. schrieb im Beitrag #6694742: > Der Aufruf war in beiden Fällen: gcc -S test.c dann füg mal noch ein -O ein
-
Thread
2x 7 Segment Anzeige - Multiplexen mit HF lässt Board ausgehen?
bei Trost ist, schmeisst dir so eine Schleife wegen groben Unfugs raus. Du bist auf einem AVR mit gcc. Da gibt es eine Funktion _delay_ms() http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 Auch wenn das so nicht bleiben wird, um zu warten ist das der Weg denn
eigentliches Problem. _delay_ms liefert nur dann einigermassen richtige Wartezeiten, wenn die Optimierung aktiviert ist. Also -Os anstelle von -OO Wenn der Compiler dann immer noch, aufgrund -ansi, ein paar Warnungen wirft, müsste man sich die einmal ansehen. Ich schätze mal, dass sich der Compiler
-
Thread
lpc23xx und GNU Compiler
Hallo, ich möchte für den lpc2388 zu entwickelnden C-Code mit dem kostenlosen GCC Compiler unter Windows kompilieren. Könnt ihr mir hierfür weiterhelfen, was ich dabei alles beachten muss ? - Gibt es unterschiedliche Implementierungen des GCC Kompilers ? Falls ja unterscheiden
aber gut leben, zumal ich praktisch nichts davon verwende. Codesourcery baut ARM spezifische Optimierung in den GCC ein. Diese Verbesserungen landen früher oder später aber auch im regulären GCC. Das jeweils neueste Relase des GCC zu verwenden ist vielleicht keine so gute Idee. Aktuell ist derzeit
-
Thread
8h Timer mit attiny85 - Genauigkeit ohne Quarz
Beitrag #5405579: > Der Compiler IST > kostenlos! Nur gibt es damit halt keine Optionen zur Code-Optimierung. Was nutzt Compiler ohne Code-Optimierung? Das ist Müll.
verfügbarem Flash und RAM. Müll sicher nicht aber es nervt/ärgert einen schon. Die haben da den GCC ja auch nur etwas(?) modifiziert. Wirklich gebraucht, habe ich die volle Optimierung nur, wenn ich einen PIC16F84 mit C vergewaltigt habe. :)
-
Thread
Beim Byte die Bits am schnellsten umsetzen.
Anwender benutzt, beschränke ich mich im wohlverstandenen Eigeninteresse auf die Auswahl und die Optimierung von Algorithmen, die mit üblichen Architekturen möglichst gut harmonieren. Alles, was darüber ist, ist vom Übel. > ist man nicht gezwungen alles in Assembler-Mnemonics zu > schreiben
Für den AVR: https://gcc.gnu.org/onlinedocs/gcc/AVR-Built-in-Functions.html __builtin_avr_insert_bits (0x01234567, bits, val) wird zu [code] bst r0,1 bld r18,7 bst r0,2 bld r18,6
-
Thread
ist C++ langsamer als C?
tatsaechlich, die einen ganz schnell zumindest Speicher kosten kann: RTTI. Das kann und sollte man bei avr-gcc mit -no-rtti abschalten.
manuell). Dadran wird sich auch nichts ändern -- die STL kann prinzipbedingt nicht jede erdenkliche Optimierung erriechen, auch wenn die für einen Programmierer ganz offensichtlich ist.
-
Thread
Bits spiegeln in Hardware oder in Software?
errechnet? [c]#define mirror(bits) __builtin_avr_insert_bits (0x01234567, bits, 0)[/c] http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/AVR-Built_002din-Functions.html#AVR-Built_002din-Functions
kann man auch verzweigen, abhängig davon, ob der Wert eine Konstante ist oder nicht. Dazu gibt's bei gcc __builtin_constant_p().
-
Thread
STM32F030 Problem mit GPIO
wenn man ohne Optimierungen kompiliert dauert das delay vermutlich minuten. Hast du so lange gewartet beim testen?
wie ich das mit OpenOCD mach. Programmierer schrieb im Beitrag #3869183: > wenn man ohne Optimierungen kompiliert dauert das delay > vermutlich > minuten. Hast du so lange gewartet beim testen? Ich hab gcc gesasgt, das er auf Größe optimieren soll ("-Os"). Ausserdem hat ich ihn ne weile neben
-
Thread
Arm Compiler performance Linux vs. Windows
komisches aufgefallen. Und zwar ganz egal welche Toolchain Variante und IDE ich verwende, der arm-gcc scheint unter Linux gefühlt mindestens 5x so schnell zu sein, wie unter Windows. Kann das sein, oder spinne ich? Beim avr-gcc und beim gcc für Desktop Anwendungen (also Linux bzw. Windows Targets
W.S. schrieb im Beitrag #5355234: > Aber zum GCC: > Wenn du mal in eine GCC-Distribution für Windows hineinschaust (z.B. > Yagarto), wirst du feststellen, daß sich da von allen ausführbaren > Dateien mehrere binärgleiche Exemplare unter unterschiedlichen
-
Thread
Frage zu while Schleife
gleichen Code. Da ist es egal, ob man while, do, oder break/continue/goto benutzt hat. Obwohl, beim GCC hätte ich da auch meine Zweifel.
Michael Waiblinger wrote: > Wobei ich auch > nicht genau weiss was gcc aus while(1) macht. Nur so ein Gedanke. Ernst gemeint? ;) -O0 (keine Optimierung): [avrasm] while(1) ; aa: ff cf rjmp .-2 ; 0xaa <main+0x1c> [/avrasm]
-
Thread
SSD1306/1309 Library zum Darstellen von Text auf OLED Displays
kompilieren, es gibt aber Warnungen : [code] -------------- Build: Debug in EmcExcelRelay (compiler: GNU GCC Compiler for AVR)--------------- Checking if target is up-to-date: make.exe -q -f makefile Running command: make.exe -f makefile -------- begin -------- avr-gcc (GCC) 4.7.2 Copyright (C) 2012
Einschaltaugenblick zu sehen, dann nur noch die Artefakte ) Ich habe auch mit der Compilerversion avr-gcc (GCC) 9.2.0 versucht. Das Ergebnis war aber gleich. Vielleicht hatte jemand ein ähnliches Problem ? Danke im Voraus. Jan [Mod: C- und code-Tags ergänzt.]
-
Thread
Alptraum jedes Programmierer: Code kompilierbar aber doch ein Denkfehler drin wer sieht´s?
Short und Verwechslung. Ich programmiere einen ATmega8 mit einem AVRISP mkII vom AVRStudio mit AVR GCC Plug-In.
gut, das hat aber nichts damit zu tun, daß ein und dasselbe Register durch die Optimierung nacheinander für mehrere Variablen genutzt werden kann. Vielmehr verhindert volatile, daß eine Variable überhaupt in einem Register gepuffert wird zwecks Beschleunigung.
-
Thread
Error 2 R_AVR_13_PCREL against symbol `__mulsf3' defined in .text section in.
avr\lib\avr51\libc.a(cmpsf2.o)||In function `__lesf2':| c:\winavr-20100110\bin\..\lib\gcc\avr\4.3.3\avr51\libgcc.a(_lt_sf.o):c:\avrdev\gcc\build-avr\avr\avr51\libgcc\..\..\..\.\gcc\fp-bit.c|1287|first defined here| ||=== Build finished: 1 errors, 1 warnings ===| [/code] Mfg Philipp
/avr/bin/../lib/gcc/avr/4.4.4/avr5/libgcc.a(_mul_sf.o) [..]/x-chains/avr/bin/../lib/gcc/avr/4.4.4/../../../../avr/lib/avr5/libc.a(fp_powsodd.o):../../../libm/fplib/fp_powsodd.S:69: relocation truncated to fit: R_AVR_13
-
Thread
avr-gcc linker Problem
Hallo, ist es normal das avr-gcc auch Funktionen mit eincompeliert die ich in meinem Code gar nicht benutze? Das ist natürlich sehr ärgerlich, weil ich mir einige Libs geschrieben hab (LCD, UART, usw) aus denen ich nur selten alle
kann der Linker unbenötigten Code wirklich nicht weglassen? Ich benutzte beim compelieren die Optimierung s aber auch mit zB 3 ist es nicht anders. Vielen Dank Gruß Philipp
-
Thread
.data-Segment größer als 8KB möglich
defaultmäßig auf die theoretisch maximal mögliche Größe (0xffa0) gesetzt. Rein interessehalber: Liegen gcc/ld nicht schon zur Compile-/Linkzeit genügend Informationen vor, um .data entsprechend der tatsächlichen Größe anzupassen? Ich bin für jeden Hinweis dankbar. Johannes
nicht das eigentlich grundlegende Problem ist und das .data-Problem nur eine Folge davon. Ohne Optimierung übersetzt, bekomme ich den angehängten Output. Mit Optimierung (-Os) lässt sich wieder alles problemlos compilieren. Überraschenderweise compiliert es in der abgespeckten Version auch problemlos
-
Thread
nop nop nop nop nop nop nop nop
}; int main () { StaticLoop<13>::run ([] { asm volatile ("nop"); }); }[/c] Benötigt leider GCC-spezifische Attribute um keine unnötigen Funktionsaufrufe zu generieren und klappt auch nur mit eingeschalteten Optimierungen. Die delay Funktion ist wohl onehin besser da sie den CPU-Takt mit einberechnet
Achso, ja. Naja, nach C war nicht explizit gefragt, und "gcc" nach "g++" im makefile ändern ist aufwandstechnisch vertretbar ;)
-
Thread
internal compiler error
Welche Version von avr-gcc/WinAVR benutzt du? Eventuell upgraden.
verbreitet, riskiert Ärger mit dem C3. Denn der ist nur fast dazu kompatibel: ihm fehlt CMOVxx. http://gcc.gnu.org/ml/gcc-patches/2004-07/msg02718.html Insofern kann ein Tip an Eric schon helfen. Damit die nächste Version wieder für i586 übersetzt wird.
-
Thread
winavr und das RAMPZ Register bei XMegas
Mechanismen dafür sorgt, daß Objekte nicht über Segmentgrenzen hinweg liegen. Das einzige, was avr-gcc für dich erledigt, ist daß das ganze IRQ-sicher ist: Im Prolog/Epilog der ISRs wird RAMPZ gesichert/restauriert falls Z verwendet wird. Ich seh auch nicht, daß sich das in absehbarer Zeit in avr-gcc
] Die Optimierung rechnet damit, dass Z bei einem Überlauf wieder auf 0x0000 steht. Soweit sogut, aber bei einem XMega führt dieser Überlauf halt zu einem Inkrement des RAMPZ Registers (alles in hardware) und damit
-
Thread
LPC1768 OpenOCD arm-none-eabi-gcc 5.3.0
irgendwie machst du es dir aber auch schwer. Lade doch mal dieses Paket: https://github.com/adamgreen/gcc4mbed Das ist, wie der Name schon sagt, die mbed lib für gcc. Die gcc toolchain wird beim Start des OS-install scripts heruntergeladen. Dann wird ein BuildShell.cmd erzeugt das man startet und darin
loszulegen. Die Lib ist quelloffen und auf github gehostet, das ist die mbed-master. Wenn man mit dem gcc arbeiten möchte gibt es die Variante gcc4mbed, die installiert eben die gcc toolchain und man hat mit Null Aufwand die Möglichkeit Projekte in der Kommandozeile mit make zu bauen. Das MiniDK2 ist dem
-
Thread
volatile Variablen
bei nur lesendem Zugriff auf das volatile verzichtet werden kann. Ich verwende hier übrigens den AVR-GCC für einen ATmega-Controller.
extern unsigned char x; void f (void) { while (1) x++; }[/c] Das übersetzt avr-gcc korrekt zu [avrasm]f: .L2: rjmp .L2[/avrasm] Wenn also in einer ISR auf x geprüft wird, wird sich der Wert nie ändern.
-
Thread
AVR + 47HC164 Code-Optimierung
Originalversion 24-27 Takte (datenabhängig) pro Iteration, die modifizierte Version 23 Takte (gcc 4.3.4). Nicht wirklich der Brüller. Ergibt zusammengerechnet also an die 200 Takte. Mit -O3 sind es jedoch für alle 8 Iterationen insgesamt nur knapp 90 Takte.
"r" (dC), "r" (dD), "r" (dE), "r" (dF) ); } [/c] Damit ist die Optimierung nun offiziell abgeschlossen ;-)
-
Thread
MyAVR: Fragen zur Code-Optimierung und Programmer
Fliesskommaroutinen, wenn man den Compiler ohne Optimierung darauf loslässt.
delay-Routine braucht ca. 1.5 KBytes. Aber wie bringe > ich menen Compiler zum optimieren?. Seitens gcc die Option -Os. Wie du ihn das beibringst weiss ich mangels MyAVR-Plus nicht.
-
Thread
"ARM eCross EABI Toolchain für Windows und Linux" Gibt es Erfahrungen?
entwickeln auch selbst am Compiler mit. Zumindest am ARM Backend. Die GCCs enthalten also oft Optimierungen die erst später in das offizielle GCC Release aufgenommen werden. Vorschlag falls du das installieren willst: Wähle die minimale Installation, lasse die Pfade eintragen aber keine Menüeinträge
die es interessiert, es gibt auf de mbed.org Homepage eine Anleitung, wie man das mbed-Modul mit dem GCC und Eclipse nutzen kann. Hier der Link: http://mbed.org/cookbook/Using-mbed-with-gcc-and-eclipse
-
Thread
Counter im ISR
Softwareerweiterungen bedenklich nahe an die Programmspeichergrösse kam... Was macht eigentlich der gcc mit R2-R15? Werden die tatsächlich für irgendwas benutzt oder liegen die eh brach?
die Register 0,1 (rund um die >Division) und 2 (für Null). Du erinnerst dich falsch: https://gcc.gnu.org/wiki/avr-gcc MfG Spess
-
Thread
micrium ucos 2 unter eclipse auf einem cortex-M3 STM32F107VC
Hallo, hab seit heute das RTOS von micrium am laufen. Ich verwende eclipse als IDE, yagarto gcc arm und einen olimex jtag adapter (arm-usb-osd) zusammen mit OpenOCD und dem Gnuarm und Zylin plugin für eclipse. Nach einigem frickeln läuft das micrium demo super auf dem Board von ebay Bild vom
Flash hat wollte ich es auch nutzen. Also bin ich auf eclipse um den gcc verwenden zu können. Der gcc scheint etwas grösseren code zu bauen als der Keil aber dafür gibts keine Beschränkungen. Gruss Michael
-
Thread
Wegoptimieren abschalten?
AVR-GCC 4.3.2 Ich lege im Flash eine Kennung (String) ab, damit ich im Hexfile sehen kann, was für ein Programm das ist. Ich würde aber auch gerne die Optimierung "--combine -fwhole-program" verwenden
Ohne irgendwelche Maßnahmen legt der AVR-GCC den String direkt nach der Interruptsprungtabelle ab, ist also leicht zu finden. Für eine Plazierung woanders müßte man mal bei Bootloadererstellung nachgucken. Ne UART oder ein LCD hat nicht
-
Thread
Warum ist das AVR-GCC Tutorial so bescheiden?
Um Missverständnisse zu vermeiden: Das AVR-GCC-Tutorial ist kein C-Tutorial (wie bspw. das von Christian empfohlene http://www.rn-wissen.de/index.php/C-Tutorial), sondern ein Tutorial zu den speziellen Eigenschaften des AVR-GCC. Wer das Tutorial
> Warum ist das AVR-GCC Tutorial so bescheiden? Bescheidenheit ist eine Zier, doch weiter kommt man ohne ihr.
-
Thread
While Schleife bricht nicht ab
erwartungsgemäß für [c] while(uiVal /= 10); [/c] und [c] while((uiVal /= 10)!=0); [/c] (mit Optimierung -Os) exakt den gleichen Code. Oliver
AVR-GCC 4.3.0 Aus dem AVR MacPack: http://www.obdev.at/products/avrmacpack/index.html Allerdings mit dem GNU99 Standard kompiliert. Sollte aber nicht so viel dran ändern, oder?
-
Thread
Wie Array-Size bekannt machen
Problem mit AVR-GCC: Ich hab ein Array in einem Objekt. Nun müssen aber auch andere Objekte wissen, wie groß das Array ist. Gibt es dafür ne andere Lösung, außer daß ich die Einträge immer abzählen muß und dann ins
en.wikipedia.org/wiki/Const_correctness#Loopholes_to_const-correctness Aber keine Ahnung, wie der momentane GCC das handhabt...
-
Thread
Float anschauen
2. noch der 3. Vorschlag sind standardkonform, wobei die Verwendung einer Union wie im Vorpost mit GCC funktioniert, aber nicht unbedingt mit anderen (standardkonformen) Compilern.
kriegt ist das > außerdem extrem ineffizient. Dann ist aber auch der Compiler extremer Murks. gcc muß es noch nicht mal wegoptimieren, da es eh komplett im Compiler implementiert ist. Das heißt, daß es selbst bei ganz ausgeschalteten Optimierungen nicht zu einem Funktionsaufruf kommt. Ich habe
-
Thread
volatile -- Anwendung auf Arrays
meist ein Index berechnet werden muss kann ein Compiler hier ja keine Voraussagen bzw. Register- Optimierung anwenden um schnelleren Code zu erzeugen, es sei denn man greift mit einem konstanten Index auf ein Array- Element zu. Übersehe ich da auf die Schnelle etwas? Gibt es dazu feste Regeln oder
Ich habe mit Programmen auf PCs am meisten Erfahrung. Wenn man auf dem PC mit Visual Studio (oder gcc ...) die Optimierung angeschaltet hat, macht der Compiler viele Dinge. Er kann z.B. ganze Funktionsaufrufe, die zur Compile-Zeit schon berechnet werden können, ausrechnen. Im Code steht dann nur noch
-
Thread
Stack Überschreiber beim Rechnen mit uint64_t
Das ist http://gcc.gnu.org/PR29524
GCC ist freie Software. Jeder der möchte, und dem das Thema wichtig genug ist, kann dort mit Bugfixes, Optimierungen und Erweiterungen beitragen. Wem __udivdi3 nicht zu pass ist, kann sich auch selbst
-
Thread
Interrupts beim LPC2138
Funkioniert das? [c] void wait(unsigned long zeit) { while (zeit > 0) zeit--; } [/c] GCC neigt ja dazu, solchen Code komplett wegzuoptimieren.
@Andreas Ja, das tut, ist GCC v4.1.1 Aber die Optimierung des GCC kann manchmal schon zu bösen Überraschungen führen.
-
Thread
Optimale Auswertung von Rückgabewerten
unterschiedlichen Dateien stehen (das Ganze ist ein rudimentärer Scheduler). Bei meinen Versuchen mit gcc und switch hat er nie eine Tabelle angelegt - vielleicht liegt das daran, dass meine Einträge nicht bei 0, sondern meistens erst bei den ASCII-Zeichen "0" oder "A" anfangen. Unter welchen Optimierungs-Einstellungen
ijmp .data .section .progmem.gcc_sw_table, "ax", @progbits .p2align 1 .L11: .data .section .progmem.gcc_sw_table, "ax", @progbits .p2align 1 rjmp .L3 rjmp .L4 rjmp .L5
-
Thread
EEPROM Schreibfrequenz auf eine Adresse
Montag das asm File dann wirst es ja sehen. Übrigens verwende ich den Codevision Compiler und nicht den GCC
Micha schrieb im Beitrag #2146235: > Dein Hex funktioniert. Unterschied könnte noch die Optimierung sein. Was hast Du? -O, -Os, -O2? Welchen Optimierungsgrad hat Peter benutzt?
-
Thread
Warum sind nicht verwendete Funktionen im Build enthalten?
welche Sections weggelassen werden und erhalte folgende Ausgabe: [code]... c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: Removing unused section '.text.test1' in file './trunk/FR_CONTROL.o' c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: Removing unused section '.text.test2
nimm halt -O0 statt -Os oder -O1, -O2, -O3. Oder besser: Wenn du debuggen willst schalte die Optimierung komplett ab.
-
Thread
24 Bit signed effizient verarbeiten
> verwenden oder ist das ganz viel zu unausgereift/böse/nicht portabel? Geht das auch mit avr-gcc? ich hab mal alles unter /usr/lib/avr nach int24 gegrept, aber nix in der Form int24 gefunden...
hunderte oder tausende Datensätze verarbeiten will. http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
-
Thread
STM32: Ich finde einfach keinen Fehler in meinem Code
Mit abgeschalteter Optimierung.
welchen compiler nehmt ihr denn? gcc linux?
-
Thread
ATmega 1284P PA4 geht nicht
Um möglichst viele Fehlerquellen auszuschliessen, habe ich alle includes vermieden und keine Optimierung verwendet. Wir haben es mit mehreren 1284 und einem 644 getestet. Sowohl mit Atmel Studio 5 als auch Atnmel Studio 6 kompiliert. Auf zwei verschiedenen Boards ausprobiert. Mit externem 12 MHz Quarz
flackern > die Ports deutlich sichtbar vor sich hin. Du bist nicht Rainer Z. Er hat die Optimierungen vielleicht an gelassen.
-
Thread
[STM32] Compiler optimiert Funktion zu stark
alles, siehe Screenshot 04.png. Ich habe schon an einigen Stellen mit volatile versucht die Optimierung zu verhindern, nur leider kein Erfolg. Was macht er Compiler hier? Wie löse ich das Problem? Welche Infos werden noch benötigt? Danke im Vorraus!
zutrauen, Wäre nicht die erste sinnlose Frage im Forum. Er verdächtigt den Compiler der Falsch-Optimierung, schaut aber nicht in die Disassembly. Das sagt schon einiges.
-
Thread
Memory Usage in Data Segment by __clz_tab??
habe ich mal einen Blick ins .map File geworfen. .data 0x00800060 0x0 /usr/lib/gcc/avr/4.2.1/avr5/libgcc.a(_pac$ .data 0x00800060 0x100 /usr/lib/gcc/avr/4.2.1/avr5/libgcc.a(_clz$ 0x00800060 __clz_tab .data 0x00800160 0x0 /usr/lib/gcc/avr/4.2.1/../../../../avr/li$ .data 0x00800160 0x0 /usr/lib/gcc/avr/4.2.1/../../../../avr/li$ Ohne wirklich etwas zu verstehen, sieht es so aus, als würde etwas das __clz_tab heisst