-
Thread
GCC: -ffunction-sections verändert Programmlogik - warum?
Eine Frage zur Wegoptimierung von ungenutzten Funktionen durch den Linker: Ich wollte die Optimierung zum Entfernen von unbenutzten Funktionen aktivieren (vgl. http://www.mikrocontroller.net/articles/GCC:_unbenutzte_Funktionen_entfernen) Auf dem ATXMEGA256A3 hat sich die Codegröße danach von
Optimierung nicht unterscheiden. Nein Marcel, sorry fürs Noch-nicht-Beantworten der Mail, ich habe da auch keine Idee, ohne dass man den Kram komplett analysiert.
-
Thread
Wie lange dauert ein Prozessschritt?
Wenn Optimierungen eingeschaltet sind, wird der Compiler die Berechnungen nicht zwangsläufig zwischen den Zuweisungen an PORTA durchführen. Die Initialisierung von Erg greift auf volatile Variablen zu und wird deshalb
Andreas B. schrieb im Beitrag #1973049: > Wenn Optimierungen eingeschaltet sind, wird der Compiler die > Berechnungen nicht zwangsläufig zwischen den Zuweisungen an PORTA > durchführen. Die Initialisierung von Erg greift auf volatile Variablen > zu und
-
Thread
Bauteilverwaltung - Java als Sprache noch Zukunftsfähig?
Du kannst dir ne Cross-Toolchain vom GCC installieren. Geht wie jedes andere Crosscompilieren auch.
, alles rechenintensive soll und wird ausgelagert sein. Tipp: Für eine Schrittweite Python Optimierung bietet sich cython an.
-
Thread
Fragen zur Rekursion
Zahlen und berechnen sie Fib(6). Es genügt wenn das Programm die Zahlen einfach nur berechnet. Optimierungen sind nicht notwendig.
>Wenn du mit VC++ arbeitest, sollte es da eine Funktion getch() GCC bzw. MinGw kennt die auch, conio.h.
-
Thread
Wie Baudrate einstellen
ATmega-Modell zu sein, dies sollte eigentlich + die Info welcher Compiler, welche IDE, welche Optimierungs-Optionen eingeschaltet werden, etc. im Quelltext enthalten sein. Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen...
ziemlich sicher. >80% des Codes hier stammt aus dem Gespann AVR-Studio / WinAVR) > welche > Optimierungs-Optionen eingeschaltet werden ist praktisch auch immer gleich: -Os > Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen... Dann fang mit der ersten an. Was ist das Prinzip des
-
Thread
Bekomme DISPLAY HD44780 nicht zum laufen!
Balken an, das zumindestens. Ich steuer es im 4 Bit Modus an. Verwendet hab ich dabei den C code vom GCC Tutorial, um zu sehen ob sich überhaupt etwas tut. Leider bin ich noch nicht so erfahren mit C. gcc Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung von dort
www.mikrocontroller.net/articles/HD44780 Board: STK500 Chip: Atmega 8515L Programm: AVRSTUDIO Optimierung Os- Ich wäre einem göttlich dankbar der mir hilft, häng schon ne Zeit lang fest! Es kommen leider keine Fehlermeldungen! LG Stiefei [c] #include <avr/interrupt.h> // für sei(
-
Thread
[Suche] Interessierte(n) an Projekt (ARM/FPGA)
Assembler gibt, was leider bei manchem hochakademischen Projekt der Fall ist. OpenRISC wird hingegen von GCC unterstützt, selbst unter Cygwin.
FPGA Softcore? ZPU:http://opencores.org/project,zpu Es gibt sogar einen GCC dafür.
-
Thread
Wie man volatile optimiert
sondern es ist für eine Variable immer generell. D.h. auch im Interrupthandler wird damit die Optimierung ausgeschaltet, also da, wo es am meisten wehtut. Peter
auch const. Das heißt man kann > volatile genauso casten wie const. Und warum geht es dann im AVR-GCC nicht? Peter
-
Thread
STM32 Eclipse+GCC Laufzeitunterschied Debug/Release
version 3.5.2 (Galileo) and CDT version 6.0.2. * Atollic ARMTools Lite, Build 10.1 - built with GCC version 4.4.1 GDB version 7.1 Newlib version 1.17.0 Testweise mit Keil probiert. Dort laufen Release und Debug korrekt.
Vorkehrungen gegen 'wegoptimieren' enthält. Diese werden von ARMs Compiler scheinbar nicht bei Optimierung verworfen. GNU-Compiler verwirft bei eingeschalteter Optimierung schon. Ansonsten: die Compileroptionen angeben, die bei "debug" bzw. "release" an den GNU Compiler übergeben werden, hilft evtl
-
Thread
.c Datei kompilieren (krieg ich einfach nicht hin)
############## ## General Flags PROJECT = cdcemu MCU = atmega8 TARGET = cdcemu.elf CC = avr-gcc CPP = avr-g++ ## Options common to compile, link and assembly rules COMMON = -mmcu=$(MCU) ## Compile options common for all C compilation units. CFLAGS = $(COMMON) CFLAGS += -Wall -gdwarf
from ../main.c:4: e:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>." In file included from ../main.c:6: e:/winavr-20100110/lib/gcc/../../avr/include/avr/delay.h
-
Thread
Wie Assembler einbinden?
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Inline-Assembler -- viel schöner wird's nicht
Compiler manchmal "a bisserl umständlich" > zu Werke geht. Z.B.... Komisch. Hast du etwa die Optimierung ausgeschaltet? Mein AVR-GCC macht aus [c] PINB = (1 << PIN3) | (1 << PIN4); PINB = (1 << PIN3) | (1 << PIN4); [/c] folgendes: [avrasm] ldi r24,lo8(24) out 54-
-
Thread
Überlauf geht verloren
reinen Betrachtung auf C Ebene. Oder muss er sich an den Auswirkungen orientieren? Dann dar er die Optimierung nicht durchführen, weil sie ja nicht den identischen Effekt hat. In der Tat eine gute Frage.
Betrachtung auf C Ebene. > Oder muss er sich an den Auswirkungen orientieren? Dann dar er die > Optimierung nicht durchführen, weil sie ja nicht den identischen Effekt > hat. > > In der Tat eine gute Frage. Darauf wollte ich eigentlich nicht hinaus. Der GCC wird REG |= (1 << const) als sbi übersetzen
-
Thread
PIC18: Welchen C Compiler
Hallo Nachdem ich mich inzwischen mit den AVRs und GCC einigermassen zurecht komme, will ich mich jetzt mal mit einem PIC18F4520 versuchen. Nun gibt es da ja zwei kostenlose C Compiler dafür - den von Microchip und einen von Hi-Tech. Im grunde genommen
Windows auf der Platte). Aber vielleicht hat einer der beiden ja besondere Vorteile in Sachen Optimierung und/oder Features. Nach den Herstellerangaben kann ich nicht gehen da natürlich jeder behauptet er habe den besten Compiler auf der ganzen Welt ;). Auf sprut.de wird anscheinend nur der C18 von
-
Thread
Parameterübergabe bei Inline Assembler
Hallo, ich programmiere einen STM32 Cortex-M3 Controller mit GCC und würde gerne einen 32Bit-Wert in das Stackpointer-Register schreiben. Leider scheitere ich an der Umsetzung des Inline Assembler. Wenn ich die Adresse hart mit reinkodiere klappt es: [c] asm
SP, %0" : : "m" (mySP)); } [/c] Ich muss zugeben ich habe Null Erfahrung mit Assembler und die GCC-Inline-Tutorials haben mir nicht weitergeholfen. Hat jemand einen Tipp? Viele Grüße, Oliver.
-
Thread
Kann keinen String zuweisen wieso ?
> libgcc würde das noch angehen. Mag sein, daß es von der libc unabhängig ist. Jedenfalls hat gcc die Funktion sprintf (und so gut wie jede andere libc-Funktion) zu Optimierungszwecken schon selbst eingebaut und ruft nur dann die libc-Implementation auf, wenn er keine Möglichkeit für die Optimierung
Optimierung > findet. Das geht aber nur, wenn sich die C-library nicht dagegen wehrt. Standard "Bezeichner" (da wir grad beim Thema waren...) werden mit #defines umgebogen, damit gcc sie nicht als solche
-
Thread
Probleme mit MISRA C
0x12345678 << 36 = 0x23456780 0x12345678 << 36 = 0 0x12345678 << 36 = 0 [/pre] Compiler ist der GCC für x86 mit -O2.
36&0x1f) = A<<4 führt. Da kann es natürlich je nach Compilerversion Unterschiede geben, ich habe GCC 4.5.1.
-
Thread
Optimiert der Compiler Division durch 2^n wirklich?
weiteres machbar. Nur hatte offenbar bisher noch niemand genug Leidensdruck um eine derartige Optimierung in den gcc einzubauen.
weiteres machbar. > Nur hatte offenbar bisher noch niemand genug Leidensdruck um eine > derartige Optimierung in den gcc einzubauen. Für "int" ist sie ja drin und funktioniert auch. In -O1.
-
Thread
AVR-Studio - Code Größe anzeigen
Kompilat zu quetschen. Sonst noch irgendwelche guten Ratschläge (außer die, die im Artikel Code-Optimierung bzw. im AVR-Datenblatt stehen), wo man nochmal nach ein wenig Speicher auf die Suche gehen kann? Was verbraucht i.d.R. viel Flash-Speicher, was nicht? Und ja, die Optimierung steht auf -Os!
aufzwirbeln, der sofort verschwindet, wenn man bemerkt, dass es ein uint8_t auch getan hätte. Der GCC hat zwar manchmal so seine Schwierigkeiten, aus der von C geforderten int-Rechnerei auf uint8_t abzuspecken, aber generell macht er einen guten Job, wenn es um Optimierung geht. D.h. das Hauptaugenmerk
-
Thread
STM32 C auf C++ -> Programm 4x so groß
. const korrekt arbeiten! Nicht unterschätzen sollte man auch, was ein C++ Compiler bei Optimierungen noch rausholen kann. Die komplette I/O Stream Bibliothek, vieles in <algorithm>, die halbe STL, ... beruht darauf, dass der Compiler wie wild Zwischenergebnisse und Temporaries wegoptimieren darf
100MB als .debug generieren, das Programm passt dennoch in 128KB Flash. Hast wohl noch nie mit GCC und STM32 gearbeitet?
-
Thread
_delay_ms() läuft 4 Mal schneller als erwartet
nicht drin, Anatolij mag den irgendwie nicht. Den Patch hab ich nicht 1:1 übernommen. http://gcc.gnu.org/onlinedocs/gcc/AVR-Built_002din-Functions.html#AVR-Built_002din-Functions http://gcc.gnu.org/viewcvs?view=revision&revision=172416 Etwas seltsam finde ich manche Builtins schon; die gingen
Johann L. schrieb im Beitrag #2191158: > Den Patch hab ich nicht 1:1 übernommen. > > http://gcc.gnu.org/onlinedocs/gcc/AVR-Built_002din-Functions.html#AVR-Built_002din-Functions > http://gcc.gnu.org/viewcvs?view=revision&revision=172416 OK. Vielleicht baue ich das nochmal um, wenn deine Version
-
Thread
DCF Funktion frisst unglaublich viel Speicher
Irgendwas mach ich dann falsch, ich brauch da knapp 300 Bytes... Wenn ich dein Projekt mit avr-gcc -Os übersetzte, ergeben sich für das dcf77-Modul rund 320 Bytes, sowohl für avr-gcc 4.3 als auch für die ältere 3.4, für die das Projekt wohl geschrieben wurde. Ein Byte rechne ich mit 8 Bit. Löwe
Eine Sache die bei dieser Diskusion nicht beleuchtet wurde ist die Verwendung des GCC Compilers. Er ist gut, aber er ist auch eine Eierlegendewollmilchsau. Ich meine damit, dass die Optimierung noch besser geht. Wer vielleicht mal etwas Zeit hat sollte sich den IAR Compiler angucken
-
Thread
Shift-Operator und Performance
promoted werden muss. In dem Falle wär's kein Ersatz. Jedenfalls bekomm ich es momentan mit avr-gcc nicht hin, einen 8-Bit Shift erzeugen zu lassen (4.5.1). Es muss aber gehen, sonst gäb es im gcc keine Pattern dafür. Möglicherweise ist's irgende Optimierung die sich wieder mal selber ins Knie schiesst. In dem Falls wäre die Sequenz in avr-gcc ok (natürlich mit r25 und nur für O2+, da die Sequemz 2 Byte länder ist als ne Schleife. Wobei letztere allerdings den Eingabewert zerstört und er nicht wiederverwendbar ist. Wenn also ne Kopie nötig
-
Thread
WinAVR vs. Atmels Toolchain
Jörg Wunsch schrieb im Beitrag #1924050: > AVR-GCC ist ein GCC, der für das "target" AVR konfiguriert worden ist. Ist was über die Atmel-Strategie bezüglich avr-gcc bekannt? D.h. werden sie, wie es bisher mit WinAVR war, auf (gepatchte) FSF-Quellen
Aus der Unwissenheit heraus gefragt ... Würde es Sinn machen nur einen aktuelleren Compiler bzw. GCC einzusetzen. Ich habe allerdings trotz Hinweise auf der GCC-Webpage keine GCC binaries für Windoof gefunden...
-
Thread
Was passiert bei einem Überlauf
und das mischen von C mit Assemblercode ist auch nicht Standard sondern z.B. eine Besonderheit von GCC und anderen. Da aber die Hauptfrage ja war: "Die geht doch dann auf 0 und sonst nichts, oder?" und man diese mit Ja beantworten muss, spielt das alles garkeine Rolle.
Konstrukt auflösen, weil vielleicht alles zur Compilezeit bekannt ist oder sonst eine andere beliebige Optimierung. Und dann kommt bei dem SREG nur nur zufälliges Gemüse raus. Die einzige Möglichkeit ist es sowohl das add als auch das lesen des carry bits im inline-assembly auszuführen.
-
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
Verbrauchsanzeige für's Moped
endeffekt Sprit zu sparen. @Timo: Du kannst den Kollegen ATmega z.B. mit C Programmieren (AVR-GCC), der kann dir eine ganze Menge Kram wie z.B. die Division automatisch abnehmen, sogar Fließkomma ist damit ohne weiteres möglich, wobei man auch mit Integern gut hinkommen dürfte (Fließkomma ist sehr
habe ich nie gesagt, dass ich damit im öffentlichen Straßenverkehr fahren werde. Es geht um die Optimierung des Verbrauchs und um den Spaß und Lerneffekt beim Basteln, Programmieren und Mitteilen/Lesen. @ lkmiller: Ich wollte den Durflussmesser sowieso erst dann kaufen, wenn ich ein Programm habe,
-
Thread
For-Loop wird nicht richtig ausgeführt
Kommt drauf an, was in der Schleife steht. GCC kann da auch eine ganze Schleife wegoptimieren wenn es den Schleifeninhalt auch ohne Schleife in einem Rutsch ausführen kann. Mal als Beispiel: [c]unsigned int test(unsigned int n) { unsigned
direkt 20 addiert. Wenn du alles wie im Quellcode ausgeführt sehen willst, musst du die Optimierungen ausschalten. Mit Optimierungen wird es auch auf andere Weise unübersichtlich im Debugger, z.B. kann die Reihenfolge der Anweisungen umgestellt werden.
-
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
Nicht genutzte globale Variablen werden wegoptimiert
Hallo GCC-Gemeinde, ich bin gerade auf ein sehr merkwürdiges Problem gestoßen. Und zwar werden globale Variablen, die ich in meinem Programmcode nicht explizit verwende, nicht richtig initialisiert, d.h. mit
nicht probiert, das wäre aber eh eine mehr oder weniger unbefriedigende Lösung. Ach ja: Die Optimierung ist natürlich aus, hier meine GCC-Argumente aus dem Makefile: [code] C_FLAGS = -mcpu=cortex-m3 -mthumb -O0 -gdwarf-2 \ $(patsubst %,-I%,$(INC_DIRS)) -I. \ -std=gnu99 \
-
Thread
AVR Bootloader in C - Artikel
schreiben. Dein WinAVR ist in ziemlich alt. Ich habe für das kompilieren das AVRStudio 6.2 mit der gcc.Verision: gcc version 4.8.1 (AVR_8_bit_GNU_Toolchain_3.4.4_1162) benutzt. Evtl. wäre es eine gute Idee zumindest den gcc mit der gnu toolchain zu updaten... mein avr-libc ist vermutlich 1.8 (muss
Compiler Optimierung -Os läuft nicht geändertes Programm: 16188 Byte mit Compiler Optimierung -O1 läuft Ich bin da ziemlich ratlos, kann mir vieleicht jemand weiterhelfen? Gruß jan
-
Thread
Fehler in For-Schleife?!
Dominik K schrieb im Beitrag #1909856: > Aber was den nun? > Der eine sagt Optimierung muss aus, der andere sagt das führt zu > Fehlern, der dritte sagt das geht gar nicht. ohne optimierung geht delay nicht, also braucht du auf jeden fall die Optimierung. Und alle Fehler die durch
Ohne Optimierung macht "for(i=0;i<16;i++) led_on();" folgendes: led_on(); led_on(); led_on(); led_on(); ... led_on(); (insgesamt 16x). Mit Optimierung aber das: led_on(); Das liegt daran, dass
-
Artikel
AVR-DevCPP
-gdwarf-2 -std=gnu99. Dies sind die notwendigsten Parameter um den qC zu beschreiben sowie die Optimierung(dwarf-2) und den C Standard (GNU C99) In der Karteikarte Einstellungen sind i.A. keine Änderungen vorzunehmen. Hier können die weiteren Compiler-Flags aber komfortabel eingestellt werden. Als nächstes
eingerichtet. In der Karteikarte Programme müssen nun noch die richtigen Programme ausgewählt werden: Als gcc wird avr-gcc.exe eingetragen, als g++ avr-g++.exe und als gdb avr-gdb.exe. Nun kann dieser Dialog geschlossen werden. Projekt Vorlage. Als nächstes wird eine Vorlage gebraucht. Diese kann anschließend
-
Thread
AtMega ehwiges Fuse Thema 16 Mhz Quarz
*/ /**@{*/ #if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 #error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" #endif /* ** constants and macros */ /** @brief UART Baudrate Expression * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
Ausserdem muss beim Compiler die Optimierung eingeschaltet sein.
-
Thread
Timingproblem: delay_ms zu langsam!
Ja, Die Compiler-Warnings zu lesen, und danach zu handeln... _delay_ms braucht die Compiler-Optimierung. Also "-Wall -Os" in die GCC-Flags und die Sache sollte passen.
-
Thread
Beschleunigung von Algorithmen, Quelle gesucht
Algorithmen-Optimierung in dem Sinne, dass man einen Algorithmus 'optimiert' um aus einem O(n^2) einen O(nlogn), das hat mehr mit Erfinden als mit systematischer Optimierung zu tun. Entweder ich habe eine radikal andere
dies dem Compiler überlassen. Ja, es ist oft erstaunlich, wie wenig bis gar nichts manuelle Optimierungen in dem Bereich bringen, das können Compiler (selbst der gcc) inzwischen deutlich besser. Dasselbe gilt fürs Prefetching. Ausser in ganz abstrusen Fällen kann der gcc das besser, das Bauchgefühl
-
Thread
Probleme bei selbstgebauter Uhr (DEM 16217 | STK500)
Datenflussanalyse wird bei dieser Variablen zu falschen Schlüssen kommen, also spar dir jegliche Optimierung auf dieser Variablen. Alles andere sind Folgeerscheinungen davon und bei manchen Compilern so, bei anderen wieder nicht. volatile hat damit zu tun, eine Variable von der Optimierung des Compilers
Datenflussanalyse wird bei dieser Variablen zu falschen Schlüssen > kommen, also spar dir jegliche Optimierung auf dieser Variablen. > > Alles andere sind Folgeerscheinungen davon und bei manchen Compilern so, > bei anderen wieder nicht. > > volatile hat damit zu tun, eine Variable von der Optimierung
-
Thread
40 Spannungen einlesen und an AtMega8 übertragen
Natürlich blödsinn, 0x80 ist eh 1000 0000 sorry Ich hab den Fehler erkannt, ich hab die Optimierung des Compilers jetzt auf O0 gestellt und jetzt funktionierts, sonst nichts verändert nur von Os auf O0, war das bei dir auch so, oder kannst du mir sagen wieso das so ist ?? Danke
Manuel schrieb im Beitrag #1943765: > Ich hab den Fehler erkannt, ich hab die Optimierung des Compilers jetzt > auf O0 gestellt und jetzt funktionierts, Ja, der GCC schießt beim Optimieren gerne mal über das Ziel hinaus. Da Dein Main sehr kurz ist, lädt er die Variablen nur einmal
-
Thread
Lauflicht KITT
Und wo ist die Tabelle gespeichert? Tipp: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29
. Dafür wird der Prozesser mehr belastet durch mehr Rechenschritte? Ich kenn mich hinsichtlich Optimierung eines Programmes, was auch besser ist für den Prozessor oder den Speicher, nciht aus. Mehr Speicher verbraten und den Prozessor wenig rechnen lassen oder wenig Speicher und die Schritte rechnen
-
Thread
LED Fading Artikel
richtig definieren? Bei der internen 1MHz Taktung hat > das mit der einen Sekunde gepasst. AVR-GCC-Tutorial Abschnitt über Delays. Es gibt 3 Kriterien * F_CPU definiert * konstante Ausdrücke * Optimierung eingeschaltet
-
Thread
Visual Studio 2010 - wurde IntelliSense raus geschmissen?
Ergebnis kann man beliebig gestalten, einfach durch die Auswahl der Aufgaben und unterschiedliche Optimierung.
Beitrag #1938318: > Zum Vergleich, falls es jemanden interessiert: > > als C mit puts unter Linux (gcc 4.3): > > 6.3 kB > > > > Als C++ mit std__cout<<...: > > 8 kB Wow, meine 400 K waren VS mit W7 x64, 8 kb ist mal schlank
-
Thread
Mein erstes Programm mit C
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
<util/delay.h> // Funktionen zum warten // Achtung, damit delay richtig funktioniert muß mit Optimierung compiliert werden int main(void) { DDRB = 0xff; // alle B pins als ausgang konfigurieren PORTB = 0xff; // erstmal alles abstellen DDRC = 0xff; PORTC = 0xff; while
-
Thread
Led Lauflicht
Grundlagen zu beschäftigen und das Lauflicht wegzulegen und erst mal einzelne LED anzusteuern AVR-GCC-Tutorial AVR-Tutorial Auch wenn das 2.te das Assembler Tutorial ist, findet sich doch jede Menge aus dem Umfeld (zb was hat es mit dem DDR Register auf sich), dass sich lohnt zu lesen.
wie das ding wirklich arbeitet und welche dinge der µC wirklich kann. Es geht hier nicht um optimierung es geht um Grundlagen. z.b. Warum muss man hier etwas atomar ausführen wenn es noch interupts gibt int i; i++;
-
Thread
Frage zur Laufzeit von if else
1; // oder auch y++ - als Speziealfall hier, geht teilweise noch schneller, bzw lässt weitere optimierungen des Compilers zu.
Und vergleiche auch noch if(x) y=0; else y=1; mit, gerade mit dem avr-gcc habe ich schon die lustigsten Erfahrungen gemacht.
-
Thread
delay funktion
schätze, dass der compiler dies braucht, damit die funktion korrekt arbeitet?) Wo kann man die optimierung einschalten? Ich habe das hilfe menue des AVR studio bemüht und optimize eingetippt. Dort kommt aber nur etwas zum stk 500.
A.D. schrieb im Beitrag #1884930: > Wo kann man die optimierung einschalten? > Ich habe das hilfe menue des AVR studio bemüht und optimize eingetippt. > Dort kommt aber nur etwas zum stk 500. Im AVR-Studio gibts ein Dropdown-Menü mit so Sachen wie "-O2
-
Thread
PIC Assembler Probleme
So als Tip wegen Optimierung wen die werte des PORT bekant sind bei der ausfürung ein: movlw B’00000000’ movwf PORTC ist wesentlich schneller als: bcf PORTC, 1 bcf PORTC, 1 bcf PORTC, 1 bei erster variante wird
Nochmal was zur Optimierung. Ich kenn diesen Prozessor nicht genau, aber bei anderen PICs gibts auch den ANDLW Befehl. Die Idee ist den Wert 0011xx1100 (0 wo gelöscht werden soll, 1 wo nicht beeinflusst wird) zu laden und
-
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
Daft Punk Tisch
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#IO-Register_als_Parameter_und_Variablen Hier steht eigentlich schon alles genau beschrieben. Mit Hexadezimalzahlen musst du nicht unbedingt arbeiten. Es ist nur eine abkürzende SChreibweise
einfach mal ganz blauäugig ran und probiere mal aus die "Grundschaltung" aufzubauen :D Was die optimierung des Programms angeht kann ja noch nachträglich kommen. Das eigentliche Problem ist jetzt nur noch das Programm was ich dann schreiben würde zu testen :-/, da wäre ein Testboard sicherlich hilfreich
-
Thread
ATTINY 2313 - Passt da überhaupt ein Programm drauf?
Boris B. schrieb im Beitrag #1859331: > PS: Als Optimierung habe ich Os gewählt, das sollte ja eigentlich > kleinen Code produzieren, oder? "0" ist gänzlich ohne Optimierung "s" sollte gute Ergebnisse liefern Gruß, Magnetus
@Magnus Müller das ist ein O keine 0 -Os benutzt er, also Optimierung s, nicht -0s bzw. -O0s
-
Thread
NeuesOS für AVR Mikrocontroller
/gcc/Function-Attributes.html
Ups...vergessen: Ich muss auch ehrlich gestehen, dass ich mich mit den Optimierungen des gcc nicht so gut auskenne, auch von daher bin ich damit lieber erstmal vorsichtig. Zum Mega16...kannst du das in Hardware verifizieren? Ich habe aktuell leider keine Mega16 da. Der Mega8
-
Thread
Variablen eine General Purpose Register Adresse zuweisen
(1) Es ist sinnlos, Register volatile zu machen (zumindest für GCC). GCC hat intern überhaupt nicht die Möglichleit, ein Register (GPR) als volatile zu markieren. Wer's nicht glaubt lese gcc/rtl.def :-) (2) 16-Bit-Variablen müssen in _geraden_ GPR-Nummern liegen
die nen Wolf. Oder zwei oder drei. Etwa bei Verwendung von STandard-Bibliotheken, Interrupts, etc. GCC kann globale Register _wegoptimieren_ . So gesehen in GCC 4.x, wo es als tot analysiert wurde (was es im Sinne von C auch war, da es asynchron verwendet werden sollte. Da solche Regs jedoch nicht volatile