-
Thread
STM32: Compilierter Code unterschiedlich groß und Breakpoint nicht setzbar
man die durch eine neuere ersetzen? Gerade für C++ würde ich das machen. Die Cortex-M0 werden von gcc auch stiefmütterlich behandelt und optimieren schlecht.
Habe es gecheckt, das ist die CrossWorks Version, die enthält gcc 10.3, ist also frisch. Ist die Optimierung im debug build auch aus?
-
Thread
STM32: Ich finde einfach keinen Fehler in meinem Code
Mit abgeschalteter Optimierung.
welchen compiler nehmt ihr denn? gcc linux?
-
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
GCC versus BASCOM - Pegelunterschiede
Korrekt erspäht. Ich lief damals von den PICs über. Ausschlaggebender Grund war die Verfügbarkeit des GCC für die ATMEL µCs. Der Kommentar war noch falsch, für das Pollin Eval Board muss es heissen: DDRD = ( (1 << PD5) | (1 << PD6)| (1 << PD7) ); /* PD5, PD6 und PD7 als Ausgänge */ Hier sind
ist riesengross. Nö. Alle Werte sind zur Compilezeit bekannt: F_CPU, U2X_BIT und BAUSRATE. GCC faltet die Konstanten fleissig und zuverlässig auch bei abgeschalteter Optimierung. > Es ist viel sinnvoller, UBRR als Konstante vom Compiler ausrechnen zu > lassen und dann nur diese Konstante
-
Thread
Wie ist PORTB implementiert?
interpretiert. Da es sich hier um ein Hardware Register handelt kann der Compilier keine Annahmen für Optimierungen treffen, daher ist das volatile notwenig. Der so erzeuge Pointer wird sofort dereferenziert damit damit eine einfach Zuweisung mit = möglich ist. Man kann sich das alles zur Compilezeit mit
(Ausnahmen: AVRrc und Operationen wie ELPM. Außerdem Instruktionen wie RAMPx verwenden, was aber GCC nicht nutzt). > als ein 8 Bit breiter Pointer Nitpick: Der Zeiger ist 16 Bits breit. Das Ziel ist ein 8-Bit Wert.
-
Thread
[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
.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
Crossworks mit optimiertem Code
Thumb-Code, nicht wahr? Vielleicht versteht ja Crossworks auch nur die Debuginfos nicht, die Dein gcc erzeugt. > Ich verwende den GCC zum > kompilieren und Crossworks nur zum Debuggen. Warum? Was nutzt denn Crossworks als Compiler, ist das nicht auch gcc?
mal, die einzelnen Optimierungsschritte selektiv abzuschalten, d.h. mit -fno-... anzugeben: http://gcc.gnu.org/onlinedocs/gcc-4.4.4/gcc/Optimize-Options.html#Optimize-Options Gute Kandidaten wären solche wie -fno-reorder-blocks und -fno-schedule-insns. *Nach* der -O... Option.
-
Thread
Speicherverwaltung Atmega8 was geht wohin? --> C
überdenken. Ja. >Was habe ich noch vergessen? http://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung >PS. Ich kann kein Assembler, ich weiss das damit fähige Leute sehr >optimierten Code erzeugen können. Lohnt sich zu 99% nicht, der AVR-GCC ist meist schon ganz gut. MfG Falk
übernehmen das man irgendwo gelesen hat. Peter Dannegger schrieb im Beitrag #2478718: > Beim AVR-GCC ist leider die Standardeinstellung, daß er heimlich > inlined. Ist ja nicht schlimm solange noch ausreichend Platz vorhanden ist.
-
Thread
WinAVR Register Doppelbelegung?
oder ob es da zu handfesten Kollisionen kommt. Ist euch da irgendetwas bekannt ob GCC solche Bugs erzeugen kann? Hätte mal jemand Zeit drüber zu schauen?
die Dinger sowieso nicht lesen, und die Zuordnung des Quellcodes zum Objektcode ist bei guter Optimierung schlicht nicht mehr möglich, verwirrt also eher.
-
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
[AVR] (Fehlerhafte) Codeoptimierung bei 32bit-Variablen
wegzuoptimieren (nach meinen kurzen einblicken in das Listung zu urteilen ;) ). Version des AVR-GCC ist 4.3, irgendwo meine ich mal gelesen zu haben, dass es da Probleme geben könnte ... Kommt nun wirklich der GCC einfach nicht mit den 32 bit klar, oder ist da sonst irgendwas von mir falsch? Grüße
oder aus den Quellen kompilieren? Gefällt mir eigentlich beides nicht ;) Das betrifft aber nur den GCC selber, also keine der andren Tools in der Toolchain? Chris
-
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
GCC Inline Assembler Multiplikationen
8x8 sind zumindest im avr-Backend beschrieben. Sie sind daher für alle O-Stufen gültig. http://gcc.gnu.org/viewvc/trunk/gcc/config/avr/avr.md?revision=152958&view=markup > Ich dachte, errechnet dann 8bit x 8bit -> 8bit und konvertiert danach > erst in 16bit?! Das wäre der Fall mit -mint8 wo
in der Schublade liegen? Wobei ich jetzt gar nicht weiss, wie z.B. eine 32 : 8 Division intern vom GCC gerechnet wird!? Als 32 : 8 oder 32 : 32? Gruß Dirk
-
Thread
avr-gcc: Wie Daten alignen?
ich, sowas wäre per __attribute__((align(.))) machbar. Das ist doch maschinenunabhäbgig? Aber avr-gcc emittiert kein .align ins .s, weder die 4.x noch die 3.x. Zweitens wäre das ganz hübsch für ne bestimmte Optimierung, weil dann an Bit 0 der Adresse zu sehen ist, ob von einem geraden oder ungeraden
(.vectors)) /* For data that needs to reside in the lower 64k of progmem. */ *(.progmem.gcc*) *(.progmem*) . = ALIGN(2); __trampolines_start = . ; ... [/pre]
-
Thread
Verhindern der wegoptimierung von for(;;) beim GCC
// clever runden #define BAUD 19200L uint8_t i=0; char c; char s[10]; char input[10]; char gcc[] PROGMEM = "Boot up Ready, OS Compiliert am "__DATE__" um "__TIME__" mit GCC Version "__VERSION__"\r\n"; void uart_puts (char *s); int uart_putc(unsigned char c); uint8_t uart_getc(void); void
nichts anderes passieren. Es sei denn, es ist ein volatile-Fehler. Die kann man einfach mit der Optimierung -O0 rauskriegen. Peter
-
Thread
Layout überprüfen bitte (8051)
Masse unten rum legst, sparst du noch 4. In der Endphase, wenn alle Leitungen liegen, darf man zur Optimierung durchaus gegen die Vorzugsrichtung verstoßen.
Ich habe die Schaltung überprüft und es stimmt alles mit dem Schaltplan überein. Und ein paar Optimierungen des Layouts waren auch noch drin.
-
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
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
Kleiner endlicher Automat (FSM)
jeweiligen Funktionen auch direkt aufrufen: Hmm. Ich denke es ist kein guter Stil, sich auf eine Optimierung zu verlassen damit ein Programm funktioniert. Spätestens wenn man zum Debuggen die Optimierung ausschaltet ist es vorbei damit. Besonders übel wäre es auch, wenn in irgendeinem Spezialfall die Optimierung nicht angewandt wird und das Programm crasht. Das wäre ein schwer zu lokalisierender Bug. Da schreibe ich lieber die "korrekte" Version mit Funktionspointer.
-
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
Zugriff auf SP *vor* Funktionsaufruf
__builtin_frame_address könnte helfen: http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Return-Address.html
man es mit Assembler machen. Eine Möglichkeit hatte ich im letzten Post adressiert. Wenn man den GCC durch den eines anderen Herstellers ersetzt, ergeben sich natürlich völlig neue Mögllichkeiten.
-
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
AVR-GCC: Kein Zugriff auf Strukturmember
Hi! Ich habe die folgende C Structure definiert: [c] typedef uint8_t ringbuffer_addr_t; typedef struct{ uint8_t len; uint8_t head; uint8_t tail; uint8_t capacity; uint8_t *cont; } ringbuffer_t; [/c] und folgenden (vereinfachten) Testcode [c] int main(void){ ringbuffer_t buf; buf.capacity = 256; //breakpoint hier }[/c] egal was ich auch versuche, ich kann die Variable capacity nicht verändern, sie bleibt bei ihrem Initialwert. Ein Debugscreenshot hängt an diesem Post, der das Verhalten bestätigt. uC ist ein ATMega168P. Habt ihr eine Idee woran es liegen
-
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
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
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
AVR Eclipse Plugin 2.3
optimizations disabled; functions from <util/delay.h> won't work as designed" Schalt halt die Optimierung ein. Oliver
Simon K. schrieb im Beitrag #1903082: > Was soll mich > bewegen die Software statt dem WinAVR (AVR-GCC avr-libc) zu benutzen? Neuere GCC-Versionen (4.4.3 statt 4.3.3), Support für neuere Devices, behobene Bugs, neue Bugs ;) mfG Markus
-
Thread
Warum eigentlich C? (bitte ohne geflame und zynische Kommentare)
erweiterbar/flexibel. (z.b. Exceptions oder RTTI weglassen) Leider muss ich auch sagen das die Optimierung der Compiler schlechter ist als viele meinen. Ich kann jetzt nur von 6er und 7er MS-compieler sprechen dort ist die optimierung schlechter geworden. Wenn es wirklich optimiert sein soll hilft nur
einstampft, kannste deine Programme in die Tonne kloppen. Für C hingegen kannste Borland, Microsoft, GNU-Gcc (mit oder ohne Cygwin) und wie sie alle heißen, benutzen. Hoffe, das hilft dir ein ganz klein bissken -- soweit "meine" Sicht der Dinge.
-
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
Neue OpenOCD-Firmware für USBProg (18x schneller)
originale (circa 10.9 KB/s Übertragungsrate auf Flash). Es gibt eigentlich noch Raum für weitere Optimierungen, also bitte diese neue firmware testen und mir Bescheid über das Ergebnis sagen. Cahya.
2.33 GHz Intel Core 2 Duo, 2GB RAM * OpenOCD rev 1454 * ARM GNU gdb (GDB) 7.0.1 * AVR gcc version 4.3.2 (GCC) * Firmware was compiled with optimization: -Os * Target board: LM3S2110 CAN Device Evaluation Board * jtag_speed 0 * File size to flash: 64984 bytes * File
-
Thread
avr-gcc: Fehler? Reihenfolge der Funktionen ist wichtig
Prozessor ist ein ATtiny48, die avr-Tools habe ich unter einem ziemlich aktuellen Ubuntu installiert (gcc 4.5.3), kompilieren tu ich mit avr-gcc -mmcu=attiny48 -c source.c dann linken usw. Im Prinzip ist mir die Anordnung der Funktionen ja egal, allerdings habe ich Probleme mit der Ausführung von
> Zeigen, Oha, nicht schlecht, in die Richtung geht's: avr-gcc -mmcu=attiny48 -c start.c avr-gcc -o start.elf start.o avr-objcopy -j .text -j .data -O ihex start.elf start.hex sudo avrdude -c avrispmkII -p t48 -P usb -e -U flash:w:start.hex Zur Sicherheit
-
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
2 Frequenzen einstellen und ausgeben +Display Anzeige
die Funktion zu einer 0-Operation zusammenstreichen, sobald man ihm die Erlaubnis im Sinne von 'Optimierung einschalten' dazu gibt.
von 1 bis 300Hz ausgeben? Das Gittern sollte nur wenige (<30) µs sein. Wie kann ich die Code-Optimierung einschalten? Gruß Liloba
-
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
MSP430 startet sporadisch neu
Ob ein Reset erfolgte kannst Du nur mit den Flags für den Resetgrund feststellen. Z.B. beim AVR-GCC läuft jeder Interrupt in den Resetvektor, für den kein Handler aufgesetzt wurde.
Fehler eindeutig nachgewiesen ist, kann ich mich an die Fehlerbehebung setzen und mich mit Code-Optimierung beschäftigen. Vielen Dank für eure Unterstützung. Grüße Andreas
-
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
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
ENC28J60 Basics[Beispielprogramm in AVRGCC für atmega8]
stammt meine Version von avrgcc glaube ich noch aus dem nicht-winavr zeitalter, ich hab pnotepad und gcc einzeln installiert, der GCC ansich ist jedenfalls version : avr-gcc (GCC) 3.4.3 Die Warnings kann ich mir immer noch nicht erklären stack.c: In function `ip': stack.c:87: Warnung: Zuweisung
directory G:\uC\enc\default\ does not exist gcc plug-in: Created directory G:\uC\enc\default\ gcc plug-in: Error: Object file not found on expected location G:\uC\enc\enc.elf Make sure your makefile specifies the output .elf file as enc.elf gcc
-
Thread
Formel Mikrocontrollergerecht machen
Sekunden Ausführungsdauer. c) Formel eintippen und Compiler entscheiden lassen und auf gute Optimierung hoffen. Habt ihr noch weitere Vorschläge? Verzweifle sonst.
macht oder nicht, musst Du ausprobieren. Viele Compiler haben fuer kleine Konstanten solche Optimierungen eingebaut.
-
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
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
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
"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
Microcontrollerboard mit 16Bit-Controller
guter Assemblerprogrammierer noch etwas besser optimiert, wage ich zu bezweifeln, da die Optimierung über ein großes und weiterhin wachsendes Projekt fortgeführt werden muß. Dieter
preisgünstig lösen könnte. Der GNU-Compiler erzeugt recht guten Code; Probleme, wie sie hier oft unter AVR-GCC angesprochen werden, habe ich damit nie gehabt. Ich verwende die Ausgabe 98r2, die 'mal auf einer Hitachi-CD enthalten war. Nur Mut Michael
-
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
"_delay_ms" zu kurz, ATMega48
Welche Compileroptimierung verwendest du? Delay generiert nur mit eingeschalteter Optimierung genau delays. Ich verwende -Os
Und das auch nur bei einer alten GCC-Version. Bei einer aktuellen ist auch das kein Problem mehr!
-
Thread
Stack filled to 100% - kann das einer erklären?
Wurzelberechnung und beim Arkussinus. Der IAR sollte eigentlich gut zu optimieren. Hast Du die Optimierung ausgeschaltet? Als Default sollte man "-Os" nehmen. Schlechtere Optimierungen nur dann, wenn man weis, was man tut. Peter
sollte man "-Os" nehmen. > > Und wofür steht das? "-Os" ist eine Option für den Optimizer vom gcc. Das s steht für size. Der Compiler soll also möglichst kleinen Code erzeugen.
-
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
.dll ohne Code/Header nutzbar?
Grundgerüst des verwendeten Quelltextes schließen kann, aber auch nur dann, wenn die DLL ohne Optimierung übersetzt worden sein sollte.
Hängt das name mangeling vom Code (main.c vs main.cpp) ab, oder vom Compiler (als Beispiel mal den gcc: gcc vs g++)? Man kann den C++-Compiler ja auch mit der C-Datei füttern.