-
Thread
Komplizierte 32-Bit-Rechnung möglichst effizient
ist und ich >eine Vereinfachung übersehen habe. https://www.mikrocontroller.net/articles/AVR-GCC-Codeoptimierung#Prinzipien_der_Optimierung
definieren, wenn es keine zusätzliche Einschränkung der Zahlenbereiche der Variablen gibt. Aber der GCC muss fast alles als 32 Bit rechnen, wo eine handoptimiere ASM-Variante deutlich sparen kann. Aber dennoch gilt mein Link oben zum Thema Optimierung! Wenn es auch so ausreichend schnell ist, so what!
-
Thread
Assembler Code in Cprogramm
Joachim B. schrieb im Beitrag #4115605: > Die Compiler Optimierung -OS ist mir da nie begegnet oder wo ich sie > einstellen kann -Os ist standandmäßig aktiv.
^= 1<<PB0; [/c] Wenn die Lesbarkeit oder Portierbarkeit drastisch leidet, hat bei mir die Optimierung ihre Grenzen.
-
Thread
Vektor mit Inhalt von Vektoren auf Funktionen - wie könnte das gehen?
Aufruf drin stehen. rueck = sprungleiste[0](var1, var2) wäre auch möglich? Und wie sage ich dem GCC dass er das nicht ins Ram legen soll sondern im Flash (.text)?
du das in C nicht erzwingen kannst. Oder du brauchst irgendwelche Annahmen darüber, wie welche Optimierung den Code übersetzen *muss* > In Assembler ist das nicht schwer. > > .org 0x08 .org ist seit ca. 20 Jahren obsolet ;-)
-
Thread
GCC als Crosscompiler für ARM auf ARM
also bei debian auf arm ist der gcc-arm-none-eabi dabei https://packages.debian.org/jessie/gcc-arm-none-eabi
.eh_frame *(.eh_frame) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .exception_ranges *(.exception_ranges .exception_ranges*) .tdata *(.tdata .tdata.* .gnu.linkonce.td.*) .tbss *(.tbss .tbss.* .gnu.linkonce.tb
-
Thread
Externes RAM am STM32F4 - wie Variable drin platzieren?
im Debugger sah für falsch. Hallo A.K., volatile hatte ich gewählt, damit mich die Code-Optimierung nicht bei meinem Schreib-/Lese-Test stört.
Startadresse schreiben Genaues vielleicht hier: http://www.scoberlin.de/content/media/http/informatik/gcc_docs/ld_3.html
-
Thread
Dumme Frage zum "C" mit AVR's
Die Optimierung mit den CBI und SBI Befehlen nutzt GCC am AVR schon - zumindest wenn einzelne Bits gesetzt oder gelöscht werden. Man muss aber auch da Aufpassen: nicht alle Register sind per CBI / SBI ansprechbar
in I/O Register I/O(P,b) <-- 0 Flags:None Clocks:2 > > Stimmt, ganz vergessen... Nur ist der gcc klug genug, das so zu > optimieren? Ja. Lurchi schrieb im Beitrag #4096217: > Die Optimierung mit den CBI und SBI Befehlen nutzt GCC am AVR schon - > zumindest wenn einzelne Bits gesetzt oder
-
Thread
AVR Assembler - IO Port-Switching-Zeiten nicht berechenbar
Takte pro Bit brauchen. Schlechte Compiler oder auch gute Compiler mit "ungünstig" eingestellter Optimierung können da leicht auch mal 3 oder sogar 5 Takte pro bit draus machen... Abgesehen von diesen Betrachtungen ist der Code aber auch noch falsch. Das Startbit muß natürlich Low sein, aber das würde
schrieb im Beitrag #4093043: > sie machen einfach eine Sprungtabelle draus, habe ich schon beim GCC > gesehen. Sind dann bloss 2 oder 4 takte. Vier mag ich vielleicht noch glauben, zwei nimmer. Bis zum Beweis des Gegenteils würde ich das als offensichtliche Schutzbehauptung eines C-Gäubigen einstufen
-
Thread
AVR 8bit auch für größere Projekte?
LiPo auch nicht. Gerade letzteres kann manchmal nützlich sein. > - Hardware-Unterstützung durch gcc und arm-libc fehlt. Das wiederum würde mich wundern. Sind doch ganz normale Cortex-M0, warum sollten die von GCC und Newlib nicht unterstützt werden? Allerdings muss man diesbezüglich bei ARM
: https://answers.launchpad.net/gcc-arm-embedded/+question/256332 und https://bugs.launchpad.net/gcc-arm-embedded/+bug/1387906 Die winden sich hin und her. Anstatt entsprechenden Code zu akzeptieren, schreiben sie aber lieber so einen
-
Thread
Compiler Optimierungen - Was kann man erwarten?
Leider habe ich keinen asm Output und das manuelle Erzeugen ist mir zu mühsam im Moment. Ist der GCC cleer genug sehr kurze Funktionen als Inline zu realisieren? Und wenn ja, muss dazu die -os Speed Optimierung gewählt werden oder geht das auch mit der -o3? zb wenn die Funktion nur eine Zeile ist?
Christian J. schrieb im Beitrag #4098199: > Ist der GCC cleer genug sehr kurze Funktionen als Inline zu realisieren? Ja. > Und wenn ja, muss dazu die -os Speed Optimierung gewählt werden Nein.
-
Thread
GCC optimiert 32bit Bitoperationen schlecht/gar nicht?
in dieser Routine; mehr als C und AVR-Assembler braucht man dafür nicht zu beherrschen. http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.c?revision=221316&view=markup#l6076 Z.B. gibt "unsigned long >> 27" eine Schleife aus. Bei Optimierung auf Speed ist das echt übel. Und selbst für Size
beschrieben sind? Aaaaaaah! Jetzt ist der Groschen gefallen! Ich bin irgendwie davon ausgegangen, GCC würde immer beides betrachten (Dauer und größe) und abhängig von der Optimierung eins als primäres und das andere als sekundäres Sortierkriterium verwenden (z.B. optimierung auf Size: kürzsesten Code
-
Thread
SPI Master Code Optimierung
Hallo Forum, ich habe das Problem dass mein AVR-GCC nicht das macht was ich will: Hier der Code: [c] //slave.h: typedef struct { const uint8_t slaveSelectPin; volatile uint8_t * slaveSelectPort; const uint8_t outputSignalPin; volatile
das noch rausreißen können, aber das kann ich mir angesichts der Komplexität der notwendigen Optimierung schwer vorstellen.
-
Thread
uint32_t variable byteweise füllen
Variablen zwangsläufig in 3 bis 4 Stufen. Was Zufolge hat dass die Version mit Pointern in jeder Optimierungs- stufe weniger Code erzeugt und damit auch schneller ist als die Version mit Shift-Operationen. Ich bin keiner der hier den Geschwindigkeits-Wahn hat, aber viele bringen in so einer Diskussion
Der herr Pointerfrickler hat sogar teilweise Recht, der AVR-GCC ist zu blöd die 32bit-Shiftoperationen korrekt zu optimieren. Da die Pointer-Cast-Operation aber Stack-Zugriff erfordert, ist sie tatsächlich /noch/ langsamer und größer. Hier der Testcode: [c]uint32
-
Thread
Frage zur Bitmanipulation
O-Registeren als Bitnummern statt als Bitmasken zu definieren. Dann kam der C-Compiler in Form des GCC 3.0. Anfang machte der noch keine CBI/SBI/SBIC/SBIS-Optimierung. Diese Instruktionen waren nur per Inline-Assembler verfügbar, deswegen hat man auch hier die Bitnummern gebraucht, da auch der C-Compiler nicht ohne weiteres in der Lage ist, Bitmasken in Bitnummern umzurechnen. Dann kam der GCC 3.3 mit CBI/SBI/SBIC/SBIS-Optimierung. Nun brauchte man keine Bitnummern mehr. Da sich aber schon alle an den Umgang mit den Bitnummern gewöhnt hatten und keiner Lust hatte, bestehenden Code von
-
Thread
Atollic TrueStudio Lite ohne CodeSizeLimitation
besseren Code als GCC.
Gleiche tun. Paradebeispiele sind die ST-Libs für den ST32 und den ST8. Als völlig unschlagbare Optimierung gibt es nach wie vor die Möglichkeit (auch mit GCC) die Quellen in Assembler zu erstellen ...
-
Thread
flash-Fehler mit ATtiny2313, compile ok
elimination, etc. Um eine genaue Antwort zu geben, könnte man die GCC-Dumps lesen. Wenn es dir den Aufwand wert ist: Die Dumps bekommst du mit -fdump-rtl-all-details -fdump-tree-all-details > Ich dachte, die Optimierung mittels "-Os" im Makefile veranlasst > zu haben
auf Mikrocontrollern möglichst vermeiden, stets mit möglichst kleinen Integertypen arbeiten und die GCC-internen Optimierungen in Anspruch nehmen. Außerdem schlage ich vor, im AVR-GCC-Tutorial ein Kapitel "Tipps für Anfänger" oder "häufige Fehlerquellen" hinzuzufügen, mit Ratschlägen der o.g. Art.
-
Thread
Frage an die Compilerbauer
der Geschichte: Dem Kompiler keine Knüppel zwischen die Beine werfen, dann klappts auch mit der Optimierung.
Es ist weder Die Compilerversion genannt noch für welches Device übersetzt wurde. Und ja, avr-gcc macht nicht immer den besten denkbaren Code, und das gilt auch für den Code, den er für Multiplikationen erzeugt — auch mit avr-gcc 4.9 oder 5.
-
Thread
Programmabsturz eines Consolenprogramms unter Windows - wie Fehler finden?
aus der Textdatei die Audiodatei in 3 neue Dateien im Waveformat. Unter Linux kompiliere ich mit gcc 4.7.3 bzw. cross-kompiliere für Windows mit dem i686-w64-mingw32-gcc 4.6.3. Das Programm läuft anstandslos unter Linux und in der VirtualBox unter Windows 7. Es stürzt ab auf mehreren anderen Windows
Gerhard Z. schrieb im Beitrag #4059353: > habt ihr parat, wie ich dem gcc mitteile, dass er den Stack vergrößern > soll? das sollte keine Option vom Compiler sein. Beim starten eine threads kann man die Stackgröße mitgeben. Aber wie es beim Hauptprogramm geht kann ich
-
Thread
Der C Standard und wegoptimierte Funktionen
Sequence-Point. http://stackoverflow.com/questions/1474030/how-can-i-tell-gcc-not-to-inline-a-function
A. K. schrieb im Beitrag #4058182: > Mit den GCC Attributen "const" und "pure" kann man angeben, Was jetzt, da wie hier im gcc-Forum sind, zutreffend ist. Der TO bezieht sich aber auf den C-Standard, und der kennt weder const noch pure. Oliver
-
Thread
Günstiger Anfang mit ARM Gesperrt
noch etwas? Wie sieht es da im Linux-Umfeld aus? (habe irgendwo hier gelesen, dass man den Standard gcc mit entsprechenden Parametern wohl auch Binaries für Cortex M0 erzeugen lassen kann) Danke auch noch für weitere Tipps. Michael
Beitrag #4057548: > Langsam ist es genug mit dem Getrolle... Yep, dann hör doch auf damit. GCC gibt's auf jeden Fall schon länger als Openoffice, und auch OpenOCD gibt es schon so lange, wie Keil beispielsweise zu ARM gehört.
-
Thread
STM8L + Cosmic compiler: optimierung, die code unlogisch macht
Hallo, ich hab folgenden Code: [c] #include "stm8l15x.h" #include "stm8l15x_it.h" main() { uint8_t index; uint8_t element; CLK_DeInit(); CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI) {} LCD_GLASS_Init(); while(1) { for(element = 0x00; element <= 0xFF; element++){ for(index = 0x00; index <= 0xFF; index++){ LCD->RAM[(uint8_t)element] = 0x00; LCD->RAM[(uint8_t)element] = index; } LCD->RAM[(uint8_t
-
Thread
Unterschiede im compilierten Code nach Neuübersetzung
Hallo! Gab es hier nicht mal irgendwo eine Diskussion bezüglich des GCC, dass sogar Optimierungen abhängig sind von der aktuellen Prozessorlast und Ähnlichem? Ich hab da irgendwas im Hinterkopf... Gruß Dennis
Dennis S. schrieb im Beitrag #4050964: > Gab es hier nicht mal irgendwo eine Diskussion bezüglich des GCC, dass > sogar Optimierungen abhängig sind von der aktuellen Prozessorlast und > Ähnlichem? Ich hab da irgendwas im Hinterkopf... Ja, die gab es. Siehe http://www.mikrocontroller.net/topic/357362
-
Thread
Kreiszahl Pi in einer Funktion berechnen oder per #define festlegen?
möglichst vielen Stellen > benutzt. Warum sollte es nicht? Das ist doch eine ziemlich einfache Optimierung für den Compiler.
values can be stored in memory in double extended-precision format." (*) Das 80-Bit-Format wird von gcc auch über den Typ long double unterstützt. (*) http://home.agh.edu.pl/~amrozek/x87.pdf Seite 8-17.
-
Thread
Zündkurve verstellen beim 2Takter
jede Umdrehung deinen Winkel individuell festlegen. Man könnte evtl. sogar eine automatische Optimierung nach Schema Klopfsensor anbringen (als "nicht-Bezin-Murkser" weiß ich nicht wie akut das bei nem 2 Takter is).
ich endlich mal auf einen gscheidn Link gestoßen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR Und hab gleich meine erste Frage: Wie kann ich das TCCR auf Prescale 64 setzen? TCCR1 = ?? Lg
-
Thread
STM32 unter Linux programmieren und debuggen
line at 26 // the end of this function, used to pop the compiler diagnostics status. 27 #pragma GCC diagnostic push 28 #pragma GCC diagnostic ignored "-Wunused-parameter" 29 #pragma GCC diagnostic ignored "-Wmissing-declarations" 30 #pragma GCC diagnostic ignored "-Wreturn-type" 31 32 int
Ich hab auch openocd, das arm plugin, arm-none-eabi- gcc und gdb installiert. Was hast du für Einstellungen im "GDB OpenOCD Debugging" in Eclipse eingestellt? Im Anhang findest du meine Einstellungen. Aber nur mit dem OpenOCD Debugger in Eclipse komm ich
-
Thread
einfache Code-Optimierungen
Peter II schrieb im Beitrag #4027092: >> Der Compiler ist eine angepasste Version vom GCC. > > müsste er dann nicht frei sein? also die Änderung mit veröffentlich > werden? Jene Optimierungen, die GCC von sich aus durchführt, stehen als Quellcode zur Verfügung. Ich hatte den Compiler
die üblichen GCC Optimierungen inklusive -O2 und -O3 voll zur Verfügung stehen, halte ich für wahrscheinlich. Aber auch -O1 sollte schon völlig ausreichen.
-
Thread
alle möglichen kombinationen bekommen
[] outputDataBuffer; return 0; } [/c] ist aber jetzt kein hübsches c++ mehr. mit Optimierung übersetzt sollten die Zugriffsoperatoren der std::string und der std::vector keinen Einfluss haben, die könnte man natürlich auch noch durch plain-C ersetzen.
an der Sekunde (mit >/dev/null) Angesichts der Geschwindigkeit von Vlads Programm sind diese Optimierungen aber lächerlich.
-
Thread
Stackinitialisierung durch den Compiler
was ein Asembler-Programmierer machen würde. jgdo schrieb im Beitrag #4025726: > Da keine Optimierung an ist, werden alle Variablen als volatile > behandelt [...] NEIN! Diese Variablen sind /nicht/ volatile! Auch ohne Optimierung gibt es Stellen, wo gcc Volatiles und nicht-Volatiles unterschiedlich
eine besondere Rolle, auch wenn der Code nicht optimiert wird, denn Semantik ist unabhängig von Optimierungen. > der Compiler weiß also nicht, was davor war oder danach kommt. Ohne Optimierung (bzw. mit -O0, was auf Host-Resourcen optimiert) kommt das hin. Mit Optimierung wird der Code jedoch von
-
Thread
Ernstzunehmende Programme in BASCOM
ist aber nicht mehr mit einem Ein- oder Zweipasscompiler machbar. Das ist 'ne lahme Ausrede. Ein GCC ist auch ein Einpasscompiler. Beweis: [pre] % avr-gcc -Os -x c -mmcu=atmega8 -o - -S - #include <avr/io.h> #include <avr/interrupt.h> uint16_t adcval; ISR(ADC_vect) { adcval = ADC;
sondern das ist eine Art Standard-Prolog/Epilog, durch die Sonderrolle dieser Register für den AVR-GCC bedingt. Ja, das ist verschenktes Optimierungspotenzial.) Wenn GCC jetzt ein BASIC-Frontend hätte, könnte er auch in dieser Sprache vergleichbares Optimierungspotenzial anbieten, denn die
-
Thread
C-Präprozessor: Frgae zum Auflösen von Makros
https://gcc.gnu.org/onlinedocs/cpp/Macro-Arguments.html https://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html#Argument-Prescan https://gcc.gnu.org/onlinedocs/cpp/Macro-Pitfalls.html#Macro-Pitfalls ===
implementieren. Ein "Inlinen" der Funktion hat nicht immer >> zum gewünschten Resultat geführt, In GCC kann mit dem Attribut always_inline zusätzlich zu inline das Inlining erzwingen. > Wenn sonst alles gleich bleibt, sollte die Optimierung -Os > Funktionsaufrufe produzieren, im Gegensatz zu -O2
-
Thread
AVR: zwei ISR's blockieren sich
Wahl, meinen Code > entsprechend dem Analyseergebnis zu organisieren. Ich machs kurz: https://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars Keine Programmiersprache ersetzt die nötigen Kenntnisse dieser. (sonst gehts wie im Thread "irgendwas mit C++" -_- )
FelixW schrieb im Beitrag #4024137: > Ich machs kurz: > https://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars Hmm... DAS kannte ich noch nicht. Ich wußte, das IAR sowas kann, aber ich wußte nicht, daß das auch der gcc kann. > Keine Programmiersprache
-
Thread
ATtiny85 - bei 3.5kB ist Schluss
abweichen, greift diese Optimierung natürlich nicht mehr.
gibt es leider _flash, usw. nicht. AFAIK schon, denn der Compiler unten drunter ist auch der avr gcc.
-
Thread
Möchte jemand für mich ein PIC-Assemblerprogramm schreiben?
Gibt es für PIC24 keine richtige freie Entwicklungslösung. MPLABx kommt mit irgendwie kastriertem gcc daher (da geht dann nach einer gewissen Zeit die Optimierung aus oder so). Zeig mir wie ich mit ähnlichem Komfort wie bei AVRs für den PIC optimierten C Code programmieren kann und ich geb ihnen
Gibt es für PIC24 keine richtige freie Entwicklungslösung. MPLABx > kommt mit irgendwie kastriertem gcc daher (da geht dann nach einer > gewissen Zeit die Optimierung aus oder so). Korrekt. Der Freeware-Compiler disabled die höchste Optimierungsstufe bzgl. Size Optimisation, soweit icht weiss. Und
-
Thread
AVR braucht 7us-12us bis in Interrupts ausgelöst wird??
Push- und Pop-Orgien des gcc bei all den vielen Registern. Schau dir mal das disassembly an.
wenn die ISR sie selbst verwendet. Aufgerufene Funktionen sichern diese Register selbst. https://gcc.gnu.org/wiki/avr-gcc#Register_Layout
-
Thread
ESP8266 Tip1 Firmwareentwicklung : präzises Timing
595 ticks für 100 durchläufe // 595 * 12.5 ns = 7437,5 µs [/code] Gegenprobe zur Optimierung wie im ersten Post ohne Delay? Bitteschön [code] ... // start tick1 = get_ccount(); // Spezial Register CCOUNT Abruf und Übertrag while (mtick < 100 ) { // tick2 = get_ccount
btw: Das bietet sich jetzt gerade zu an :) Wer hat Lust auf eine Gegenüberstellung? Xtensa ./. GCC :) wäre doch mal interessant? hab beides da, werde für mich mal einfache beispiele ausprobieren und bei zeiten dann mal per push posten.
-
Thread
alternative für for-schleife zeitmangel
Mein Problem ist, einfach dass der Ablauf der Mainschleife viel zu lange dauert. Meine erste Optimierung wäre den Code effizienter zu gestalten, indem ich die for-Schleifen umgehe, wenn das denn möglich ist. Ich hoffe mein Problem ist verständlich erklärt.
void stepPWM(void){ for (unsigned i=0; i<256; i++){ mag[i] += 1; } } [/c] wird bei GCC 4.7.2 und -O3 für x86-64 im Kern zu [pre] .L5: movdqa (%rsi,%rax), %xmm0 addl $1, %ecx paddb %xmm1, %xmm0 movdqa %xmm0, (%rsi,%rax) addq $16,
-
Thread
Toolchain des WinAVR-20100110 unter Linux
haben weitere Abhängigkeiten: $> aptitude show gcc-avr Depends: libc6 (>= 2.11), libgmp10, libmpc2, libmpfr4 (>= 3.1.0), zlib1g (>= 1:1.1.4), binutils-avr (>= 2.18-4) Suggests: task-c-devel, gcc-doc (>= 4:4.0.2-1), gcc-4.2, avr-libc (>= 1:1.6.2-2)
Prähistorisches habe und meine Compiler deshalb sowieso selber bauen muß: [code]ls /usr/bin/m68k-elf*gcc* m68k-elf-gcc-2.95 m68k-elf-gcc-3.3 m68k-elf-gcc-4.6.3 m68k-elf-gcc-4.6.4 m68k-elf-gcc [/code] Der "ohne Nummer" zeigt auf den, den ich dann meist nutze.
-
Thread
Wann Compiler-Optimierung in Embedded ausschalten
wobei es dann nicht Compilerzertifizierung an sich unnötig ist sondern nur die Zertifizierung der Optimierung. Und die Optimierung wäre ebenfalls unnötig. Wäre nicht das erste mal das Compiler feature enthalten die man eigentlich nicht will. Aber dann hätte man kein Verkaufsargument um sich vom gcc und
damit beschäftigt, daß das nicht stimmt. Interessanterweise gibt es offenbar gerade im Optimizer von gcc sogar einen Teil, der für die Optimierung einen Zufallsgenerator verwendet.
-
Artikel
Pollin Funk-AVR-Evaluationsboard
Funk-AVR-Evaluationsboard v1.1 von der Firma Pollin und um die C-Programmierung mithilfe des Boards und AVR-GCC/WinAVR. In den Beispielprogrammen wird nach Möglichkeit ein ATmega8 mit 12 MHz Quarz Taktquelle verwendet. Die Hardware auf dem Board ist sehr überschaubar (ein Taster, zwei LEDs, s. PDF unter Weblinks
, um eine ankommende Frequenz z. B. hier durch 5 zu teilen (Bsp. 10 Hz auf 2 Hz runterteilen). AVR-GCC-Tutorial/Die Timer und Zähler des AVR. Im folgenden ist das Beispiel für Compare Match Mode aus dem AVR-GCC-Tutorial/Die Timer und Zähler des AVR vom Atmega8 auf den Attiny2313 umgeschrieben. Die wesentlichen
-
Thread
Eclipse Atmelstudio6.2 unterschiedliche Codegrössen ?
mein Projekt ca. 7Kb gross. Das passt noch auf ein Atmega88. Baue ich das Projekt mit Eclipse und avr-gcc sagt mir avr-gcc das mein Projekt um 1052 Bytes zu gross ist. Habe die Optimierung schon geprüft ist in beiden Fällen -Os also Optimierung auf Grösse. Auf den ersten Blick sehe ich bei den Compilerflags
von Atmel hat nichts mit der von AVR-GCC zu tun. Atmel GCC 3.4.5 basiert letztenendes auf GCC 4.8.1
-
Thread
Schnelle Arithmetik
> Wenn man es dem Compiler nicht sagt (das inlinen) wird er es nicht > machen. Der GCC schon. Wenn er meint, inlinen ist kürzer/schneller macht er das, auch ohne inline Keyword. Mit Keyword, zwingt man ihn dazu.
Eine weitere Optimierung waere die Sinutabelle auf 128 Phasen Werte zu reduzieren. Und die Sinustabelle auf eine Wertbreite von 256. Das waere dann ein Wert fuer alle 3 Grad, und eine Amplitudenaufloesung von 1%.
-
Thread
Liest hier jemand von SEGGER mit? Ich hab da mal ne Frage Emulation fehlerhaft?
Montag. PS: Der Code auf dem ich aufbaue beruht darauf: https://github.com/0xc0170/kinetis_klxx_gcc/blob/master/gpio_demo_frdmkl05z/main.c In der main() habe ich bisher lediglich das Toggeln mit PTOR durch ein abwechselndes PSOR und PCOR aller drei Farben ersetzt, das läuft auch wunderbar, auch
J-Link mit der J-Link Software (J-Link GDB Server) an Stelle des OpenOCD zu verwenden um von allen Optimierungen gebrauch machen zu können. Johannes - J-Link Development / Support
-
Thread
STM32F4 Linker-Fehler region FLASH overflowed?
Leider bekomme ich jetzt beim Linken einen Fehler den ich nicht verstehe [code] /home/sean/.bin/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: bin/Release/iotogglem0 section `.text' will not fit in region `FLASH' /home/sean/.bin/gcc-arm-none-eabi/bin/../lib
Verwende mal die hier angegebenen Compiler/Linker Flags, die diverse Optimierungen einschalten und eben Exceptions und RTTI abschalten: http://www.mikrocontroller.net/articles/ARM_GCC#Compiler_.26_Linker_Flags
-
Thread
RUWIDO Merlin USB Receiver (nicht nur XMEGA)
IR-Tastatur_Merlin_Ruwido Ein Beispiel Schaltplan befindet sich im Source Archiv Benötigte Software: make avr-gcc oder win-avrgcc avrdude oder alternative Anleitung: 1. Hardware aufsetzen 2. makefile anpassen (einstellungen) 3. make aufrufen 4. make avrdude aufrufen Diese Anleitung ist nur unter linux
Jetzt passt der code auch auf einen atmega48... Um das zu erreichen ein s in der Makefile für optimierung eingeben... Wie gehabt bin immer noch im branch (megax8) welcher nur im svn liegt. Der code ist mir noch zu experimentel um ein release draus zu machen. Beste Grüße Felix
-
Thread
Anfängerproblem mit Funktion, die Zeiger auf char[] zurückgibt
gemacht hast. Es ist aber trotzdem falsch. Schalt mal alle Warnungen bei deinem Compiler an (beim gcc ist das -Wall) Beachte die Warnungen und behebe deren Ursache. Denn alle genannten Hinweise erkennt auch der Compiler.
Dirk B. schrieb im Beitrag #3983307: > Schalt mal alle Warnungen bei deinem Compiler an (beim gcc ist das > -Wall) -Wall schaltet bei weitem nicht alle Warnungen ein. Das mindeste sollte sowas sein wie "-std=c99 -pedantic -Wall -Wextra". Manche Warnungen kommen sogar nur, wenn man Optimierung
-
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
Comileroptimierung - was kann er und was nicht?
GCC kennt die Eigenschaften der eingebauten Funktion __builtin_strlen(), auf die irgendwo in den Includes die Funktion strlen() umgesetzt wird. Damit ist volle Optimierung möglich. Das /kann/ ein Compiler
A. K. schrieb im Beitrag #3979782: > GCC kennt die Eigenschaften der eingebauten Funktion __builtin_strlen(), > auf die irgendwo in den Includes die Funktion strlen() umgesetzt wird. > Damit ist volle Optimierung möglich. Das kann ein Compiler
-
Thread
Strukt auf einen Pointer aus einem Strukt setzen
Karl Heinz schrieb im Beitrag #3977699: > dann schalte den mal aus. Gut, ich hab die Optimierung ausgeschaltet. Nun funktioniert das ganze auch! Vielen Dank!
uGUI_str_ID uGUI_ObjectID[13]; struct uGUI_str_button *info; info = &uGUI_ObjectID[0].Addr; } gcc a.c a.c: In Funktion »main«: a.c:9:8: Warnung: Zuweisung von inkompatiblem Zeigertyp [standardmäßig aktiviert]
-
Thread
Library für Verschlüsselung mit chacha20-poly1305
Sehr schnell (deutlich schneller als AES128-GCM o.ä.) - Kleine Codegröße (ca 3 KB auf Cortex-M3 mit gcc 4.9 und -Os) - Kann auch für Verschlüsselung ohne Authentifizierung oder Authentifizierung ohne Verschlüsselung genutzt werden Kurz: die Library ermöglicht es mit einem einfachen Interface, die
poly1305 basiert darüber hinaus auf bekannten Referenzimplementierungen, ich habe nur einige Optimierungen eingebracht und die Portabilität verbessert.