-
Thread
Standard Funktion überschreiben
dem Compiler ermöglicht, dass er mit ,,Insiderwissen'' über die Standardbibliothek spezielle Optimierungen ausführen darf. So ersetzt der GCC beispielsweise: [c]printf("Hello world!\n");[/c] durch [c]puts("Hello world!");[/c] Für die avr-libc kann ich dir aber sagen, dass du die Funktion vfprintf
dachte bisher, dass die Standardbibliothek eine ganz normale Bibliothek ist, von deren existenz der gcc gar nichts weiss. Es muss doch zum Beispiel auch möglich sein ein putchar() oder ähnliches zu überschreiben, wenn ich nicht auf der Konsole sondern auf ein Display ausgeben möchte. Ansonsten bleibt
-
Thread
Ansi C - Probleme mit Pointer
Kann nicht ernst gemeint sein. Aha, da sieht man mal, wieviel Ahnung du von C hast: [pre] $ gcc -c guenni.c guenni.c:1:1: error: unknown type name ‘inv’ guenni.c: In function ‘main’: guenni.c:3:6: warning: incompatible implicit declaration of built-in function ‘scanf’ [enabled by default]
noch gemacht, weil GLSL noch nicht wirklich praxistauglich war zu der Zeit. Das war Low-Level-Optimierung vom feinsten, Feilschen um jedes Bit und jede Instruktion. Und es war nötig, es lief gerade so eben, total am Limit der damaligen Standardhardware. Heute sehe ich meine eigenen Programme, und sie
-
Thread
Arduino Code Frage - Variablenzuweisung?
den der Prozessor vorgelegt bekommt, und der wiederum stammt aus dem Compiler, in diesem Fall der GCC. Und was der GCC alles macht (deine Frage im speziellen) um den Prozessor anzuweisen kann man in seiner (GCC) Dokumentation nachlesen ... da alles ziemlich streng nach Vorschrieft "gehandhabt"
Du kannst doch dafür die Optimierungen selber einstellen, ob es weg geht beim compilieren oder ob er den leeren Schrott behalten soll. Gruss
-
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
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
DS18S20, Atmega8 und Winavr
Matthias V. wrote: > Die Delays hab ich mit dem Speicheroszilloskop kalibriert. Sobald du die Optimierung des Compilers einschaltest sind die Schleifen weg. Versprochen. Nur solange du mit -O0 arbeitest werden sie funktionieren.
Ich habe mal eine deiner Schleifen nachgezählt. uDelay(0) frisst beim GCC 4.1 bereits ca. 43 Takte. Bei 4.3 sind's noch ein paar mehr. Mit welcher Taktfrequenz arbeitest du?
-
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
AVR-GCC: globale Variable: "volatile" oder "static volatile"
Hallo, AVR-GCC: Komme gerade etwas ins Schleudern, denn ich verstehe nicht den Unterschied zwischen nur "volatile" und "static volatile" bei globalen 8-Bit Variablen (atomarer Zugriff also garantiert!), die in ISRs
tun, können also getrennt voneinander betrachtet werden. Volatile: der Compiler darf keine Optimierungen mit dieser Variable vornehmen. static (Bei Variablen innerhalb einer Funktion): Variable behält Wert zwischen zwei Funktionsaufrufen static (bei globalen Variablen): Variable nicht als Symbol
-
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 gcc, xmega 128a4, switch-Anweisung
genauer einkreisen / beschreiben, mache ich hier selbst einen Fehler (DAU?) und falls es ein Bug in gcc ist, wo kann ich das melden?
eine Optimierung, behoben in v8: https://gcc.gnu.org/PR81075 [*] Alle Versionen bezogen auf FSF. Wolfgang schrieb im Beitrag #5306849: > Und dann hangelt sich der Compiler halt so durch das switch-Statement
-
Artikel
PIC C-Compilervergleich
Unterstützt: PIC10/12/16 Preis (Standard/Pro): 495$ / 1195$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage PRO Version Hi-Tech C for PIC18. Version: 9.80, MPLAB X 1.51 Unterstützt: PIC10/12/16/18 Preis (Pro): 1195$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage PRO Version
X 2.05 Unterstützt: PIC24/dsPIC Preis (Pro): 995$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 60-Tage PRO Version Hi-Tech C for PIC24 & dsPIC. Version: 9.62, MPLAB X 1.51 Unterstützt: PIC24/dsPIC Preis (Standard): 895$ Beschränkung der Freiversion: Begrenzte Code-Optimierung, 45-Tage Standard
-
Thread
Atmega128 delay.h
die delay.h Funktionen gehen nur, wenn der GCC das MIT Optimierung übersetzt, ansonsten brauchen die VIEL zu lang. Also mal checken, ob der GCC auch mit -Os o.ä. aufgerufen wird.
-
Thread
Inlineassembler für ARV-GCC: Habe Schwierigkeiten mit den "Constraint Modifiers"
Hallo zusammen, ich habe folgendes Problem: ich möchte jedes 2. Bit aus einem 16-Bit-integer (unsigned) in einen 8-Bit-integer (unsigned) schreiben. Da dies sehr sehr häufig gemacht werden muss habe ich mir ein paar Gedanken gemacht wie man hier etwas "tunen" könnte. Mein bisheriger Code erledigt das recht zuverlässig, nur leider recht langsam. [c] uint16_t in; uint8_t out; for( uint8_t i=0; i<8; i++ ) { if( in & (1<<14) ) out++; out<<1; in<<2; } [/c] Mein vielleicht schnellerer Ansatz sieht folgendermaßen aus: [c] uint16_t in; uint8_t out=0, out2; for( uint8_t i
-
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
gcc c++ 3d Vektoren Standard?
Schreiben ist es in der Regel nicht getan, da fehlt dann auch noch die Validieren, Dokumentation, Optimierung etc.), oder Du setzt Dich mal einen halben Tag hin und ließt die Dokumentation einer Library, die so etwas kann und dann hat Dein Werkzeugkasten wieder ein wertvolles Werkzeug mehr.
Compiler. Dann noch ein include, und fertig. In einer Woche kann man alle 9000 Compiler Flags vom GCC lernen, Gott weiß warum du so lange brauchst um das einzige benötigte Flag -I zu finden, bzw. die Doku in der der pkg-config Aufruf steht. Die Installation von eigen ist sogar noch einfacher als die
-
Thread
.bss Overlaps previous section
Leider gibt mir diese eine Fehlermeldung beim Compilieren aus. Ich nutzte Ubuntu 10.04 mit dem Avr-Gcc aus den Synaptics Quellen. /usr/lib/gcc/avr/4.3.4/../../../avr/bin/ld: master.elf: section .bss vma 0x800108 overlaps previous sections make: *** [master.elf] Fehler 1 Kann dieses Problem mit
Spiel mal ein bisschan mit der Optimierung rum. Wurde kein fertiges hex oder elf mitgegeben? mfg mf
-
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
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
uint32_t arm-none-eabi-gcc atomic?
ein uint32_t, wenn er denn aligned, ist, auf einem 32bitter wie ein Cortex-M bis auf weiteres mit gcc atomar. Das ist aber wie ich gelernt habe nicht garantiert. Und zumindest beim Clang hab ich da sehr interessante Optimierungen beobachtet (die ungewöhnlich, aber nicht dem Standard widersprechen
-
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
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
avr-size: Wie groß ist das Programm denn nun wirklich?
bytes. Wie passen nun die drei Werte zusammen? Übrigens sind die Werte bei avr-size *.o für den gcc 4.1.0 abhängig von der Optimierung, wobei manche Dateien bei -O1, manche bei -O2 und manche bei -Os die kleinsten Werte haben. Ich hätte gererell bei -Os die kleinsten Größen erwartet.
der gcrt aus der avrlibc. und dann nicht zu vergessen die instruktionen aus der libgcc.S, die vom gcc bereitgestellt und auch in finalen .elf gelinkt wird. bye kosmo
-
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
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
c-code Schneller in Assembler? Gesperrt
G oder ++B), da dort keine Kopie > erzeugt wird. Das bringt wirklich etwas? Habe gerade keinen GCC hier zum testen, auf dieses Phänomen (sollte es existieren) aber auch noch nie geachtet.
anzuschauen, wüsste er es selber das da mit ASM per Hand nichts zu holen ist. Soviel zu seiner "Code-Optimierung" der fantastillionen Zeilen...
-
Thread
Zeilennummerierung beim HLL Debuggen
sowohl mit JTAG-MKII als auch mit AVR-ONE auf, es ist vermutlich durch die Zeilennumerierung des GCC begründet, welche durch irgendwas durcheinandergerät. Gruß Thomas
wirklich aufgerufen, was am Disassembling leicht zu erkennen war. Das ist hier auch keine Folge von Optimierungen etc. da gcc mit -O0 nach meinen Erfahrungen ziemlich 1:1 das in Assembler darstellt, was man in C vorgegeben hat. Es scheint irgendwie eine Folge von Preprozessormakros zu sein. Nach einigen Umstellungen
-
Thread
The Siemens S65 132x176, 65536 color display with AVR
@Patrick: schaust du hier... http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Speicherzugriffe
ich bin mir nicht ganz sicher, aber WinAVR GCC kann nur Datenstrukturen < 32Kb am Stück verarbeiten. Irgendein Problem gabs da mit dem GCC, ich denke hier im GCC Forum sollte man darüber ein Thread finden. Du kannst aber die daten im *.h File
-
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
C-Programmierung und Mikrokontroller
sondern mit optimierenden Algorithmen des Compilers), es sei denn, man will Unmengen von Zeit in die Optimierung des Asseblerprogramms stecken - dann kann ein guter Programmierer noch was rausholen. Hauptvorteile einer Hochsprache für mich: -Zeitersparnis beim Programmieren (geschätzt 20% gegenüber Assembler
hiesige Wiki hat ein gutes Tutorial für die ersten Schritte: http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial http://www.pronix.de/modules/C/openbook/ (Ich habe mir inzwischen das Buch auch gekauft) Dann helfen natürlich auch Beispielcodes weiter, z.B: http://www.mc-project.de (u.a. auch ein
-
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
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
STM32 - Funktion liefert merkwürdiges Ergebnis zurück
FSMC gelesen? Ist outputRawVoltage dann auch volatile deklariert? Oder Compiler Option -O0 (keine Optimierung) oder Debug Build ausprobiert?
gelesen? Ist outputRawVoltage dann > auch volatile deklariert? Oder Compiler Option -O0 (keine Optimierung) > oder Debug Build ausprobiert? *outputRawVoltage ist ein Pointer, der auf ein Element eines uint16-Arrays zeigt. Dieses Array wird vom DMA mit ADC-Werten gefüllt. In der DMA-ISR wird noch
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware
was er wirklich treibt. Hier (Linux) sieht das so aus: [c]Reading specs from /opt/cdk4nios/lib/gcc-lib/nios-elf/2.9-nios-010801-20030923/specs gcc version 2.9-nios-010801-20030923 /opt/cdk4nios/lib/gcc-lib/nios-elf/2.9-nios-010801-20030923/cpp -lang-c++ -v -I ./inc -I ./src -I ./inc -I ../inc
hi falk der gcc sagt folgendes Reading specs from /cygdrive/c/altera/kits/nios/bin/nios-gnupro/bin/../lib/gcc-l ib/nios-elf/2.9-nios-010801-20030718/specs gcc version 2.9-nios-010801-20030718 /cygdrive/c/altera
-
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
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
[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
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...
-
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 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
arm-elf-gcc float = double?
Ich verwende den arm-elf-gcc mit WinARM. Ich verwende den AT91SAM7A3, ein ARM7 ohne Floating-Point Unit. D.h. gleitkommaberechnungen müssen sowieso emuliert werden. Im Tutorial hier: http://www.mikrocontroller.net/articles/ARM-elf-GCC-Tutorial wird behauptet, doubles werden mit 64 bit gespeichert, so wie es auch IEEE-754 (http://de.wikipedia.org/wiki/IEEE_754) vorsieht. Leider musste ich nun feststellen, dass double-variablen
-
Thread
Compiler für ARM7 (LPC2xx / AT91SAM)
Der GCC wird für sehr viele professionelle ARM-Projekte eingesetzt. Ich habe keine Zahlen, aber es würde mich nicht wundern wenn es der am weitesten verbreitete ARM-Compiler wäre. Mit den Open-Source-Debuggern
aber es ist nicht immer ein Spaß. Eine komplette IDE mit Debugger gibt's von Rowley (verwendet den GCC als Compiler), kann man auch vor dem Kauf 30 Tage testen.
-
Thread
AVR ATMega 163 "überlastet" mit Programm?
Das Programm ist soweit fertig (ca. 1000 Zeilen Code und recht langsam, da ich wenig Wert auf Optimierung gelegt habe). Im AVR Studio liefert mir das Programm auch die richtigen Ergebnisse. Auf der Smartcard jedoch stürzt das Programm ab. kleine Info: Keccak besteht aus 24 Runden a 5 Funktionen
> da ich wenig Wert auf Optimierung gelegt habe Legt denn Dein Dozent Wert darauf? In einer praktischen Anwendung kommt es häufig darauf an, eine Aufgabe schnell genug zu erledigen. Zum Beispiel darf eine Interrupt Routine meist
-
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
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
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
32 Bit oder 64 Bit Ubuntu für Officerechner? 4GB Ram
> RawTherapee läuft ja auch unter 32 Bit. Aber nicht die aktuelle Version. Die lässt sich mit gcc nicht für 32 Bit compilieren.
von 8048 bis zur Mainframe so gut wie alles mit Software versehen, früher meist in Assembler, seit GCC eher C/C++. Außer der anderen Ziel CPU habe ich nix verändert. Aber anyway, wer 64bit kann (Hardwareseitig), der sollte es auch machen.
-
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
Risc CPU im Pico-2 RP2350
nur mit Float bzw. > Double Variablen. Dieser Testcode sollte bei angeschalteten Compiler Optimierungen unabhängig vom verwendeten CPU Kern gleich schnell ab laufen, in etwas 0 Zeit. Die Eingangsparameter sind dem Compiler nämlich bereits zur Compile-Zeit bekannt, er kann das Ergebniss vorberechnen
Seite https://godbolt.org/ Stimmt, da war etwas. Ich bin jetzt etwas erstaunt, wie schlecht der gcc inzwischen doch ist, ich hätte erwartet, das er das mit der Constant-Value Optimierung kann, tut er aber nicht. der clang machts