-
Thread
GCC: Konstant oder nicht konstant?
Auf godbolt zeigt auch ein gcc 8.3 das gleiche Verhalten wie der 5.1 (und auch Versionen dazwischen). Oliver
Oliver S. schrieb im Beitrag #5775635: > Auf godbolt zeigt auch ein gcc 8.3 das gleiche Verhalten wie der 5.1 https://godbolt.org/z/l7550g Bei mir zeigt der GCC in beiden Versionen das optimierungsabhängige Verhalten.
-
Thread
genaues Delay in gcc
benötigten Zeit überhaupt nichts. Wenn du Interrupts laufen hast, dann schon. Und wenn du die Optimierung durch den Compiler vergisst, dann erst recht. > Da der TO aber eine Abweichung bei 250ms delay-Zeit mit einen Oszi > messen kann, liegt diese wohl eher im Bereich einiger %. Also ist da was
Overhead für einen Timer nicht lohnt. Mit einem Patch, den Eric Weddington gern auch in den AVR-GCC hinein bekommen will, kann der Compiler eine eingebaute Funktion __delay_cycles anbieten, bei der er in der Tat in der Lage ist, zyklengenaue Verzögerungen für praktisch beliebig kleine oder große
-
Thread
GCC -fstack-usage
Servus miteinander, Um den benötigten Stack abschätzen zu können habe ich mich mal mit der GCC-Option -fstack-usage beschäftigt. Der GCC generiert dann zu jeder .o-Datei eine .su-Datei, in der zu jeder Funktion die Stackbenutzung angegeben wird. z.B. bekommt man für ein leicht abgeändertes
printf("The answer to everything is %d\n",i); return 0; } [/c] mit [code] arm-none-eabi-gcc -O0 -fstack-usage -c main.c [/code] eine main.su mit dem Inhalt [code] main.c:3:5:magic_number 24 static main.c:14:5:main 16 static [/code] Mal abgesehen davon, dass der
-
Thread
C++ Compiler für ARM (STM32 M0-M3)
nachher nochmal versuchen dort einzubinden. Gibt es eigentlich gravierende Unterschiede zwischen gcc und Mikroe? Kann gcc irgendwas mehr was mikroe nicht kann? Bugs haben sicher sowieso immer alle..irgendwo..
Chance, dass ein Bug behoben wird, da GCC/ARM weltweit sehr oft genutzt wird. Bei der Optimierung dürfte ein deutlicher Unterschied bestehen. > Kann gcc irgendwas mehr was mikroe nicht kann? Ich kenne microe nicht, aber bei der Unterstützung
-
Thread
Einführung in ASM auf STM32F4
> GCC Inline Assembler Das ist ja nun die absolute Hilfskruecke. Der GNU-Assembler heisst *gas*.
Du musst in der Assemblerprogrammierung schon ziemlich gut sein, um den GCC zu schlagen. Das heißt nicht, dass der vom GCC erzeugte Code nicht weiter optimierbar ist, aber wenn du frisch mit Assembler beginnst, wirst du wirst einige Zeit dafür investieren müssen. Evtl. gelingt
-
Thread
LPC2148 ARM7 Interruptroutine beendet nicht richtig
den Saurier und macht es eurer > Ansicht nach Sinn mal umzusteigen:)? Fall ja, auf was bitte? > gcc finde ich im Prinzip für meine Bedürfnisse schon brauchbar. GCC Varianten gibts reichlich, als freie Version beispielsweise Yagarto. Kostenfrei kommerziell mitsamt IDE von Atollic, wenn man kein
übersetztem Code ist für manche Überraschung > gut. Auch dies könnte so ein Effekt sein. Dann kann ich Optimierung mal gleich vergessen - oder? >GCC Varianten gibts reichlich, als freie Version beispielsweise Yagarto. >Kostenfrei kommerziell mitsamt IDE von Atollic, wenn man kein C++ >braucht. Als reine
-
Thread
Compiler optimiert Code weg, was er nicht sollte
aufgerufen werden. Das würde sich entschärfen, wenn die Optimierung ausgeschaltet wird. Klappt eine schnelle Ausgabe eines "Hello World" Textes mit eingeschalteter Optimierung? Wieso wird in lcd_hex() lcd_write() statt lcd_putc() benutzt? Sowas macht mich
Assembler-Listing erzeugen lassen kannst und diese *.LSS Datei angeben lönntest. Dann sieht man welchen Code GCC aus deinem Quelltext produziert hat.
-
Thread
Hartnäckiger Heisenbug auch ohne Optimierung, am PC (x86_64)
das sein dass es doch die Programmausführung massiv beeinflußt? Zum Kompilieren verwende ich: gcc -Wall -D_REENTRANT -lm -pthread -O0 -o logger logger.c -lrt
war schlicht Call bei value angewendet wo tatsächlich Call by reference gemacht wird. Da könnte der GCC eigentlich eine Warnung ausgeben weil hier eine Race Condition vorliegt, aber bisher macht er das nicht.
-
Thread
_delay_ms(1) ungenau!
braucht. Damit kannst du ausrechnen wie lange soetwas dauert- wegen dem delay: Hast du die Optimierung eingeschaltet?
ich zuhause bin werd ich das ganze testen mit einer variable > statt einem literal und werd mal optimierung suchen! Ganz schlechte Idee.
-
Thread
Nucleo board 401 verliert Programm
nur in den RAM geschrieben wird... Der Haupt-Unterschied zwischen Debug & Release sind die Optimierungen. Man kann auch Relase-Builds debuggen und Debug-Builds ohne Debugger ausführen.
. Release-Mode nicht. Alle mir bekannten IDE's nutzen das als Unterscheidung ob ohne bzw. mit Optimierungen und Debug-Informationen kompiliert wird (also z.B. ob -g -O0 oder -Os -DNDEBUG an den GCC übergeben wird). Was ist denn "Debugger-Freundliches" Flashen? Ich übergebe an den JLink.exe die Option
-
Thread
Zähl-Algorithmus
unsicheren Kopierfunktion die sich auf die 0-Terminierung verlässt. Dann noch Pointer Arithmetik. Die Optimierungen mit der 0-Kette und dem angepassten br bringen wenig, machen den Code dafür größer und kosten Eleganz. Aber trotzdem Lob (ernst gemeint). An den Details kann man ja noch feilen.
einem i5-6267U mit 2,90 > GHz. Auch interessant, hier mal mit einem 2,4Ghz ARM (RK3588). [c] gcc time ./test 8 2 25 75 o 563853888 Kombinationen gefunden real 0m5,894s user 0m5,873s sys 0m0,020s gcc -O1 time ./test 8 2 25 75 o 563853888 Kombinationen gefunden real 0m3,217s
-
Thread
Software Zertifizierung
sich diese aussage auf eine eingefrorene version des Compilers. Und oft wird verlangt Compiler-Optimierungen auszuschalten. Also prinzipiell kann man den Gcc zertifizieren, da seine Sourcen Offen liegen sollte das sogar einfach möglich sein. Aber Vorsicht, es gibt gcc-Varianten die verhalten lt
? Nein, GCC reicht nicht.
-
Thread
Basic-Interpreter auf einem AVR
Print und mit -O3 und nicht mit -Os. Wenn es um speed gehen soll dann sicherlich mit allen optimierungen und nicht der size. lg roman
@Roman Also die Optimierung ist doch mal ne Erwähnung Wert :-)) Ich werd das mal übernehmen und in mein unverständliches Kauderwelsch an Präprozessor-Anweisungen mit integrieren :)) Was mir zum Thema Speed-Optimierung
-
Thread
AVR-Studio 6 kompiliert fehlerhaft
Bei den Delay Funktionen muss man aufpassen, dass die Optimierung eingeschaltet ist - sonst gibt das viel zu lange Wartezeiten. Mit Optimierung kann es passieren das einige variablen ganz wegoptimiert werden und mit den Debug Funktionen schwer zu fassen sind
beim Debuggen immer Optimierungen ausschalten! Und wenn ein Breakpoint nicht greift, dann hat GCC ganz einfach die Zeile wegoptimiert. Wenn Du in ein Projekt reinschreibst: unsigned char counter; counter = 1; counter
-
Thread
Interrupt Verständnis Frage
mit dem "volatile". Das denke ich auch. Außerdem solltest Du bei Gelegenheit mal ne neue AVR-GCC-Version installieren. SIGNAL ist veraltet!
ihren Wert acuh ändern, ohne dass du das im Code ablesen kannst. Halte dich also mit möglichen Optimierungen erst mal etwas zurück.
-
Thread
Ticks für Optimierung von C-Programmen in ASM
Ich muss ein paar Interrupt Routinen von C nach Assembler konvertieren, da die Ausführungszeit zu lang ist (soll bei mir kleiner 300 Takte sein). Dabei ist mir aufgefallen, dass der C-Code (gcc, -Os) schon recht gut optimiert ist. Welche Tricks gibt es, um den ASM Code trotzdem noch weiter zu optimieren? Was mir eingefallen ist: a) 24-bit Datentypen anstelle von 32-bit Datentypen benutzen Ist oft möglich und spart bei jeder Operation ca 1/4. b) Register über längere Zeit gültig halten, bzw. besser ausnutzen Bringt immer wieder mal ein paar Takte. GCC nutzt nur die untere
-
Thread
GCC, Word statt Byte Zugriffe, Optimierung?
Erst mal sorry für den komplizierten Betreff, aber mir fiel nix besseres ein. Ich erleichtere mir oft das Layout, indem ich die Port-Pins nach gutdünken verteile und nachher in Software entsprechend darauf zugreife. Das funktioniert sowohl in C als auch in Assembler bestens (solange man natürlich nichts zeitkritisches vor hat). Mir ist nun beim GCC aufgefallen, daß bei der Umsetzung unnötigerweise einige Byte-Operationen als Word ausgeführt werden. Zum Beispiel: void set_outputs(uint8_t data) { PORTC = (PORTC & 0xF7) | ((data & 0x01)<<3); PORTD = (PORTD & 0x03) | ((data & 0x7E)<<1
-
Thread
cycles bei Rechnung mit float-Zahlen
Simulator im AVR Studio verwende, kann ich ja den cycle counter verwenden. Wenn ich allerdings die Optimierung einschalte, kann ich nicht mehr durch das Programm laufen und die benötigten cycles ablesen. Jetzt meine Frage: Wie wirkt sich die Optimierung in etwa aus? Das hängt sicherlich stark von dem
offenbar (mindestens) zwei Bereiche sinnvoll, falls es in Fixpunkt gemacht werden soll. Zu den Optimierungen: debig-informationen werden mit -g... auch zusammen mit -O... erzeugt (zumindest macht GCC das so). Speziell wirde -O1 konzipiert, um bei optimiertem Code halbwegs vernünftig debuggen zu können
-
Thread
Optimierungs einstellung des GCC (LINUX) verändert verhalten
bekomme ich für "friendly_name" keine vernünftigen Werte (Überprüft im Debugger). Schalte ich die Optimierung aus, bekomme ich lesbare Namen. Füge ich bei eingeschalteter Optimierung die Zeile [c] cout << friendly_name << endl; [/c] hinter gupnp_device_info_get_friendly_name ein, bekomme
Lies Dir mal das hier durch: http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Debugging-Optimized-Code.html
-
Thread
Optimierung: Löst gcc oder AVR struct- Adressen auf
Hi zusammen, kurze Frage: Wenn ich im Programm mit statischen structs arbeite und ich auf die struct- Elemente ohne Pointer zugreifen will, wer löst die Adressen der Elemente auf? Kann das der avr-gcc schon beim Compilieren oder muss der uC dies zur Laufzeit berechnen ? Gruß und Dank Gerd
-
Thread
uint8_t cast to int8_t
das Problem doch eher vor dem Computer zu sitzen. Es gibt keine fehlerfreie Software, aber das ein gcc einen einfachen signed-Vergleich versemmelt, ist doch eher unwahrscheinlich. Da du aber keine aussagekräftige Sourcen zeigst, ist die ganze Diskussion müßig. Zeig ein compilierbares Beispiel mit
und den Wert als char plus uint8_t. Da hätte ich jetzt von IAR mehr erwartet. (Selbst VSCode mit GCC zeigt die Datentypen int8_t, uint8_t korrekt an....)
-
Thread
_delay_us macht eine ms
Kein Plann schrieb im Beitrag #2971935: > Komisch an der Sache ist, schalte ich die Optimierung ein, funktioniert > das Display nicht und der Pin bleibt auf Low. Und ohne Optimierung bekanntermassen nicht das Delay. Was folgt daraus? Du hast kein Problem mit dem Delay, sondern mit dem
darauf? ;-) Ne, es werden nur 2 Stück ausgegeben. Beide weisen mich darauf hin das Delay nur mit Optimierung funktioniert.
-
Thread
Arduino: Ist boolean intern als Bit oder byte (char) organisiert?
Der avr-gcc Compiler, den Arduino verwendet, belegt ein ganzes Byte für boolean Werte.
. Schuld ist also nicht der gcc, sondern das vieler Hinsicht unsägliche Grundkonzept von C. Auf der anderen Seite bemüht sich der gcc allerdings durchaus, mit Bitoperationen zu arbeiten, wenn das Zielsystem solche anbietet. Der
-
Thread
Build/Rebuild problem
Ich habe diesmal eine "merkwürdigkeit" beim kompilieren meines projektes mit optimierung in avrstudio bemerkt: Ich habe in meinem projekt eine struktur, die quasi überall im code als globale variable verwendet wird. Wenn ich zu dieser struktur nun elemente hinzufüge, ist gcc offenbar
http://gcc.gnu.org/lists.html Die Macher des GCC sind dort. Nicht hier.
-
Thread
AVR-GCC: Zugriff auf Bytes in uint16, uint32.
Konstrukten direkt auf die Register zuzugreifen, in > denen die Werte liegen? Der Quellcode vom GCC ist öffentlich - niemand hindert dich.
Letzte Woche kam ja raus, dass die Optimierung hinter -fsplit-wide-types den Code auch mal aufbläst statt ihn zu reduzieren (ist als Bug in Arbeit aber noch ohne Lösung). Dieser Teil von GCC ist mit 4.3 neu hinzugekommen, vorher gab's das nicht
-
Thread
effiziente Initialisirung mit Nullen
Entwickler der glibc gefragt. Er muss > dann memset anders implemtieren. memset ist im Falle von gcc im Compiler implementiert, wie ein Großteil der Standard-Blibliothek. Siehe http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Other-Builtins.html#Other-Builtins > Die Stringbefehle der CPU werden kaum
Peter II schrieb im Beitrag #2743994: > Und wenn gcc hier diese befehle bei memeset verwendet, dann vermute ich > ganz stark das jemand dieses expliziert von hand codiert hat. /Alles/ im GCC hat jemand explizit von Hand codiert. ;-) Oder was dachtest
-
Thread
Kann man folgenden Code platzsparender schreiben
4.7.2 oder höher) bekommt man hier: http://sourceforge.net/projects/mobilechessboar/files/avr-gcc%20snapshots%20%28Win32%29/
vielleicht wären ja solche Artefakte (zusammen mit der ja offenbar > insgesamt deutlich mieseren Optimierung) endlich mal ein Anlass für > einen Upgrade der Toolchain? Ja, damit hadere ich schon die ganze Zeit, die Lösung mit aktuellerem GCC und Studio 4.18 wäre eine gute Alternative um das überladene
-
Thread
Right-shift bei msp430
%#x\n", val1 ^ (val2>>4)); return 0; }[/c] welches so kompiliert wird: [code] msp430-gcc -mmcu=msp430g2553 -O0 -g -W -Wall -std=c99 -c -o main.o main.c msp430-gcc -mmcu=msp430g2553 -O0 -g -o firmware.elf main.o [/code] Wenn ich dieses Programm nun auf http://www.msp430emulator.com
Allerdings wär man hier mit CLRC/RRC/RRA/RRA/RRA besser bedient. Vielleicht denkt der Compiler bei Optimierung daran.
-
Thread
Position von Code + Variablen in Binary
Werner M. schrieb im Beitrag #3980641: > Was ist "der Linker"? Nachdem das Forum hier "GCC" heißt, wirds wohl auch der GCC Linker sein. Also "ld" um ihn mal zu rufen... > Warum sollten verschiedene Linker die Variablen > nicht verschieden ablegen? exakt das war meine Frage. Gibt es
im Beitrag #3980650: > Werner M. schrieb: >> Was ist "der Linker"? > > Nachdem das Forum hier "GCC" heißt, wirds wohl auch der GCC Linker sein. > Also "ld" um ihn mal zu rufen... > >> Warum sollten verschiedene Linker die Variablen >> nicht verschieden ablegen? > > exakt das war meine Frage
-
Thread
ATMEGA128 und for Schleife
Code einfach nicht mehr, weil sie nicht benötigt wird. Debuggen sollte man immer *OHNE* Optimierung.
überhaupt sinnvoll läuft (Stichwort Timing) - auch ohne Optimierungen debuggen, da das einfacher ist.
-
Thread
Mit AVR Studio 4.15 und GCC debuggen
Hallo zusammen, hab mir das Net-IO-Board von Pollin zusammen gelötet und die Software von Ulrich Radig mit dem AVR-Studio aufgespielt. Funktioniert alles wunderbar. Um die Software an meine Bedürfnisse anzupassen, will ich mit dem AVR-Studio mal durch den ganzen Quellcode steppen. Leider kommt es hierbei zu äußerst seltsamen Effekten. Beispiel: Datei 'main.c' bei Aufruf von usart_init(BAUDRATE); Es wird die Datei udp_lcd.c aufgerufen, die Eingabemarke springt in die Funktion void udp_lcd_init (void) auf die abschliessende geschweifte Klammer der Funktion. Das obwohl ich alles was mit
-
Thread
Probleme mit WINAVR-20070525
Funktion. Der wesentliche Unterschied alter WinAVR <-> neuer WinAVR (2007) ist die sehr erweiterte Optimierung des moderneren GCC. Ein typ. Fall ist z.B. das ersatzlose Streichen von Leerschleifen, die manche Leute gerne als Ersatz für die Wartefunktionen (_delay_ms,...) benutzt hatten. Vielleicht kannst
los, dass ich mir das Leben mit dem AVR nur unnötig schwer mache, weil ich die Möglichkeiten des AVR GCC nicht nutze. Bis dann Marco
-
Thread
Verständnisfrage: Woher kennt gcc den AVR32?
geben? Bei den AVRs gibt es ja avr-gcc...
wegen des dateinamens.. nahm ich an das avr-gcc mehr/besonders ist gegenüber anderen gcc's für target xy
-
Thread
Digilent Nexys3 (Spartan6), Microblaze und die Interrupts
mikroblaze gcc-kompilerschalter -s (Optimierung auf size) aktivieren
Bit Wurschtler schrieb im Beitrag #4500639: > mikroblaze gcc-kompilerschalter -s (Optimierung auf size) aktivieren Mit Optimierung auf size sind es leider noch 2984 byte.
-
Thread
Klasse Optimierung Laufzeit und Speicher CPP
Harald K. schrieb im Beitrag #7650748: > Premature optimization is the root of all evil. Optimierung auf Lesbarkeit keineswegs. Und das ist hier durchaus relevant.
ähnliches: ein int besser als Rückgabewert statt als Referenz. Oder gar ein struct mit 2 ints (kann avr-gcc in Registern halten).
-
Thread
Verständnis AVR Interrupts Gesperrt
auch doofe Compiler wenn sie optimieren, z.B. bei Inlining oder Loop Unrolling. Insbesondere bei Optimierung auf Geschwindigkeit.
könnte ich dem GCC das schon relativ problemlos beibiegen. Aber der Rest ist Sackstand. Letztlich liefe es darauf hinaus, das halbe Programm doch wieder in Asm zu schreiben (mit der unsäglich grottigen gcc-Inkarnation
-
Thread
MPLAB X Broken Breakpoint
Problemen (broken Breakpoints), nicht der Simulator. Einen Versuch ist es aber wert. Die Optimierungen im Compiler sollte man zum Debggen auch abschalten.
Andreas S. schrieb im Beitrag #3680338: > Was meinst du, > Gast, mit "Optimierung abschalten"? Wo mache ich das? Unter "Project properties" --> XC16(Global options): XC16-gcc --> Dort unter "Option categories": Optimizations --> "Optimization level" auf 0 setzen. (
-
Thread
memcpy funktioniert nicht
gab's doch mal was... Bug 53016 - memcpy optimization can cause unaligned access on ARM https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53016 Mit dem schönen Status: RESOLVED INVALID
Programmierer geirrt, nicht der Compiler. Wenn man es partout nicht will, dass der Compiler Optimierungen in Funktionen der Standardbibliothek vornimmt, kann man natürlich immer im freestanding mode compilieren (-ffreestanding) – aber damit verliert man dann /alle/ derartigen Optimierungen auf
-
Thread
sbi und cbi in C
Optimierung einschalten. Bei einigen Ports (z.B. PORTF) geht cbi, sbi nicht mehr.
. Bei dem selben Controller und der selben Optimierungs-Einstellung? Kann ich nur schwer glauben.
-
Thread
Funktionspointer als Parameter
Ja, mit C++. GCC bringt dafuer g++ mit.
optimiert wird, ermöglicht das Inlining über Modulgrenzen hinweg. Mit Funktionszeigern ist diese Optimierung i.d.R. nicht möglich, weil der Wert so eines des Zeigers wesentlich schwerer zu eruieren ist als ein Symbol. Allerdings könnte weak hier dem Compiler / LTO reingrätschen und solche Optimierungen
-
Thread
Bekomme USART nicht initialisiert!
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#UART_initialisieren
Optimierung die Zeiten viel länger sind, als eingestellt.
-
Thread
ATtiny2313 Optimierung Problem
Tut er im großen und ganzen auch aber unter bestimmten Umständen gibt es falsche Werte. Ohne Optimierung läuft dass ganze durch, aber dann bringe ich meine Tastenabfrage nicht unter ;-) Der Fehler tritt z.B. bei hue = 510 auf (0x01FE), dann springt der Wert für blau urplötzlich von 0 auf 0xE3 (Das
volatile, Stack overflow bin ich mir nicht sicher, brauchen Routinen auch Stack? Data bringt der gcc 71 Byte [55%], und auch das Kapseln der CalcValues Routine mit cli()/sei() um Interruptprobleme während der Berechnung auszuschliessen hat nichts gebracht. Der zweite HSB Code (auskommentiert) läuft
-
Thread
Device full
Optimierung auf "-Os"?
>Optimierung auf "-Os"? Das gehört zum Compiler-Aufruf. Sollte irgendwo im Makefile stehen...
-
Thread
AVR Studio 5.0 und 5.1 Version GCC/Toolchain?
Welche Version wird denn bei avr-gcc -v angezeigt?
pre] oder sowas: [pre]avr-gcc (GCC) 4.8.0 20120521 (experimental)[/pre] mit avr-gcc -v kommen etwas mehr Informationen, aber auch daraus ist die GCC-Version erkennbar. Allerdings hatte Atmel auf Bugs durch eigene Patches;
-
Thread
Structs in ISR
> [...] Mein static variablen aber auch? Verwendest Du überhaupt Compiler-Optimierungen? Wenn nicht, sollte ein volatile eigentlich nicht notwendig sein. Aber Du machst die Funktionalität Deines Programms von den Compiler-Optionen (und der Implementierung des Compilers) abhängig
Ich habe volle OPtimierung eingeschaltet
-
Thread
Probleme mit AVR Studio Optimierung bei uint32_t
Programmieroberfläche und compiler? AVR Studio kenne ich nicht mehr (zu lange her), der C-Compiler ist der AVR-GCC, und von dem halte ich nicht soooooo besonders viel.
funktionierts ja wies soll... bloß beim debuggen eben ned, aber wenn ich das weiß, dann muss ich halt die optimierung ausschalten, wenn ich debugge. Vielen Dank für eure Hilfe!
-
Thread
Problem mit Interrupts und Optimierung
Hallo, ich bin nicht ganz fit in GCC, und hätte da mal eine Frage zu Optimierungen. In meinem kleinen Testprogramm möchte ich für Versuchsmessungen die sechs möglich Zustände an einem BLDC-Motor via Taster durchschalten. Eine LED zeigt
scheinbar meinen durch den Taster an PD2 generiert Interrupt weg... In der Simulation laufen alle Optimierungen, aber auf dem Atmega8 nur das unoptimierte Programm O0. Da das spätere Programm etwas umfangreicher seien soll, wäre es gut, wenn die Optimierung laufen würde. Vielleicht kann mir ja jemand
-
Thread
GCC Tutorial
einem Editor schreiben, und dann von GCC compelieren lassen, also wäre dann GCC ein reiner Compiler ? oder kann ich in GCC auch editieren?? Sorry ich blick echt nicht wie ich das Ding aunfassen soll. Die Infos unter AVR GCC hier auf
/wiki/wiki.phtml?title=AVR-GCC_Tutorial&action=edit
-
Thread
ARM (STM32F4) - eigene Interrupt Routine-> umbiegen des Funktionspointer
wenn du gcc verwendest, funktioniert auch ein "alias"-attribute [code] alias ("target") The alias attribute causes the declaration to be emitted as an alias for another symbol, which must be specified. For
Dr. Sommer schrieb im Beitrag #4870258: > Wenn du den GCC verwendest und LTO aktivierst, wird beim Linken noch ein > Optimierungsschritt durchgeführt. Dabei werden u.a. (fast?) alle > Funktionen geinlined, die nur 1x aufgerufen werden. Somit verschwindet
-
Thread
Inline Assembler übersetztung
"sbic %2,1" "\n" "rjmp waitEEW" "\n" "ret; Problematisch bei Inline-Optimierung!" : : "M" (_SFR_IO_ADDR(EEAR)), "M" (_SFR_IO_ADDR(EEDR)), "M" (_SFR_IO_ADDR(EECR)), "r" (uiAddress), "r" (data) ); } #ifdef TEST int main
ja, welcher? Und nach deiner Änderung zu asm()-Variante funktioniert es? Wenn ja, dann: Welchen GCC hast du? Bei mir wird durch WinAVR 20070122 (GCC 4.1.1) bei beiden Varianten der gleiche Code produziert. Einstellungen im Makefile s. Anhang (Optimierung: s) Mein Listing (test.lss, Ausschnitt):