-
Thread
LCD Atmega8535 fehler beim Programm erstellen mit AVR-Studio
> gcc plug-in: Error: Object file not found on expected location http://www.mikrocontroller.net/articles/WinAVR#gcc_plug-in:_Error:_Object_file_not_found_on_expected_location Alle Einstellarbeiten sollten
andere LCD Library, die RW nicht benötigt, z.B. den lcd-routines.c/lcd-routines.h Code aus dem [[AVR-GCC-Tutorial]].
-
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
8 bit vs. 16 bit
Auch AVRs tun sich nicht wirklich leicht mit Daten auf dem Stack, > insbesondere wenn man wie der GCC nur einen Stack verwendet. Die haben halt damals beim Entwurf nicht über den Tellerrand in Richtung GCC geguckt, sondern sich ausschließlich auf die Kommentie- rung durch die Haus- und Hoflieferanten
Das Problem einer 8-bit-Architektur gegenüber der 16-bit-int-Forderung > von C dürfte eher der AVR-GCC-Implementierung denn der 8-bit-CPU > anzulasten sein. Mir ist klar, dass GCC hier ganz spezielle Probleme hat, weil das im maschinenunabhängigen Teil einfach nicht vorgesehen ist, es aber dort realisiert
-
Thread
Buchempfehlung GCC, Makefile & Co
zurückgeworfen sind. Sieht dann zwar etwas hübscher aus im Buch, aber das war es dann auch... Zudem wird GCC ständig weiterentwickelt. Wenn du in einem GCC-Buch was suchst zu "Transactional Memory in GCC" wirst wohl nicht viel finden, weil ein Buch zu langsam ist und schwerlich mithalten kann mit der Entwicklung
ist zu beachen: Diese Mailinglisten sind nicht für Fragen zu C oder C++ etc. sondern für Fragen zu GCC (Schalter, Optimierungen, Probleme mit configure, ...) [1] http://gcc.gnu.org/ml
-
Thread
Dry made easy
etwas hinterher. Deswegen brauch clang etwas mehr boilerplate. Der angehängte Code ght nun für gcc >= 8.1 und clang >= 9.0.
etwas hinterher. Deswegen brauch clang etwas mehr boilerplate. Der angehängte Code ght nun für gcc >= 8.1 und clang >= 9.0.
-
Thread
GCC ARM: writeback of base register is UNPREDICTABLE
Beitrag von "let" http://www.mikrocontroller.net/topic/91547 In der Rowley Umgebung wird bei Optimierung bekanntlich der Fehler "Warning: writeback of base register is UNPREDICTABLE" erzeugt, wenn ISR Routinen verwendet werden, die mit Schlüsselwörtern des GCC bezeichnet sind. Der erzeugte Code
Jetzt die Frage: Kann jemand, leicht verständlich sagen, wie man das Ganze umbauen muss, damit Optimierungen wieder funktionieren? Und wie sieht dann eine ISR aus, bzw wie wird sie installiert? Gruss, Christian
-
Thread
Funktionen in mehrere c files auslagern funktioniert nicht
machen. Aber es klappt einfach nicht, egal wie ich es mache. Ich nutze das aktuellste AVR-Studio mit gcc(WINAVR). Ich habe etliche Forumsbeiträge dazu gelesen und auch den Artikel in der Sammlung, aber irgendwie scheine ich auf dem Schlauch zu stehen. Klappt bei mir alles nicht. Auch habe ich im AVR-Studio
problem, aber sowas "void delay_x10ms(uint16_t count);" brauchst nicht mehr. In der neuen Version von GCC wird das automatisch gemacht, sobald die übergebene Zahl zu groß ist.
-
Thread
Array nicht in RAM
die map file im Anhang. Als Entwicklungsumgebung benutze ich Code::Blocks, zusammen mit dem AVR-GCC und avrdude zum upload. avr-gcc --version (WinAVR 20090313) 4.3.2 Habe mal ans Ende der if's einmal LEDs umschalten gehängt, LED ist dauerhaft eingeschaltet. Hm... ins Makefile habe ich keinen
verwendest auch einen ATmega8 ja? Warum eigentlich avr-g++ fürs linken? Nehm da doch auch mal den avr-gcc.
-
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
C Tutorial
im wiki gibts en butes tutorial zu gcc(avr)
jede Millisekunde kaempft. zum >>=2. Ja, der Compiler sollte zumindest bei eingeschalteter Optimierung aus >>=2 und /=4 den gleichen Maschinencode erzeugen. Aber man muss sich ja nicht darauf verlassen, wenn man's "besser weiss". avr-gcc 3.4.1 mit OPT=S macht es (s.u.) Ist halt das Problem mit
-
Thread
PIC Port C vor Variablen initialisieren
> kommt das Zitat? ... aus aktuellem mplabx help. hat mich auch gewundert, dass sieht nach avr/gcc aus und funktioniert sogar in xc8 - im simulator überprüft. mt
Apollo M. schrieb im Beitrag #5810219: > ass sieht nach > avr/gcc aus und funktioniert sogar in xc8 Auch für PIC16? Muss ich gleich testen...
-
Thread
Ist Linux das Richtige für mich?
gibts zwar auch verschiedene Compiler. In der Regel verwendet dort aber jeder C/C++-Programmierer den gcc. Dieser gehört bei jeder bekannten Distribution zum Lieferumfang.
aber gewaltig im Irrtum. Ohne Anpassung der Modezeilen ging > da gar nichts (ich rede hier von Optimierung und nicht von 'mir genügt > ein Bild'; ich bin da pingelig ;)). Ich dachte, wir reden hier von der Erstinstallation eines Anfängers. Optimierung kommt später, wenn das System schon läuft.
-
Thread
Rücksprungadresse auf dem Stack schwachsinnig?
Sonst haste 2 mal reti im Programm und der Prozessor würde nur noch Amok laufen. ( Compiler gcc ?) Jogibär
gleichzeitig Bin leider nicht der Crack im__attribute__ Zeugs. Der KOMPLETTE Assemblercode VOM gcc wäre mir lieber. Jogibär
-
Thread
Studio 4.12 mit GCC 3.3.1
falschen Zeile, oft sogar öffnet sich eine andere Datei.... Frage: läuft das Studio nicht mit dem GCC 3.3.1? oder sind die von mir verwedeten Optionen nicht korrekt: Compiler: avr-gcc -g -Wall -O2 -mmcu=atmega64 -c -o dateiname.o dateiname.c Linker: avr-gcc Datei1.o Datei2.o -Wl,-Map=Datei.map
Regel zur Folge, dass das Ergebnis ziemlich vom Quellcode abweicht. Wenn Du das ganze ohne Optimierung compilierst (also mit -O0), dann sollten solche Abweichungen nicht auftreten. Gruß, Michael
-
Thread
AVR: OCRx1 Werte automatisch berechnen
Falk Brunner schrieb im Beitrag #3201008: > [[Festkommaarithmetik]] Übrigens beherrscht avr-gcc Festkommaarithmetik und Typen wie accum oder short fract etc. Wäre bestimmt ein Update von "Festkommaarithmetik" wert!
gibt optimierte ALgorithmen für (saturierte) Operationen. Insgesamt gibt es 16 Typen http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
-
Thread
Assoziativität Links-Rechts
> parallel ausführen würde. Hmm ... Das geht nur bei "echten" Funktionen ( "attribute(pure)" im GCC ). Da kann der GCC z.B a()+a() durch 2*a() ersetzen. Automatisches Parallelisieren von Funktionen gibts afaik aber eh nur bei Sprachen, bei der Funktionen schon per Definition keine Seiteneffekte
keine Seiteneffekte hat. Was dem Compiler auch ohne Kenntnis des Codes dieser Funktion bestimmte Optimierungen in aufrufendem Code ermöglicht, die sonst nicht möglich wären. Mit Parallelisierung hat das nichts zu tun.
-
Thread
Keine Warnung wenn Prog. Speicher voll?
http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Optimize-Options.html#Optimize-Options beschreibt mögliche Parameter für die Optimierung. -Os -fweb -frename-registers -ffast-math dürfte so ziemlich den kompaktesten
-
Thread
Arduino Uno R4: Besonderheiten und Abhilfen
nützt die schnellste CPU nichts. Wie immer gilt. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
nein - ist sie nicht > > Wie immer gilt. > > https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung Vielen Dank für den Link, lese ich ersteinmal. Viele Grüße Kai
-
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
Long(Int) -> ASCII Umwandlung
(ulong2ascii dann natürlich). sonst für leute die noch an anderen sachen zum thema coding/optimierung interresiert sind kann ich nur die vorher schon erwähnte seite http://www.df.lth.se/~john_e/ und noch www.hugi.de (bes. coding constest und die special edition) empfehlen! marcel
programmierung eines z.b. komprimierungsalgorithmus ist es schon nicht schlecht hier und da ein paar gute optimierungen selbst zu schreiben. da kann man schon etwas zeit sparen. also ich finde das bringt auch was bei 'großen' cpus, also die von pcs, auch schon gut was
-
Thread
In einem Assembler Programm für Division auf C ausweichen!
allemal. Wie auch immer. Nochmal zum Mitmeißeln: Die Divisions-Routinen kommen aus der Bibliothek des GCC, dort liegen sie in Assembler vor. Die kannst du problemlos herauskopieren und einbauen, evtl. ist aber etwas Anpassung nötig.
Hochsprachcompiler gibt. Wenigstens Gugel solltest du allerdings bedienen lernen, wenn du da mal "avr-gcc register passing" eintippst, kommst du im dritten Link auf: http://www.roboternetz.de/wissen/index.php/Avr-gcc/Interna das dir das ABI von AVR-GCC (sogar auf deutsch) beschreibt. Das zugehörige
-
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
AVR-Toolchain optimization + volatile = Problem
wundersame Weise verschwand. Ich verwende den AVR Toolchain von Atmel: [code] C:\avrtoolchain\bin>avr-gcc --version avr-gcc (AVR_8_bit_GNU_Toolchain_3.4.2_939) 4.7.2 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty;
übersetzen lässt, erzeugen folgende Compiler mit -Os -mmcu=atmega168 exakt den gleichen Code: - avr-gcc 4.3.3 (WinAVR-20100110) - avr-gcc 4.6.3 - avr-gcc 4.7.2 - avr-gcc 4.8.0 - avr-gcc 4.9.2 Wie in 99% der Fälle liegt das Problem /nicht/ im gezeigten Code — bestenfalls evtl. darin, daß durch das
-
Thread
AVR: Delay Time stimmt nicht
eingestellt, dadurch wird eine andere Taktquelle benutzt. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 Die Optimierung im Compiler muss eingeschaltet sein.
8.0- MHz; Start-up time:1k + 4.1ms ) Falk Brunner schrieb im Beitrag #3033875: > Die Optimierung im Compiler muss eingeschaltet sein. Steht auf -Os
-
Thread
Overhead struct-pointer
.] } [/c] Muß ich für diese "Verschönerung" einen Preis bezahlen oder optimiert der Compiler (GCC für ARM Cortex M3) die konstanten Zeiger-Dereferenzierungen immer weg? Viele Grüße W.T.
#5193596: > Muß ich für diese "Verschönerung" einen Preis bezahlen oder optimiert > der Compiler (GCC für ARM Cortex M3) die konstanten > Zeiger-Dereferenzierungen immer weg? ich kenne zwar ARM nicht, aber auf x68 wird es sogar mit dem Referenz teilweise besser, eine Verschlechterung konnte ich
-
Thread
C Ringspeicher
-Wl,--gc-sections compiler.c.elf.cmd=avr-gcc [/c] PS: Dieses kommt auch zum Einsatz: (bevor noch Fragen kommen) [c] compiler.warning_flags.all=-Wall -Wextra [/c] Andreas M. schrieb im Beitrag #6567561: > "-funit-at-a-time" -funit-at-a-time
ISO C99 Abschnitt 6.5.9.6 Pointervergleiche gilt auch für Funktionspointer. Es gibt darüber in den gcc, clang mailinglisten diverse Diskussionen. Der Compiler wird es bei Optimierung so lösen, dass er an der Symboladresse der zweiten Funkion ein Sprung auf den Einsprungpunkt der ersten legt oder ein
-
Thread
Array-Speicher nach LCD-Ausgabe wieder freigeben
buffer überschreibt, sondern alles einzeln > ablegt... Das tut er ja. Allerdings ist der avr-gcc eigentlich ein Compiler für eine Von-Neumann-Architektur. Mit Harvard tut er sich schwer (getrennte Speicherbereiche für Flash/ROM und RAM). Deshalb kopiert der Startup Code beispielsweise erstmal den
"); DOG_writetext(Buffer,1,0);[/C] Habe ich was falsch verstanden? Ich meinte mich auf AVR-GCC-Tutorial und die obigen Ideen berufen zu haben, kann aber sein, dass ichs falsch verstanden habe?
-
Thread
avr-gcc nutzt kein "Store Indirect and Post-Inc."
Hallo, ich verstehe gerade den avr-gcc nicht. Ich habe einen Attiny841 und möchte folgendes ausführen: [c] // highest_byte_in_value wird berechnt, ist dann 0 bis 3. switch (highest_byte_in_value) { case 3 : base64_buffer[current_buffer_element
schrieb im Beitrag #5646369: > Erst mal frischen Compiler besorgen: > http://blog.zakkemble.net/avr-gcc-builds/ Gemacht, der Code wird tatsächlich etwas schlanker. Nur das "Store Indirect and Post-Inc." wird immer noch unelegant umgangen. Compiliert habe ich hiermit: [code] avr-gcc-8.2.0-x64-linux
-
Thread
Problem bei Erweiterung des ARRAY_SIZE(x) Hilfsmakros
durchziehst! Als Compiler bzw. Entwicklungsumgebung verwende ich gerade meinen Arduino. Ansonsten immer GCC der mit dem Atmel Studio mitgeliefert wird. Ich weiß aber nicht genau ob diese das "const" als Optimierung ansehen? Fakt ist, dass beim Kompilieren (Arduino) die größe des Programms mit den "const
> Als Compiler bzw. Entwicklungsumgebung verwende ich gerade meinen > Arduino. Ansonsten immer GCC der mit dem Atmel Studio mitgeliefert wird. > Ich weiß aber nicht genau ob diese das "const" als Optimierung ansehen? Dann sparst du durch das const erst mal kein RAM ein. Hier wird const so
-
Thread
Auf element außerhalb array zugreifen
> > int main(void) { > array[42] = 5; > 42[array] = 5; > *(array+42) = 5; > } GCC 7.3.0 (MingW) warnt übrigens mit -Wall sehr wohl "subscript out of bounds", das nur der Vollständigkeit halber. Daß er ohne -Wall nicht warnt, bedeutet nicht, daß er es nicht für unerwartete Optimierungen
eine GCC-Erweiterung ist.
-
Thread
ATmega48 Programmspeicher zu klein?
Peter Dannegger schrieb im Beitrag #3570763: > Dann hast Du die falsch Math-Lib gelinkt oder Optimierung aus. Das bei dir nur 49.4% belegt sind ist sehr wunderlich. Wie kann ich den überprüfen welche Math-Lib ich gelinkt habe bzw. wie kann ich sie dann ändern? Mit der Optimierung habe ich auch
Welches AVR-Studio benutzt Du denn? In den Compileroptionen muß ein -lm stehen. Die Optimierung sollte -Os sein.
-
Thread
Chip45 Bootloader-Debugging, Mega128 mit AVRStudio und JTAG
Flash aber tatsächlich ab F800. Ich dachte zuerst, es handelt sich dabei um folgendes Problem: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19087 Das sollte doch behoben sein? Oder habe ich irgend etwas übersehen? Etwas ratlose Grüße, Bernhard
Controllertyp und Taktfrequenz. Das erklärt halt nicht, warum ein Teil des Codes bei eingeschalteter Optimierung nicht übersetzt wird, eine Endlosschleife, in der einiges passiert. Womit hast Du denn das Paket übersetzt? Gruß, Bernhard
-
Thread
Delay mit Timer
[[AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR]]
lucas schrieb im Beitrag #4423589: > Die Delay Routinen die in der Lib vom Gcc mit dabei sind. > Das haut bei mir irgendwie nicht hin. Dann benutzt du sie entweder falsch (z.B. keine Konstante übergeben), du hast F_CPU falsch oder gar nicht definiert oder du hast die Kompiler-Optimierungen
-
Thread
ARM7 Bit setzen mit Konstante oder Variable
Wen es interessiert Mein gcc macht aus den folgenden Anweisungen folgenden Code. [CODE] // gcc mit Optimierung auf Speed #define Mask #0x00000001 FIO0SET = 0x00000001; 0x000052C0 E3E03103 MVN R3,#0xC0000000
einfach mit Instruktionen zählen:). Wenn es aber so ist wie du schreibst, dann bekommt die Ausgabe des gcc doch wieder einen Sinn. Beste Grüsse Geri
-
Thread
warning: differ in signedness, -fsigned-char
laß mich raten ;-)) der neue AVR GCC ;-)) Du ließt strings aus dem ROM mit unsigned char obwohl es const char sein sollte. Der aktuelle GCC meckert das an.
lcd_char (*lcd_string++); // string an LCD Ausgabe } } [/c] nu kannste [c] lcd_puts ("WIN_AVR GCC"); [/c]
-
Thread
FLTK statisch linken
Normalerweise ist das ganz einfach, wenn man alles statisch linken will. Man macht einfach "gcc -s" statt "gcc", fertig. Solange man die Libs mit -lirgendnelib angegeben hat, und nicht mit libirgendnelib.so oder libirgendnelib.a, nimmt es dann jenachdem ob man -s angegeben hat oder nicht die .
> Normalerweise ist das ganz einfach, wenn man alles statisch linken will. > Man macht einfach "gcc -s" statt "gcc", fertig. Maja, nicht ganz. Man muss schon auch von sämtlichen verwendeten Libs eine statische Version installiert haben. Und in manchen Fällen, wie es z.B. oft bei openssl gemacht
-
Thread
Arduino Codegröße
minimale Codegröße optimiert. Wie sieht dein Programm aus? Spaghetticode oder viele Funktionen? [[AVR-GCC-Codeoptimierung]] Hinter der Arduino-IDE steckt der avr gcc, also sind viele der Vorschläge machbar, wenn gleich nicht immer sinnvoll.
> etwas zu komprimieren? soweit ich weiss ja. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung preferences.txt
-
Thread
GCC Präprozessor soll Anzahl der Einsen in einem Byte ermitteln
Laufzeit fix ist. Dann verwende __builtin_popcount. Wenn der Wert zur Compilezeit bekannt ist, wertet GCC das aus und ersetzt es durch die entsprechende Konstante. Da Makro oben von A.K. müsste auch gehen; gcc sollte den entstehenden recht komplexen Ausdruck zu ner Konstanten falten (falls ihm nicht irgendwelche "Optimierungs-Kapriolen" zu Kopfe steigen). Johann
-
Thread
Struktur Variablen hintereinander im Speicher ablegen?
Dafür hat jeder Compiler was eigenes. Beim GCC (in dessen Forum du dich ja befindest) heißt das __attribute__((packed)). Ist aber generell keine gute Idee, da es erstens unportabel ist und zweitens das Alignment ja aus gutem Grund existiert
andere Optimierungs-Optionen, bei denen das evtl. anders ist. Es ist halt auch prozessorabhängig. > Da das ausserdem ein Array von 128 dieser Strukturen betrifft, ist das > doch ne riesen speicherverschwendung
-
Thread
gcc: variable an funktion übergeben
Moin Leute, ich habe follgende Funktion geschrieben um meinen Servo via PWM zu steuern. [c] void set_servo(int pos) { PORTB |= (1<<PB1); _delay_us( pos );//geht nicht //_delay_us( 1500 );//geht //_delay_us(serv_R);//über #define gesetzt, geht auch PORTB &= ~(1<<PB1); _delay_ms( 15 ); // ist nicht kritisch } [/c] wenn ich set_servo(2000) aus der main rufe, klappt es nicht. Beim debuggen kommt aber die 2000 in pos richtig an. Wenn ich in der set_servo den befehl "_delay_us( 1500 );" verwende anstatt "_delay_us( pos );" geht es Beim flash ist mir aufgefallen
-
Thread
Datentypkonvertierung uint16_t zu double
: > Compiler: ARM Yagarto Ist der nicht völlig veraltet, mit dem letzten Update von 2012 und der GCC Version 4.7.2? Von ARM selbst gibt es eine GCC Distribution der Version 6.3.1 und die wird laufend aktualisiert: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
Compiler: ARM Yagarto > Ist der nicht völlig veraltet, mit dem letzten Update von 2012 und der > GCC Version 4.7.2? Never touch a running system. :)
-
Thread
C++ Mc gcc Object löschen
nicht vollständig spezifiziert. Es wird aber in der Praxis nicht genutzt. Ist auch egal, denn der GCC für ESP kann das bestimmt nicht.
für > verschiedene MCUs zu analysieren: Mit objdump geht das auch lokal. Schalte mal die Optimierungen ein!
-
Thread
Arduino - Speicheroptimierung?
> Speicheroptimierung Vor Optimierung erfolgt erst mal Profiling um rauszufinden, wo wann warum wieviel Speicher verbraucht wird. Darauf basierend kann dann u.U. Optimierung erfolgen. Als erstes findest du also heraus, selche Komponenten
Binäre Sketchgröße: 29.376 Bytes 48 Byte im flash verloren und 2 Byte im data verloren, tolle Optimierung.
-
Thread
SPI Compilerunterschiede
abe mal eine grundsätzliche Frage. Mein Problem ist, das ich ein Projekt erstellt habe mit dem avr-gcc (GCC) 3.6.?. Das gleiche versuche ich momentan mit dem avr-gcc (GCC) 4.2.2 zu kompilieren, aber es klappt nicht so ganz. Also es werden keine compiler errors generiert aber es scheint einen unterschied
dein SPI haben. Ich vermute du hast einen Fehler im Program (undefined behavior), der mit dem 3er GCC zufällig "das Richtige" macht. Oder du stolperst über anderes Timing durch geänderte Optimierung... Kompilier mal mit "-Wall -Werror" in den Compileroptionen. Wenn da keine Warnings mehr kommen
-
Thread
return uart_rx() | (uart_rx() << 8);
Falk B. schrieb im Beitrag #4871653: > Premature optimization is the root of all evil. Mit Optimierung hat das nix zu tun, eher mit "Know your Language!"
Johann L. schrieb im Beitrag #4871869: > Mit Optimierung hat das nix zu tun In der Vorstellung mancher Menschen schon: "Wenn ich möglichst wenig Code schreibe, dann ist das optimal. Also quetsche ich möglichst viele Anweisungen in eine Zeile, anstatt
-
Thread
AVR-CC
4) Siehe http://www.mikrocontroller.net/avr-gcc-faq.htm Andreas
long long uint64_t; typedef int16_t intptr_t; typedef uint16_t uintptr_t; int ist also (bei avr-gcc) 16 bit breit, aber geht von -32768 bis +32767. Das müsste also ein unsigned int sein.
-
Thread
Kann man prozessorinterne Datenregister benutzen?
Mach dir keine sorgen. Wenn es nur eine lokale Hilfsvariable ist, und du die Compilier-Optimierung nicht deaktiviert hast, wird der Compiler die Variable eh nur in einem Register anlegen.
>Kann man AVR-GCC benutzt von sich aus bevorzugt Register. Man sollte dem gcc in der Regel diese Freiheiten lassen, meist weiß er sehr gut was sinnvoll ist. Tatsächlich kann man irgendwie auch feste Register erzwingen
-
Thread
PIC 18f452 Hilfe Bei 1. C programm mit sdcc
Beim MCC18 wird lediglich _eine_ der vielen Code-Optimierungen nach einiger zeit deaktiviert, nicht alle. "Procedural abstraction", soweit ich das noch in Erinnerung habe. Alle anderen Optimierungen bleiben verfügbar. Grüße, Chris
bei "-O2" (optimize for speed) aber etwas langsamer als bei "-Os" (optimize for size). Welche Optimierungen in den jeweiligen Stufen durchgeführt werden steht im User Manual des GCC.
-
Thread
liB_AT91SAM7A3.h bläht binfile riesig auf
Hallo, ich benutze GCC 4.1.1 in der YAGARTO Zusammenstellung. damit programmiere ich einen ATMEL ATSAM7A3. ATMEL hat da einige Beispiele, und auch ne nette lib mit Systemfunktionen. lib_AT91SAM7A3.h Ich benutze keine
inline definiert und nun klappts auch mit dem Nachbarn. Hier noch was Lesestoff dazu : http://gcc.gnu.org/onlinedocs/gcc/Inline.html Gruß, Andreas