-
Thread
GPL V3 und gekaufter Code
explizit noch eine Ausnahme bei ihrer Lizenzierung, die die Syscalls ausschliesst. Ganz ähnlich wie gcc auch, für die mit ihm kompilierten Programme. PS: Es ist "Linus Torvalds", nicht "Linus Thorwalds"
mehr wie das ausging. Vor etlichen Jahren bin ich bei deren 16-Bittern dem begegnet. Sie hatten GCC um eine proprietäre Optimierung angereichert, aber IIRC lief diese als separates Programm, closed Source. Ebenso die Lizenzprüfung.
-
Thread
Array Anfängerfrage
klingt plausibel und lesbarer ist es in Variante 1 allemal. Da >gebe ich euch recht. Eben. Um Optimierungen macht man sich eher später Gedanken, als Anfänger schon gar nicht. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
-
Thread
Problem mit AVR-Studio Attiny13 und GCC Optimierer
ich habe gerade bei der Programmierung eines Attiny13 mit Hilfe von AVR-Studio 4.15 B623 und WINAVR GCC 20081205 ein Problem: Bei der Verwendung des Optimierers (im AVR-Studio Configuration Settings=>Optimization) scheint mir der Compiler die simpelsten Zuweisungen Wegzuoptimieren. Zum Beispiel etwa
ausgeführt werden - die anderen werden einfach übersprungen. Dieser Effekt tritt bei allen Optimierungs-Einstellungen auf, außer bei -O0... Hat jemand einen Tip? Danke! Gruß Manfred
-
Thread
Raspberry Pi Pico SDR
schön, aber ist das so? Ich sehe aus meiner Sicht drei Optimierungen, die es wert wären in der Praxis zu testen: Diff nach Original vs. INA nach Sandras Vorschlag vs. "Doppelt Balanced" mit Übertragern nach dem Optimierungs-Paper. Da eh ein Muxer brach liegt
Wulf D. schrieb im Beitrag #7950362: > > Ich sehe aus meiner Sicht drei Optimierungen, die es wert wären in der > Praxis zu testen: Diff nach Original vs. INA nach Sandras Vorschlag vs. > "Doppelt Balanced" mit Übertragern nach dem Optimierungs-Paper. > > Da eh ein Muxer
-
Thread
Int to float riesiger Speicherbereich
dadurch der Umfang des erzeugten Codes > nennenswert ändert? Der ist identisch (wenn man mit Optimierung compiliert). Wozu also fünf Zeilen schreiben, wenn es in einer viel übersichtlicher ist?
Zumindest früher wars doch so, dass avr-gcc die falschen recht monströsen Libfunktionen für Fliesskommarechnung verwendete, wenn man vergass, dem Linker den richtigen Tipp zu geben. Meist merkten es die Leute, weil das RAM platzte.
-
Thread
Codename Brillo: Googles /besonders/ kompaktes Betriebssystem für das Internet der Dinge
und natürlich auch den verrücktesten video-codec erwartet. Im übrigen schau dir an was z.B. der GCC so alles optimiert... das schaffst du NIE und in ASM... habe da gerade so ein Stück software bei dem's auf Speed ankommt... Auf das loop-unrolling das der gcc sich überlegt hat wär ich nie gekommen.
Compilerbau. Viele tausend Softwareexperten haben sie gelesen, verstanden und Wunderwerke wie den GCC entwickelt. Man kann auf diese gesammelte, geballte Know-How der Compilerbauer zugreifen oder das Rad Tag für Tag immer wieder neu erfinden. Erfindest du auch Bohrmaschine und Säge jedes Mal neu?
-
Thread
Frage zur Projektorganisation bei defines
testproject/ports.h [/pre] Dann den Bibliotheksstamm in den Suchpfad aufnehmen (Option -I beim gcc). Dann findet die 'display.h' ihre 'ports.h', egal wo sie liegt. Und wenn dann übersetzt wird, landen die Objektmodule etwa da: [pre] /eda/projects/testproject/main.o /eda/projects/testproject/display.o
Erstmal danke für eure Antworten! Ja sorry es geht natürlich um AVR-GCC, ich habe gar nicht realisiert dass dieses Unterforum ja nur GCC heißt. Die Quelldateien mittels -I einzubinden habe ich bereits versucht. Auf diese Weise kann ich die Header auch korrekt einbinden
-
Thread
pic18 preis und c compiler
vier mal grösseren Code erzeugt als AVRStudio5. Ist es wirlklich so oder habe ich was da bei der Optimierung übersehen(bild). Gruss
beim AVR-gcc.
-
Thread
[AVR] USART mit Interrupt (STK500/ATmega8515)
Hallo Hansi, Hab gerade einfach mal die Optimierung auf -O0 gestellt (vorher -Os), dann sollte das ja eigentlich nicht passieren. Aber leider kein Erfolg. - Leider gibt es auch massenweise Tutorials die ähnlichen Code präsentieren. Bin noch relativ
alten makefile war unter der Linker-section diese Zeile zu finden: [code] $(QUOTE)$(AVR_APP_PATH)avr-gcc.exe$(QUOTE) -mmcu=atmega8515 -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) [/code] im neuen sah diese zeile dann so aus: [code] $(QUOTE)$(AVR_APP_PATH)avr-gcc.exe$(QUOTE)
-
Thread
Bootloader-ständig reset bei aktiven IRQs
hängt irgendwie mit optimierung zusammen .. bei -O3 gehts jetzt . mit -O0 war nur reset nach reset ...
haube wrote: > hängt irgendwie mit optimierung zusammen .. bei -O3 gehts jetzt . > mit -O0 war nur reset nach reset ... Lass mich raten: du greifst auf das EEPROM zu?
-
Thread
Noch ein RTOS
Heute habe ich Chibios auf mein STM32F401 portiert. Für IDE mit Eclipse und GCC ca. 2 Std.
> eben vermeiden. Heute habe ich Chibios auf mein STM32F401 portiert. Für IDE mit Eclipse und GCC ca. 2 Std.
-
Thread
GDB findet Sourcecode nicht
den Sources? Und wenn ja, woher weiss es, aus welchen Sources? Oder anders: Findet Objdump und gcc den Sourcecode auf die selbe Weise? Oder werden da ganz andere Prinzipien angewandt?
Solange ich debugge, ist jegliche Optimierung ja eh zweitrangig resp. unerwünscht. Gruäss Simon
-
Thread
Unterschiedliches Verhalten zwischen "Debug" und "Release" Modus
Ich nutze Eclipse mit dem GCC und den GNU ARM Eclipse Plugins zur Software-Entwicklung für STM32(L151). SWD-Probe ist ein ST-Link V2 vom F4Discovery über openOCD. Jetzt habe ich den DFU Bootloader (HAL Version) von ST für meine
danach den Input liest, man noch den vorherigen Zustand im Latch liest. Im Debug sind oft die Optimierungen aus, d.h. der Code braucht länger und dadurch kann ein anderer Wert eingelesen werden.
-
Thread
Interrupt ATtiny45
werden? > Vielleicht mal i>0 versuchen. In der Tat, das ist eine Endlosschleife, wie auch der gcc -Wextra schildert: [pre] $ gcc -Wall -Wextra a.c a.c: In function ‘main’: a.c:5:20: warning: comparison is always true due to limited range of data type [-Wtype-limits] for(byte i=255; i>=
einzigen Aufruf kann man > sich den overhead für einen Funktionsaufruf sparen. Wenn man die Optimierung nicht abschaltet, macht der AVR-GCC das schon von selbst. Laß also alle einmal aufgerufenen Funktionen als Funktion. Lesbarkeit geht vor und kostet hier nichts. Sogar Funktionen in verschiedenen
-
Thread
delay: nop() als Schleife ausführen?
assembler schon gar nicht. Wie weit man dem Disassembler trauen kann (compiliert mit -S), weiß ich nicht. gcc und ohne Optimierung. Ich nutze die aktuelle LPCXpresso-Umgebung auf einem Cortex M0, 12 MHz. Mein bisher bester Versuch [c] inline void delay_us(uint32_t us) { LPC_TMR32B1 ->TC = 0;
das auch so erkennt und entsprechend optimiert. Aber natürlich Quatsch und ohne eingeschaltete Optimierung ja sowieso unmöglich. - Zuerst dachte ich, daß der mögliche Überlauf des frei laufenden Timers nicht berücksichtigt wäre. Ist aber ganz schön clever gemacht! Einziger Nachteil durch die Konstanten
-
Thread
Progmem und Pointer
Problematik verstehen. Wenn ich die Daten nicht im Flash ablege funktioniert es. Ich habe mit GCC auf dem PC getestet, deshalb vermute ich das ich irgendwo ein Fehler beim PROGMEM mache. Ich würde mich über eine Erklärung freuen. Gruß, Dirk
das übersichtlicher findest. Mit Konstanten geht es, weil der Compiler bei eingeschalteter Optimierung den Zugriff auf table[i] wegoptimiert. Schalte mal die Optimierung aus, dann geht's wieder nicht.
-
Thread
Array aus Unions - geht das?
achja, kompiliert mit avr-gcc, optimierung -Os [pre] avr-gcc -c -mmcu=atmega8 -I. -gstabs -DF_CPU=8000000UL -Os -Wall -Wstrict-prototypes -std=gnu99 main.c -o main.o avr-gcc -mmcu=atmega8 -I. -gstabs -DF_CPU=8000000UL -
versionen machen die ISR nur laenger, war ja auch nicht anders zu > erwarten. ja, schade :-( den GCC sollte man eben mit vorsicht geniessen, aber wenn man die tricks kennt...
-
Thread
Ist Arduino verpönt?
und Großes vorhat sollte dieser jemand den qualvollen Weg über Assembler (für die Struktur) und AVR-GCC nehmen. -SE
Großes vorhat > sollte dieser jemand den qualvollen Weg über Assembler (für die > Struktur) und AVR-GCC nehmen. Das ist ja gerade das Problem: Die Einstiegshürden auf dieser Ebene werden nicht niedriger. Da würde ich schon eher mit einer Arduino-Entwicklung anfangen und, sobald es läuft, zwecks Optimierung
-
Thread
AVR Instruction Set für C
interessiert, dann wirst du kaum darum herum kommen, in den vom Compiler erzeugten Code reinzuschauen. Beim GCC wäre das LSS File dafür geeignet. Oder du misst die Zeit.
Angenommen Du nutzt den GCC.... Du findest das ganze im Listingfile, das avr-objdump generieren kann. Dort sind die C-Source Zeilen aufgeführt und dazu die Assembler- anweisungen. Z.B. so: avr-objdump -h -S executable.elf
-
Thread
Compilieren der Waspmote Library mit AtmelStudio (ähnlich arduino)
Christian Anders schrieb im Beitrag #3191199: > "region text overflowed by 119306 bytes" Optimierung eingeschaltet? Den richtigen µP gewählt?
Ja, das hab ich... Das Problem liegt irgendwie daran, dass diese IDE von Waspmote eine ältere GCC version verwendet und Atmel Studio die aktuelle.
-
Thread
Pointer auf Struct -> align problem
zum x-ten mal über das Problem mit den aligned Speicherzugriffen vom ARM7 und deren Behandlung in GCC. Ich versuche mal zu erklären was genau passiert: Es gibt einen Buffer von 128 Bytes länge in den ein Gerät von ausserhalb seine Datenstrukturen ablegt. Auf das "wieviel aufeinmal" und wo habe
etwa buffer[9]. Das sieht mir nach Compilerfehler aus... Wenn die Struktur nicht aligned ist (bzw. gcc nix über das Alignment weiß), dann sollte er 8-Bit-Zugriffe machen, auch wenn das sehr ineffizienten Code gibt. Evtl. ist eine Option aktiviert, die solche Transformationen als Optimierung nach sich
-
Thread
DS1820, DS18B20 in C
wenn man ASCII-Zeichen >127 reinschreibt. Peter P.S.: Könnte das ne neue Macke des AVR-GCC 4.1.1 sein ?
Versuch mal: avr-gcc -xc Peter
-
Thread
STM32F103 Bluepill mit 128kb lässt sich nicht flashen
1.12 klappt nicht mehr, der Code ist > nicht mehr lauffähig. LTO for STM32 is broken in newer gcc-arm-none-eabi releases.
Frank M. schrieb im Beitrag #6758700: > LTO for STM32 is broken in newer gcc-arm-none-eabi releases. gcc-arm-none-eabi 9 great support for LTO. See if there is a check "Use Link Time Optimization" on the Linker tab for target Release.
-
Thread
Was ist modernes C? Gesperrt
linkt dynamisch? MS verwendet üblicherweise DLLs als Runtime Libs für die normalen Libfunktionen. GCC meist nicht.
Hat viele C++/C#/whatever Komfortfunktionen und wird vom Compiler in C umgebaut, womit sich dann der GCC befassen darf.
-
Thread
Anfänger in C und welcher PIC (evtl. uno32) ist geeignet ?
hilfreich/ ansiehst. Aber ich sehe hier nirgends ein PIC-Äquivalent zum [[AVR-Tutorial]] oder [[AVR-GCC-Tutorial]]. Und Leute wie PeDa oder Johann L. scheint es in der PIC-Fraktion auch nicht zu geben. Ich lese da immer nur Spinner, die jaulen als ob ich sie persönlich beleidigt hätte, wenn ich sage
hilfreich ansiehst. Aber > ich sehe hier nirgends ein PIC-Äquivalent zum AVR-Tutorial oder > AVR-GCC-Tutorial. Und Leute wie PeDa oder Johann L. scheint es in > der PIC-Fraktion auch nicht zu geben. Ja, ein Tutorial vermisse ich auch. Habe selber mal drüber nachgedacht eins zu schreiben. Ich meinte
-
Thread
C: Prüfen, ob Variable in Intervall
...tatsächlich ist es genau der Code, den GCC für folgende Vergleiche erzeugt: [c]void f (void); void test (int c) { if (c >= 50 && c <= 100) f(); }[/c] Hier avr-gcc: [avrasm] test: sbiw r24,50 sbiw r24,51 brsh
Dinge verfügbar wären, von denen niemand außer Wilhelm weiß, wo sie herstammen. Mit dem aktuellen GCC-Release (9.1) hast du jedoch kein Chance.
-
Thread
For schleife in c ausprogrammieren
habe ich genung, jedoch soll die Ausführung möglichst schnell von statten gehen. Die Compiler Optimierung habe ich schon auf höchster stufe, jedoch sehe ich im Disassamble, dass die Schleife nich ausprogrammiert wurde. Bsp: for(int i = 0; i < 10; i++){ a[1][i] = b[1][i] + c[1][i]; } soll
Stichwort: Loop unrolling Google: "Loop unrolling gcc" Ergebnis: https://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/Optimize-Options.html
-
Thread
RC5 von Danneger auf ATmega8 - seltsames Verhalten
gewesen. Wie schrieb Peter Danneger selber: >Versuch mal: >volatile uint rc5_data; >Der GCC hat die unangenehme Eigenschaft, Zugriffe auf globale Variablen >wegzuoptimieren. >Der Aufruf einer externen Funktion hindert ihn daran, da diese ja die >Variable ändern könnte. >Ich falle da
bei mir lief es auf einem Mega32 und Optimierung nach size war ein, allerdings noch mit einem älteren gcc 3.4.3. Dann habe ich in meinem Code noch ein _delay_ms(10.0); in der mainloop drin, weiss aber nicht mehr ob das wirklich nötig war.
-
Thread
High Level Synthese aus C Code Spielerei oder ernste Anwendungen?
Es ist halt immer schwierig, die Industrie von bestehenden Frickellösungen wegzukriegen, und Optimierungen sind auch oft gar nicht erwünscht (könnte ja eine Stelle wegfallen).
Vektor-ALU besser gleich manuell programmiert anstatt trial&error in C, und darauf hoffen, dass die Optimierung richtig greift. Mit GCC hätte man ja ansich die Möglichkeiten, wenn die RTL/gimple-Geschichte so flott von der Hand ginge, sich seine HLS selber zu bauen und Datentypen und Arithmetiken in Abhängigkeiten
-
Thread
Überladen von Operatoren bei dynamisch erzeugten Objekten
schon länger aus der C++ Programmierung raus, dennoch soweit ich mich richtig erinnere ging das mit gcc3.* Würde mich interessieren wieso es verboten sein sollte.
zulassen wäre es immer noch kriminell. > [/pre] > > Warum? Welcher Compiler? Die Meldung kam vom gcc 4.3.2. Ich kann mir kaum vorstellen, daß ältere Versionen das zulassen, aber weiß es natürlich nicht.
-
Thread
Timer0 Umschaltung "clear" auf "set" FastPWM
Datenblatt keine Einschränkung dazu gefunden und auch sonst keinen Rat mehr. Ich benutze den aktuellen GCC (20100110). Hat jemand eine Idee? Ich hoffe ich habe mein Problem halbwegs verständlich rüber gebracht. Danke
Ist die compiler optimierung an? Läuft der Timer mit prescaler=1, d.h. vollem Takt? Dann sind bis zu deinem Test auf 5 womöglich schon 100 Takte vergangen. Und: - die PWM-pins funktionieren auch, wenn die flags dazu
-
Thread
Veränderbare Spannung per PWM @ Atmega16 und dazugehöriges.
Studio 4.15, build 623 mit installiertem WinAVR (1.0.0.10). Hab halt beim Projekt erstellen "AVR GCC" ausgewählt, dann "AVR Simulator" und den ATmega16. Auf 2 Computern probiert, das Ergebnis is immer das Selbe und stimmt mit dem Post von Jörg nicht überein.
du bzw. AVR Studio ihm nicht mitgeteilt). Kann aber auch sein, dass es simpel nur eine andere Optimierung war (bei mir -Os). Anyway: dein Hexfile läuft bei mir genauso. Warum auch nicht, der tatsächlich ausgeführte Code ist der gleiche.
-
Artikel
AVR-GCC-Tutorial
allem (aber nicht nur) den Abschnitt = Oft gestellte Fragen (und Antworten dazu). Den Artikel AVR-GCC in diesem Wiki lesen. Das GCC-Forum auf www.mikrocontroller.net nach vergleichbaren Problemen absuchen. Das avr-gcc-Forum bei AVRfreaks nach vergleichbaren Problemen absuchen. Das Archiv der avr-gcc
Warteschleifen) vorzuziehen, da leere Zählschleifen ohne besondere Vorkehrungen sonst bei eingeschalteter Optimierung vom avr-gcc-Compiler wegoptimiert werden. Weiterhin sind die Bibliotheksfunktionen bereits darauf vorbereitet, die in F_CPU definierte Taktfrequenz zu verwenden. Außerdem sind die Funktionen der
-
Thread
Falscher Parameter bei Übergabe an Funktion
und das Jahr sind korrekt, der Monat steht aber in r22 und nicht in r25. Ich verwende den avr-gcc 3.4.4, avr-libc 1.2.5. , die Optimierung -O1 und das AVRStudio 4.12 Build 456 (sonst bekomme ich die Software nicht mehr in den µC). Meine Frage nun, ist das ein Bug (Compiler, Studio etc.) oder
ein Beispielcode. Hab das mal aus dem Projekt ausgekoppelt und für den Mega88 kompilert mit den Optimierung -O1. Das Ergebnis ist wie oben beschrieben. [C] #include <io.h> int8_t dayofweek(int8_t tag, int8_t monat,int8_t jahr) { static int8_t tage[] = {0,3,3,6,8,11,13,16,19,21,24,26,29};
-
Thread
Cortex M7 und Cycle Counter (DWT)
Falko J. schrieb im Beitrag #4280637: > Optimierung ist übrigens aus... Das dürfte dein Problem sein. Die Funktionsaufrufe kosten Zeit.
Aber mit Optimierung hat sich nichts geändert. Das inkrementieren der Variable ist aber auch ohne Optimierung nur ein assembler Befehl. Trotzdem erhöht sich der Cycle counter um 11, wenn in Debugger genau diesen einen
-
Thread
Test.elf section `.text' will not fit in region `text'
meint er damit? Steht doch da: "Compiler optimizations disabled". Aktiviere die Compiler-Optimierungen, und erstens werden deine Delays wieder funktionieren, zweitens wird dein Code auch wieder passen. Danach schreibste Atmel noch einen Bugreport, dass sie doch bitteschön die Optimierungen
/auch/ für den Debug-Build. Code für einen (Semi-)RISC-Prozessor ohne aktivierte Compiler-Optimierungen zu bauen, ist ziemlicher Unfug.
-
Thread
Frage zu UART AVR Code
Läuft problemlos, auch mit Optimierung -Os, siehe Anhang.
Kann es sei, dass du einen neueren Compiler als WinAvr2010 (avr-gcc 4.3.3) verwendest? Ich frage, weil der Simulator/Debugger mit neueren Versionen öfter Probleme hatte, bis hin zum Absturz.
-
Thread
C oder Assembler
Hmmmm, der sdcc ist nicht gewöhnungsbedürftiger als der gcc für den AVR. Zudem gibt es 8051er, die 100Mips machen und DSP-Einheiten onBoard haben. Was das angeht, so ist die 8051er Familier mit Sicherheit vielfältiger und auch in der Spitze leistungsstärker
Regeln, gibts keine Konflikte, wogegen der Assemblerprogrammierer ständig getrieben ist zwischen Optimierung, Verschwendung und Fehlern.
-
Thread
ISP programmierbare FPGA mit Flash?
Konfigfiles erzeugen können? Ich glaube du unterschätzt die Schwierigkeiten die man so mit der Optimierung und Route&Place bei grossen Netzen so haben kann ;).
@Mike >Ich glaube du unterschätzt die Schwierigkeiten die man so mit der >Optimierung und Route&Place bei grossen Netzen so haben kann ;) ich lerne gerade auf die Klausur, da werden mehrere Algorithmen zur High Level Synthese behandelt. Mir ist durchaus klar, dass es bei weiten
-
Thread
Mein erster Code... ;)
In welchem Ausmaß lassen sich diese Optimierungen der C-Programme überhaupt noch auf andere Prozessoren übertragen? Dass Bits schieben schneller als eine Division dürfte auf jedem Prozessor gelten. Aber ob z.B. eine do-while Schleife auf jedem
sind sich die verschiedenen Prozessoren doch schon sehr verschieden. Meistens gehen solche Optimierungen schon sehr auf die Lesbarkeit, und wenns wirklich auf das letzte Quentchen Geschwindigkeit oder Platz ankommt kann man auch gleich in Assembler programmieren.
-
Thread
Globales Struct/Array nicht automatisch initialisieren
Das mit dem .noinit habe ich auf dieser Seite gefunden: http://www.rn-wissen.de/index.php/Avr-gcc
#2456193: > Und volatile. Sehr sinnvoll in main() ;) Nunja, habe ich geschrieben, damit die Optimierung mir nicht reinquatscht ;)
-
Thread
Cortex-M3: Welche JTAG-Schnittstelle und Softwarekit?
item27ac90d4bc In Verbindung mit Rowley Crossworks (nichtkommerziell etwas über 100€, basiert auf GCC 4.4) funktionieren die günstigen FT2232 basierenden JTAG-Adapter gut. In meinem Fall der Olimex ARM-USB-OCD, aber die anderen dürften es genauso tun, auch Selbstbau ist möglich. IMHO umgänglicher als
uIP heisst, plus SD-Slot, und du darfst Debugging im optimierten Code durchführen, weil's ohne Optimierung nicht reinpasst.
-
Thread
DS1820
Optimierung ist aber eingeschaltet, oder?
... Das weiß ich nicht... Wo kann man denn diese Optimierung einstellen... bzw. wie muss ich sie konfigurieren?
-
Thread
ATmega328PB macht was er will
z.B. jede Sekunde machen. https://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc
schrieb im Beitrag #7085999: > https://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc Das ist nett bei so gut wie statischer Belegung des SRams, aber bei intensiverer Nutzung des heaps wenig bis gar nicht hilfreich. Oliver
-
Thread
C oder Pascal
zu diskutiert werden, ob das Ergebnis 4 oder 6 ist. Beides ist gleichermaßen richtig oder falsch. GCC liefert übrigens weder 4 noch 6, sondern 5.
praktisch aus unoptimierte Primitiven. Ich habe zuletzt ein Projekt in C umgesetzt, welches mit GCC und MikroC (dürfte ja dasselbe Backend wie MikroPascal sein) übersetzt wurde. Und selbst mit strammster Optimierung brauchte MikroC etwa drei bis viermal soviel Flash... (1) http://www.e-lab.de/AVRco
-
Thread
Verständnisfrage zu "volatile"
Bei einer lokalen Variabel ist volatile sinnlos. Damit kann man bestenfalls dem Compiler die Optimierung verbieten und in einigen Degug-Situationen was reißen. volatile ist nur für globale Variablen sinnvoll, auf welche an mehreren Stellen zugegriffen werden kann. Also Variablen für ISR-Kommunikation
Bei einer lokalen Variabel ist volatile sinnlos. Damit kann man > bestenfalls dem Compiler die Optimierung verbieten und in einigen > Degug-Situationen was reißen. volatile ist nur für globale Variablen > sinnvoll, auf welche an mehreren Stellen zugegriffen werden kann. Also > Variablen für ISR-Kommunikation
-
Thread
AVR ATMega16 Timer Interrupt funktioniert, scheint aber den uC zu reseten
<OCIE1A); [/c] geht es jetzt frag ich mich was daran der unterschied ist, laut Tabelle im AVR-GCC Tutorial ist OCIE1A doch bit 6 ??? Bit 7 6 5 4 3 2 1 0 Name TOIE1 OCIE1A - - TICIE - TOIE0 -
Sebastian N. wrote: > laut Tabelle im AVR-GCC Tutorial ist OCIE1A doch bit 6 ??? > > Bit 7 6 5 4 3 2 1 0 > Name TOIE1 OCIE1A - - TICIE - TOIE0 - Diese Tabelle aus dem [[AVR-GCC-Tutorial]]
-
Thread
AVR Studio GCC Codeteile von der Optimieerug ausschließen?
Hallo, habe momentan wieder etwas zeit mich mit meinem atmega8 zu beschäftigen. ich arbeite gerade ein buch zu dem thema durch. am anfang ist diese funktion ganz praktisch (beispiel aus dem buch), leider wird bei der optimierungseinstellung "0S" die 1. for schleife wegoptimiert, wie kann ich das verhindern? ohne die optimierung auszuschalten? [c] void wartex10ms(unsigned char faktor) { for (unsigned char j = 0; j < faktor; j++) { for (unsigned int i = TAKT/4000UL; i > 0; i--); } } [/c]
-
Thread
undefined reference
: main.elf avr-gcc -mmcu=at90s8535 -I. -g -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o -std=gnu99 main.o --output main.elf -Wl,-Map=main.map,--cref
Btw., -O0 ist keine sonderlich sinnvolle Angabe. AVR ist ein wenig RISC-like, da lohnt die Optimierung des Compilers schon. Werbung: http://www.sax.de/~joerg/mfile/
-
Thread
Frage zu ARM Instruction
Pipeline-Länge an, aber grundsätzlich sollten gleich bedingte Anweisungen hintereinander kommen, ist die Optimierung abgeschaltet? movne r1, #0 strne r1, [r2] ldrne r2, [pc, #60] moveq r1, #1 streq r1, [r2] ldreq r2, [pc, #60]
instructions soak up 1 cycle. Oh, übersehen. Lothar schrieb im Beitrag #3528248: > ist die Optimierung abgeschaltet Liegt wohl am volatile, das hält ihn vom optimieren ab...