-
Thread
0-pointer in c
: http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.c?view=markup&pathrev=254003#l725 IUnknown schrieb im Beitrag #5223996: > -> Es ist nirgentwo definiert dass in einem NULL pointer auch "0" drin >
Johann L. schrieb im Beitrag #5224010: > avr-gcc verwendet -fno-delete-null-pointer-checks, und zwar hart: > > http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.c?view=markup&pathrev=254003#l725 Was aber nichts am Standard ändert. NULL
-
Thread
Betriebssystem für 32 Bit µCs?
voneinander getrennt, so daß sie völlig separat compiliert werden konnten. Das Blöde ist nur, daß der GCC keinerlei SVC's beherrscht, weswegen man für den GCC extra noch ein Assembler-Interface basteln mußte. Der Keil kann SVC's richtig gut und macht damit einen sehr kompakten Code. Nun gut, die Lernbetty
der tat der Fall wenn man so spezifiziert für den Mikrocontroler entwickelt und das maximumim an Optimierung rausholen will. Auf die Projektgröße kommt es an. Im Hobbybereich kommt man sicher gut mit der nativen Lösung zurecht. Es ist aber verständlich dass man beim Mars Rover eine andere Route eingeschlagen
-
Thread
Atmel Studio erzeugt aus C Assembler Code? Gesperrt
so richtig? Das ist nicht nur bei Atmel Studio (Version 6 oder höher) so, sondern bei allem, was gcc verwendet, da der gcc das (wie die meisten C-Compiler) so macht. > Und wenn ja, wie oder wo kann ich mir in Atmel Studio das erzeugte > Assembler File ansehen? Wenn du dem Compiler die Option
Ende die Buchstaben so auf dem Papier stehen wie ich diese eingetippt habe. Und es mag sein, das GCC das non plus Ultra bei den C-Compilern ist. ...hmm...von mir aus..., aber es stellt sich für mich jetzt nur die Frage, wenn doch der GCC aus C-Code ein Assembler Code erzeugt, warum programmiert man
-
Thread
AVR EEMEM Initialisierung C++14
Hallo Zusammen, ich stolpere gerade über ein kleines Problem mit dem : [c]GNU C++14 (GCC) version 5.4.0 (avr) compiled by GNU C version 6.4.0 20170724, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3 warning: MPFR header version 3.1.5 differs from library version 3.1.6.
C++ kennt die AVR-Spielchen mit mehreren Adressräumen nicht. Der GCC hilft ein bischen, indem er über Attribute die Adressräume zu trennen erlaubt und die AVR-binutils diese dann in getrennte Files ablegen. Bei Flash gibt es noch den Trick, daß die Lesefunktionen auf
-
Thread
C++ womit grafische Programmeirung
Ich glaube der clang macht diese Optimierung auch, gibt aber eine Warnung dabei aus ...
Sven B. schrieb im Beitrag #5224472: > Ich glaube der clang macht diese Optimierung auch, gibt aber eine > Warnung dabei aus ... Der obige Rant bezieht sich auf GCC 4.1 (Released 2006). Gab es da llvm schon? Und GCC warnt auch; der älteste GCC den ich grad greifbar hab
-
Thread
Helix MP3 Decoder für x86 Linux
scheue ich mich nicht vor Assembler (hab Jahrelang bis SSE3 Assembler programmiert), aber ich hab den GCC Inline Assembler niemals "verhirnt" ... Weiß jemand etwas? VG Mampf
Assembler Code zu schreiben der echt schneller ist. Außerdem ist X86 so schnell dass sich die Optimierung überhaupt nicht lohnt. Übrigens müsste es nasm auch für Linux geben, das sollte die Intel Syntax können.
-
Thread
C/C++: Frage zu (un)signed overflow
wrap-around ausgehen — auch wenn das für diese Übersetzung so sein sollte. Bereits mit aktivierter Optimierung darf sich und kann sich ein Compiler anders (bzw. genauso, nämlich immer noch UB) verhalten. Wenn du für Signed-Overflow definiertes Verhalten willst, dann verwende -fwrapv: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fwrapv
-
Thread
X32 Softcore
Thomas W. schrieb im Beitrag #5212083: > Da ja eine GCC Toolchain existiert, gibt es wohl keinen Bedarf für den > LCC. Naja, der GCC-Port ist recht alt (2.95), und es gibt einige Nervigkeiten, die man ändern könnte, aber bei dem GCC Moloch nicht unbedingt
LCC-Beispiel gespannt. Thomas, hast du zum LCC ein paar Statistiken, was > Code-Generierung/Optimierungen angeht? Macht euch da keine großen Hoffnungen. Der LCC ist quasi ein Uni Projekt. Ein Zwerg gegen den Riesen GCC. Optimierungen gibt es aber nur sehr rudimentär. Die Stärken des
-
Thread
Arm Cortex im DIP Gehäuse Gesperrt
> FYI: Die einen hassen ihn, die anderen lieben ihn: den GCC. Mit den > R8C/M16C tut der sich etwas schwer. Jaein. Du kannst dir den gcc einfach wie fuer jedes andere Zielsystem uebersetzen und nutzen. Das hab ich damals auch so gemacht. Er tat sich etwas
Olaf schrieb im Beitrag #5217087: > Jaein. Du kannst dir den gcc einfach wie fuer jedes andere Zielsystem > uebersetzen und nutzen. GCC setzt bestimmte Eigenschaften eines Targets voraus. Eine ausreichende Anzahl Register beispielsweise. Hat man die nicht, muss
-
Thread
newlib fuer AVR?
Am einfachsten generiert man die newlib in-tree, d.h. * in GCC_SRC: ln -s NEWLIB_SRC/newlib * Falls libgloss gewünscht: in GCC_SRC: ln -s NEWLIB_SRC/libgloss * configure-build-install GCC Zunächst stellt sich aber die Frage, was du mit newlib überhaupt
, haben, abgesehen vom Host-OS, eine merklich kleinere Bandbreite. > und wörtlich behauptet avr-gcc sei tot, während Microchip/ATMEL Über die Politik der genannten Konzerne kann ich nichts sagen. avr-gcc ist GNU-Software, deren Copyright bei der FSF liegt. Mein Einblick in GCC und avr-gcc beruht
-
Thread
Alternativen zu C, C++ auf ARM cortex M?
Mit der Vorgabe keiner Statement-übergreifender Optimierung landet man ähnlich. Was man nicht falsch machen kann, das macht man auch nicht falsch. Ob es dann allerdings überhaupt Sinn ergibt, hochkomplexe Compiler wie GCC oder LLVM als Grundlage zu nehmen
gut benötigen kann. Das Inline-ASM vom GCC ist enorm mächtig, gerade weil es sich nicht nur dazu eignet, ASM Funktionen zu schreiben, sondern sich recht weitgehend in die Optimierung des Compilers integriert und man oft nur sehr wenig ASM braucht
-
Thread
Optimierung von Bit-Transfer-Operationen
#5204824: >> doch geht es mehr darum zu verstehen, warum >> das so wie oben beschrieben ist. > > GCC ist Open Source, mit reichlich Optionen für die Darstellung der > Zwischenstufen bei der Optimierung. Und wenn jener Forenteilnehmer mit > recht viel Einblick in BLD/BST Optimierungen derzeit nicht
#5204824: >> doch geht es mehr darum zu verstehen, warum >> das so wie oben beschrieben ist. > > GCC ist Open Source, mit reichlich Optionen für die Darstellung der > Zwischenstufen bei der Optimierung. Und wenn jener Forenteilnehmer mit > recht viel Einblick in BLD/BST Optimierungen derzeit nicht
-
Thread
OLED Display 128x64 - Fehlermeldung "text will not fit in region text"
> extrahieren, das nennt sich dann u.a. "function level linking". Damit der allseits beliebte gcc und gnu ld das machen muss man ihnen mit den erwähnten Flags -ffunction-sections -fdata-sections und -Wl,--gc-sections unter die Arme greifen. Ob die Flags nun im gcc Spec-File steht, man es auf
Jack schrieb im Beitrag #5204780: > Damit der allseits beliebte gcc und gnu ld das machen muss man ihnen mit > den erwähnten Flags -ffunction-sections -fdata-sections und > -Wl,--gc-sections unter die Arme greifen. > > Ob die Flags nun im gcc Spec-File steht,
-
Thread
Ist x>>16 das Gleiche wie x/65536?
Ich habe es einmal kurz getestet. Selbst ohne Optimierung (-O0) macht der gcc aus (int32_t) /= 65536: [code] 141b asrs r3, r3, #16 [/code] Also einen Shift-Befehl, der das Vorzeichen erhält.
Detlev T. schrieb im Beitrag #5203467: > Ich habe es einmal kurz getestet. Selbst ohne Optimierung (-O0) macht > der gcc ... einen Shift-Befehl, der das Vorzeichen erhält. Das ist prinzipiell falsch, weil in die falsche Richtung "gerundet" wird. Siehe http://codepad.org/s9bcOmkk oder http
-
Thread
Frage Bitoperation
Diese Optimierung zu bst/bld wird aber auch nur für Bit 0 gemacht ... zumindest bei avr-g++ 7.2.0 und 8.0.0
um es mit avr-g++ und allen Bits 0...7 und Algorithmen zu testen. Es fällt auf, dass die beste Optimierung nur bei Bit 0 gemacht wird. Mir ist nicht klar warum?
-
Thread
Debbuging Modus funktioniert nicht wie er sollte (AMTEL Studio 7)
hi, ... gcc optimization/simulation - das verhalten kenne ich. ist eigentlich ganz logisch, weil wenn der gcc rum optimiert, wie soll dann der c source code noch dazu passen?! da stimmt dann auch kein breakpoint
" zu gehen. majortom schrieb im Beitrag #5202682: > ist eigentlich ganz logisch, weil wenn der gcc rum optimiert, wie soll > dann der c source code noch dazu passen?! Mal ausprobiert - für das Beispiel? Ja, ich kenne die Optimierungs-Probleme auch, deshalb habe ich mal gespielt.
-
Thread
Böse Falle Boolean
static und durch die Optimierung ist der TE in die Irre geleitet worden.
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html -Og Optimize debugging experience. -Og enables optimizations that do not interfere with debugging. It should be the optimization level of choice for the
-
Thread
MCP 4921 & ATTINY 2313 Sprünge
meinem ursprünglichen Code der Sinus nur mit schlechter Qualität ausgegeben wurde: Wenn ich die Optimierung DEAKTIVIERE - wie ich es bei dem DDS-Beispiel gemacht hatte - dann sieht der Sinus sauber aus, ich kriege aber nur ca. 670kHz Taktrate. Wenn ich die Optimierung AKTIVIERE (-O1 und aufwärts) bekomme
Annahme verleitet hatte, dass die Datensignale in Ordnung seien. Liegt es wirklich an der Optimierung?! - Habe ich mal wieder ein völlig offensichtliches Brett vor meinem Kopf?!
-
Thread
AtmelStudio 7 - Long variable übergeben
Schau mal hier, https://gcc.gnu.org/wiki/avr-gcc was bei einem 8-Bit-Prozessor mit GCC long bedeutet (oder versuche mal "long long" :-) )
Dieter F. schrieb im Beitrag #5193791: > Schau mal hier, > > https://gcc.gnu.org/wiki/avr-gcc > > was bei einem 8-Bit-Prozessor mit GCC long bedeutet (oder versuche mal > "long long" :-) ) was meinst du damit? eine 10 passt doch wohl in 32bit rein.
-
Thread
Overhead struct-pointer
.] } [/c] Muß ich für diese "Verschönerung" einen Preis bezahlen oder optimiert der Compiler (GCC für ARM Cortex M3) die konstanten Zeiger-Dereferenzierungen immer weg? Viele Grüße W.T.
#5193596: > Muß ich für diese "Verschönerung" einen Preis bezahlen oder optimiert > der Compiler (GCC für ARM Cortex M3) die konstanten > Zeiger-Dereferenzierungen immer weg? ich kenne zwar ARM nicht, aber auf x68 wird es sogar mit dem Referenz teilweise besser, eine Verschlechterung konnte ich
-
Thread
Datenaustausch zwischen ISRs
Falls du den gcc verwendest: https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
Es gibt auch eine gcc memory barrier: asm volatile("":::"memory");
-
Thread
Cycle Count auswerten und verstehen anhand von Shifts und Arrays
Du das probiert? Mit gcc 4.7.4 und -Ofast ist im Disassembly Output nichts von einer rotate Operation zu sehen?
Ruediger A. schrieb im Beitrag #5198379: > Mit welchen Optimierungsstufen hast Du das probiert? Mit gcc 4.7.4 und > -Ofast ist im Disassembly Output nichts von einer rotate Operation zu > sehen? arm-none-eabi-gcc 5.4.1 -O2 Ist nicht das Neueste, aber was Du da hast ist schon ziemlich antiquarisch
-
Thread
Könnte der gcc mich evt. warnen?
nicht der Fall. eagle user schrieb im Beitrag #5189658: > Und die Leute sagen, mit dem aktuellen gcc bekommst du Lint gratis. ja, natürlich steckt hinter gcc mehr manpower als hinter PC-Lint, so dass gcc immer besser wird. Aber zum einen ist Lint m.E. noch immer besser individualisierbar, zum anderen
hat? Oder würdest du sagen: "Damit gebe ich foo den Wert 0"? > Der Compiler darf auch ohne Optimierung das ganze if wegschmeißen, da > foo by value übergeben ist und *foo nicht volatile. Wieso "ohne Optimierung"? Wenn er das wegschmeißt, ist das ganz klar eine Optimierung. > Hat eine Anweisung
-
Thread
Variablen setzen sich auf 0 Gesperrt
erklärt werden, weil sonst der Compiler dazu verleitet wird, r evtl. weg zu optimieren. Apropos Optimierung, wie stehen denn da die Optionen?
test () { int a = 0; while (a < 100) { int b = 7; test2 (a + b); } }[/c] Der GCC macht daraus: [c] c: b508 push {r3, lr} e: 2007 movs r0, #7 10: f7ff fffe bl 0 <test2> 14: e7fb b.n e <test+0x2> 16: bf00 nop[/c] Die Variable
-
Thread
STM32 C Programmierung Tutorial (Buch)
- Dann installierst du dir erstmal eine Toolchain deiner Wahl. Wer mit Linux lebt, der nimmt den Gcc, wer Windows hat, hat die Wahl zwischen Keil, IAR und Gcc. Vom Keil und vom IAR gibt es frei benutzbare Bastlerversionen, die bis zu 32K Code können. Laß dich davon nicht abschrecken, es gibt ne Menge Chips, wo garnicht mehr Flash drauf ist und mit der Codequalität vom Keil kommt der Gcc nicht mit. - So, und dann lerne erstmal, deinen Compiler+Assembler+Linker+Fromelf+Programmiertool zu Fuß aufzurufen, also von der Kommandozeile. Nicht verständnislos gucken, das ist wichtig um es
-
Thread
GCC 7.2.0, -Os auf armv7e-m target -> unaligned access
Guten Abend Ich bin heut Abend über einen möglichen Bug in der aktuellen GCC Version 7.2.0 gestolpert. Und zwar erzeugt mir ein Build mit der Optimierung -Os einen "Double Word Store (STRD)" mit einer ungeraden (!%4) Adresse. Die (wichtigen) Flags sind jene hier: [c] arm-none-eabi-g
die ja nicht sein dürfen) einfach wegoptimiert. Wenn Du das verhindern willst, kannst/musst Du bei gcc mit -fno-strict-aliasing arbeiten und damit auf das letzte Quäntchen Optimierung verzichten.
-
Thread
C++ 17: Eure Meinung zu 'If statement with initializer'
gcc 7.2
bekommen folglich dann auch nie reale Ressourcen zugewiesen. Das setzt natürlich eingeschaltete Optimierungen voraus.
-
Thread
Kommandoshell für µC: selber schreiben oder Parsergenerator (Flex/Bison bzw. GOLD)?
Code, der zweite kostet praktisch nichts extra. [2] Schon frühe BASIC-Interpreter hatten als Optimierung gelegentlich eine kleine Compiler-Komponente. Die Zeilennummer von Sprungzielen wurde in eine Speicheradresse übersetzt. Damit sparte man sich das elendig langsame lineare Suchen nach der Sprungziel-Zeilennummer
es wollen. Ich muß aber zugeben, daß ich leicht reden hab und mir eben bei Bedarf den aktuellsten GCC selber baue und notfalls auch nichtmal GCC-offizielle Erweiterungen wie static_print auch mal selber rein-patchen kann und vor allem darf.
-
Thread
const char *text in C Struktur zur Laufzeit ändern
Welchen Compiler verwendest du? Avr-gcc? Bei mir kompiliert dein obiger Code ohne Probleme/Warnings
will er, dass du nach (const char *) castest. Ich kann den Code auch ohne Casting kompilieren (avr-gcc)
-
Thread
AVR GCC Optimizer Level in C-Programm abfragen
hast nachgemessen, ob O2 tatsächlich schneller ist als Os? Denn ich bezweifele das ganz stark. gcc ist ein toller Compiler, der ist aber primär nicht für AVRs gemacht. Dessen Optimierungen sind vor allem für die Hauptplattformen optimiert. Und selbst auf Intels oder Arms gilt immer noch : messen
Sommer schrieb im Beitrag #5165738: > Korrekter Code funktioniert immer unabhängig von > der Optimierung. Denkste. Wäre schön, ist aber wohl nicht generell so: Insbesondere habe ich einen Codeabschnitt gehabt, den der Optimizer kaputt-optimiert hat. Den musste ich einklammern in #pragma GCC
-
Thread
16-Bit-Array in 8-Bit-Array zerlegen
))[1] == 1) return true; return false; } [/c] Daraus macht der Compiler bei Optimierung einfach ein true oder false, je nach Host-Plattform.
, 1. Byte: %x, 2. Byte: %x\n", var1[j], as_byte(i), as_byte(i+1)); } } /tmp $gcc -std=gnu99 -Wall test.c /tmp $./a.out Wort: 1234, 1. Byte: 12, 2. Byte: 34 Wort: 5678, 1. Byte: 56, 2. Byte: 78 Wort: 9abc, 1. Byte: 9a, 2. Byte: bc [/pre]
-
Thread
Liste aller Buildin-Befehle für den Cortex M4 von STM32
diese built-ins austauschen. Benutze doch bitte die üblichen Begriffe. Builtins sind sowas: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html Was du suchst, sind die Assembler-Instruktionen. Willst du die per Inline-Assembler nutzen? Sicher, dass das mit gutem C-Code nicht genauso gut geht?
weitestgehend unbekannt. Dann befasse dich damit erstmal genauer. Ohne diese kannst du solche Optimierungen vergessen.
-
Thread
Zeiger auf Objekt weitergeben
Programmierung und hat noch wenig mit Optimierung zu tun. Warum sollte der OP sich hier mit Mirco-Optimierungen bereits das Design versauen, wenn jeder vernünftige Compiler die nötige Optimierung implementiert? "Premature Pessimism" führt
Solange du nicht irgendwelchen ganz skurrilen Kram benutzt, was der TO sicherlich nicht tut. MSVC, gcc, clang und vergleichbare machen das seit Jahrzehnten. Wie gesagt: die Optimierung ist so offensichtlich und so wichtig und die Designer der Sprache wollen so sehr, dass sich ihre Anwender darauf
-
Artikel
STM32 - Einstieg mit Em::Blocks
kann die IDE per Dialog, sehr einfach, installiert werden. Als Compiler beinhaltet Em::Blocks den ARM GCC Compiler. Die IDE unterstützt zurzeit den ST-Link, den J-Link und es gibt eine Generic-Vorlage, durch welche andere Debugger konfiguriert werden können. Außerdem muss noch der passende Treiber für den
executables. Ganz unten, unter Logging kann man dann Full command line auswählen. Compiler Optionen. Optimierung. Standardmäßig verwendet Em::Blocks keine Optimierung. Unter -> Rechts Klick -> Build options... -> Categories: Optimization kann zwischen verschieden Optimierungen ausgewählt werden. Verschiedene
-
Thread
Probleme mit inline bei neuem gcc
Hab grad den relativ neuen avr-gcc 7.1.0 auf einem Arch-System installiert. Wollte ein gut abgehangenes ATmega-Projekt kompilieren. Das Projekt hab ich damals zu gcc 4.X-Zeiten gestartet, aber zwischenzeitlich auch mit gcc 5.X und
Und die Funktion in den Header zu packen ist Grundvorrausetzug um den Compiler möglichst gute Optimierung zu ermöglichen. (von LTO mal abgesehen). Deswegen hab ich das so umgesetzt. Ich hab damals glaub ich auch mit anderen Qualifiern probiert. Ergebnis waren Linkerfehler. Nämlich dann wenn gcc
-
Thread
Überraschend hohe ISR Latenz auf STM32F3
A. K. schrieb im Beitrag #5132555: > Bei Optimierung auf Tempo sollte die Adresse nicht per Flash-Load, > sondern mit 2 16-Bit-Immediate Befehlen geladen werden (MOV,MOVT). Das gilt offenbar nicht mehr für neuere GCC Versionen. Hier wird movw/movt nur noch mit -mslow-flash-data generiert, ansonsten nimmt er LDR auch mit -O3 Optimierung. So um GCC 4.5 herum hatte ich noch die movw/movt auch im normalen -O3 Disassembly gesehen.
-
Thread
STM32: Bitbanding für Arrays?
Optimierungen eingeschaltet?! Die Division sollte eigentlich wegoptimiert werden.
Stimmt! Läuft! :-) Kotmäßig erheblich kürzer als das maskieren, nur 4 Befehle pro Bitsetzen, ohne Optimierung.
-
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
[AVR Assembler] Wie rechnet man x^Kommazahl?
Wurzel kannst Du ähnlich finden, wie die normale (sqrt). Nur das dafür vermutlich kaum geniale Optimierungen existiren. Ich würde es jetzt ganz einfach anfangen wie bein normalen Wurzeln: y=x/5. Wenn y*y*y*y*y > x, dann y/=5, sonst y*=1.2; Und dann per Excel oder C-Script für die 65000 Werte
besteht dann aus 3 Schritten à la Ordnung 1. Hier ein Beispiel in Konkreter Implementierung für avr-gcc. Implementiert wurde es für arcsin nach Zerlegung von arcsin in Quadratwurzel und eine Funktion a(), die in [-1,3] analytisch ist. Entwickelt wird a: [c] #include <stdint.h> #include <stdfix.h
-
Thread
uint32_t => float (32) ohne cast!
Johann L. schrieb im Beitrag #5111439: > macht avr-gcc -Os man sollte die Funktionen aber schon aufrufen.
Johann L. schrieb im Beitrag #5111439: > Dieses "Type Punning per Union" wird zwar von GCC unterstützt (steht > irgendwo im Kleingedruckten), konformes C ist es aber nicht. Seit C99 schon, und das ist doch default beim GCC.
-
Thread
Atmel Studio 7 Simulator Debug
Probiere es halt aus. Und ansonsten empfiehlt sich für alle AVRs eher die Option s zur Optimierung. Oliver
GCC 5. Hier mal ein ganz knappes Beispiel mit einem GCC-ARM: https://godbolt.org/g/yEku3P Das Beispiel ist natürlich etwas konstruiert und in der Realität hat man eher nicht so knappe (und überflüssige
-
Thread
USB des STM32 F103C8T6 nutzen
Christopher J. schrieb im Beitrag #5104982: > Das Problem ist doch einfach nur, dass GCC ab -O2 und damit auch bei -Os > die Nop()-Funktion einfach wegoptimiert. Das Problem ist keines da man selektiv die Optimierung mit Pragmas ausschalten kan.
totem Code aufgefüllt wird. Du wirst hier genau diesen Unterschied feststellen: gcc mit -O vs. gcc ohne -O. Lässt Du die Optimierung weg, hast Du in den meisten Fällen genau das, was Du willst. Zu 99% brauchst Du dann zum Beispiel überhaupt keine volatile-Variablen mehr. Denn der
-
Thread
Eine Zeile Code, 2K flash
Hast du die Optimierung des Compilers eingeschaltet? Wenn ja auf welche Optimierung?
Helfer schrieb im Beitrag #5096641: > Hast du die Optimierung des Compilers eingeschaltet? Wenn ja auf welche > Optimierung? Ja, -Os
-
Thread
FIR Filter auf PIC
Kopf, wenn schon die nächste Version des verschissenen Compilers oder eine andere Einstellung der Optimierung katastrophal abweichende Kompilate ergeben kann... Nö, für alles wirklich Zeitkritische gibt's nur eins: Asm. Wer das nicht begreift, ist ein Idiot.
haette, scheint mir irgendein Billigboard mit irgendeinem STM32 oder was entsprechendem (und eben auch GCC-Unterstuetzung) da erheblich "sicherer". Achja: Von IIRs wuerd' ich erstmal schwer abraten; da gibts viel mehr Malheur mit Arithmetikproblemen (Rundung, Ueberlauf...) als bei FIRs. Gruss WK
-
Thread
Entwicklungstools für STM32F030F4
Wie wärs mit den GNU Tools und GCC? Alles für umme...Wenn das kein super tolles Argument ist? Ein JLInk zum Debuggen und die ganze Chose läuft im Eclipse zum Debuggen. Was will man mehr.... Cube MX wurde ja schon genannt, nur beachte
Tools für den STM32F030F4 empfehlen ? QT-Creator mit Bare-Metal-Plugin als Editor bzw. IDE und den GCC-ARM als Compiler, sowie Makefiles als Build-System. Nach wahl dann OpenOCD oder JLink als GDB-Server.
-
Thread
opensource nicht so gerne gesehen
PDF, folglich schreib ichs in LaTeX. Gleiches gilt für Präsentationen. 3. Entwicklungsumgebung ist GCC-basiert + vim + gdb. 4. Hardwaredesign bei mir nur Opensource per KiCad. 5. Versionsverwaltung in Git. (SVN geht mir auf den Sack) Zu 1.: Rechner muss ich selbst administrieren. Dadurch keine
dominante Produkt in einem Bereich OS Software. Datenbanken: MySQL, OS: Linux, GUI: Qt, Compiler: GCC, VCS: git, etc. Vielleicht kommt man heutzutage auch ohne Latex aus (wobei ich glaube, dass für Doktorarbeiten im MINT-Bereich noch immer fast ausschließlich Latex benutzt wird), aber in den meisten
-
Thread
Grundsätzliche Frage zu Compilern / Arduino IDE im besonderen.
Schalte mal die Optimierung vom Linker ein, dann werden nur noch die verwendeten Funktionen eingebunden.
/ ist. <http://www.rapidtables.com/code/linux/gcc/gcc-l.htm> Der Sinn davon ist Compilerlaufzeit zu sparen (bei popeligen uC Projektchen nicht relevant) und Qualitätssicherung: eine einmal auf Herz und Nieren, also Funktion und Laufzeitverhalten
-
Thread
Datentypkonvertierung uint16_t zu double
: > Compiler: ARM Yagarto Ist der nicht völlig veraltet, mit dem letzten Update von 2012 und der GCC Version 4.7.2? Von ARM selbst gibt es eine GCC Distribution der Version 6.3.1 und die wird laufend aktualisiert: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
Compiler: ARM Yagarto > Ist der nicht völlig veraltet, mit dem letzten Update von 2012 und der > GCC Version 4.7.2? Never touch a running system. :)
-
Thread
Info zum verwendeten Compiler im HEX-File?
Du kannst beim GCC vordefinierte Macros als Konstante im Flash ablegen. [c] #define GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) [/c]
www.mikrocontroller.net/topic/429895#5054356 Das Problem tritt nur auf, wenn die OCaml-Runtime mit dem gcc und ganz bestimmten optimierungs Optionen gebaut wurde. https://caml.inria.fr/mantis/view.php?id=7452#c17108
-
Thread
Detected loop counting up. Recommend loops count down as detecting zeros is easier
einzige Konsequenz ist, dass die Schleife pro Durchlauf einen Takt mehr benötigt. TI empfiehlt die Optimierung auf "-o2" zu setzen. http://processors.wiki.ti.com/index.php/Compiler/diagnostic_messages/MSP430/1544
unter Anwendung der Regeln von C rauskommen darf, darf er machen was er will. Wobei mit und ohne Optimierung auch verschiedene Ergebnisse rauskommen dürfen, wenn beide in diesem Sinn zulässig sind.