-
Thread
ATMEGA 8515 -- SREG nicht definiert -- AVR Studio 7
Hier fand ich dann folgendes Programmierbeispiel: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Interrupts_mit_avr-gcc [c]#include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> //... void NichtUnterbrechenBitte(void) { uint8_t tmp_sreg; // temporaerer
kleines Testprogramm[c]#include <avr/io.h> uint8_t sreg (void) { return SREG; }[/c] Mit avr-gcc-5.2.1 (.s File mit -save-temps):[avrasm]... __SREG__ = 0x3f ... sreg: in r24,__SREG__ ret[/avrasm]
-
Thread
Compiler und dessen Bekanntheitsgrade, speziell CCS
einigermaßen portabel), beim CCS muß man per #include <xy.c> selbst Hand anlegen. Die Code-Optimierung ist ebenfalls eher einfach. Ausdrücke wie: int a; a = 3 + 2; a += 5; a = a - 1; werden zur Laufzeit berechnet. 'Große' Compiler (wie auch der GCC) setzen einfach a = 9; Oder bei
Danke für die Antworten! Die Frage sollte sich auch allgemein, auf sämtliche Compiler (GCC, CodeVision, Keil, CCS, etc.) beziehen. Und die Frage klären, welche Compiler überwiegend in der Industrie eingesetzt werden. Soweit man das Pauschal sagen kann! Die spezielle Frage nach dem CCS-Compiler
-
Thread
ARM Development Tools (IAR, Keil, GCC, GNU usw.)
Ich kann nur zum Vergleich IAR-gcc etwas aus Erfahrung mit Atmel AVR sagen. pro IAR: - schneller, kompakter Code - nützliche Target-spezifische intrinsics kontra IAR: - häufig inkompatible Änderungen in der Syntax für Linker
Versionskontrolle arbeitet - integrierter Debugger war nicht wirklich nutzbar (mit AVR JTAGice mkII) pro gcc: - gute Kompatibilität bzw. Standardkonformität - Hilfe im Netz wenn es mal klemmt kontra gcc: - Code größer als bei IAR Vieles ist wohl dann einfach eine Gewohnheitssache, aber insbesondere
-
Thread
Demo-Programm von STK500
du könntest ja mal das gcc-tutorial lesen .... http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial da ist alles für den anfänger beschrieben ... lg
per einfachem Operator verfügbar sind, sind vor allem der Übersichtlichkeit halber da. Mit Optimierung werden die alle inline generiert, da sie ja nur ein einziges Mal benutzt sind.
-
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
makefile, hexfile funktioniert nicht
Hi, habe über Mfile http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Exkurs_Makefiles ein Makefile generieren lassen. Hab es an meine Bedürfnisse angepasst. Die SW baut auch (siehe Anhang build.txt) Allerdings, wenn ich das Hex File über das "AVRISP"
Debug Sachen raus gemacht usw. Die Speicherausgabe beider Compilermeldungen sind gleich. Als Optimierung hab ich einmal "s" und das andere mal ohne optimierung eingestellt, beides mal ohne Erfolg Gruß
-
Thread
PC kann -1 + 1 nicht rechnen.
im Beitrag #4420487: > Vielleicht -ffast-math oder -funsafe-math-optimizations aktiviert? Optimierungen sind ganz aus.
ne winzige Abweichung von null. Aber halt > nicht null..... Ich schreib übrigens in CodeBlocks mit GCC Dafür hab ich einen Text: > Floating point arithmethic is like moving a pile of sand. Every time > you do it, you loose a little sand and pick up a litte dirt. MfG Klaus
-
Thread
Typvereinbahrungen, array von Zeigern auf Flash
Da trete ich momentan auf der Stelle. So wie hier http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Array_aus_Strings_im_Flash-Speicher
gemeckert wenn ich <xchar's> und <xint's> gemischt habe. Das dürfte aber eher für die Qualität des gcc sprechen. Gruß Christian
-
Thread
GCC für ARM Probleme mit "new" ?
Timerobjekte außerhalb des Konstruktors natürlich erhalten bleiben. Als Compiler verwende ich einen GCC für ARM. Kennt der vielleicht kein "new" ? Kann mir da Jemand weiterhelfen? Vielen Dank!!!
Hier gibt es ein Beispiel, wie man dem GCC "malloc" beibringt, und dadurch auch "new" : [[STM32_Eclipse_JLink_Linux/Windows#Optional:_Syscalls_implementieren]] Was auch manchmal hilft ist #include <new>
-
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
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
Long in char Array umwandeln
sich aus irgendwelchen anderen Umständen ergibt, auch wenn das sich je nach Compiler-Parametern, Optimierung oder anderen Dingen unterschiedlich verhält. Der Compiler-Bauer muß sich schlicht überhaupt nicht drum kümmern und nicht mal drüber nachdenken, was denn in dem Fall passiert. Johann L. schrieb
memcpy(b, a, sizeof a); [/C] Das dürfte aus ISO-C-Sicht die sauberste Variante sein und beim gcc auch nicht langsamer oder umständlicher als irgendwelche union-Verrenkungen oder Pointer-Castereien.
-
Thread
[AVR] _delay_ms() funktioniert nicht mehr (vom Compiler ignoriert?)
nicht richtig funktionieren wird. :( Von STK500-Besitzer abgesehen, sagt ja niemand, das Du die Optimierung _ausschalten_ sollst. Das ist doch mal ein "RTFM" wert. http://www.groupes.polymtl.ca/inf1995/logiciel/progAvr/avr-libc-user-manual-1.8.0.pdf ;-)
Bei mir kommt mit [code]avr-gcc (GCC) 4.8.2-2[/code] [code]avr-binutils 2.24-1[/code] [code]avr-libc 1.8.0-5[/code] [code]avr-gcc -Os -g3 -o main.elf -mmcu=attiny2313 main.c[/code] unter ArchLinux folgendes heraus: [avrasm
-
Thread
Kleine Byte-Buffer Lib
inline" zu verwenden. Dazu zwinge ich den Compiler noch gern zu inlinen, weil er das (wegen Os Optimierung beispielsweise) nicht selbst tun will: __attribute__((always_inline)) für bspw. GCC Das ganze noch in ein Makro #define BYTE_BUFFER_INLINE static inline __attribute__((always_inline)) ;-) Übrigens, wenn sich nicht großartig was geändert hat am GCC (vorausgesetzt, der wird hier benutzt), dann ist Inlining NICHT möglich, wenn der Quellcode NICHT in der Header Datei steht.
-
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
BITs Bytes struct
zum Glück sagt die AVR-Gcc Doku, dass dieses unerlaubte Verfahren funktioniert. Andere Kompiler können sich anders verhalten. [c] struct I2CData{ uint8_t RS:1; uint8_t RW:1; uint8_t ENABLE
Arduino Fanboy D. schrieb im Beitrag #5763628: > zum Glück sagt die AVR-Gcc Doku, dass dieses unerlaubte Verfahren > funktioniert. Ich weiß. Aber man sollte sich sowas erst gar nicht angewöhnen.
-
Thread
va_arg() und signed long: Wo ist das Vorzeichen?!
ist aber auf Grund des riesigen Umfangs schwer zu sagen. Wenn du willst, kannst du mal auf der avr-gcc-list (at nongnu.org) nachfragen, dort lesen einige Leute mit, die sich mit dem GCC besser auskennen.
Leute mit, die sich > mit dem GCC besser auskennen. Gemacht.
-
Thread
Problem mit LTC1290
auch wenn ich es nicht (richtig) ausprobieren kann (Hab weder den ltc noch einen mega32) - Fuer AVR-GCC/AVR-Studio (Optimierung und F_CPU notwendig) - Atmega32 - alles in einer Datei, einfach an den entsprechenden Kommentaren trennen hth. Jörg (sieht AFAIK besser aus als das, was du oben gepostet
*Wow*... - wirf ruhig noch mal einen Blick ins [[AVR-GCC-Tutorial]], bitte! - itoa () ist beim GCC in der <stdlib.h> definiert - _Eigentlich_ gehört KEIN C-Code in die .h-Dateien (nur bei "__attribute__((inline))" -Funktionen lässt es sich nicht vermeiden
-
Thread
DTMF decoder
Durchgang) >Die Kernroutine ("int32_t = int32_t * uint16_t / 65535") war in >Assembler, der Rest in GCC. Ich kam auf rund 6 Millionen Takte pro >Sekunde. Also Kinderkram für einen ATMega. :-) Heißt das 37%@16Mhz Auslastung? Klingt gut. Vielleicht könnte man auch auf Assembler verzichten.
Deinem vorigen Post habe ich entnommen, dass die Multiplikation in Assembler geschrieben ist. Macht der GCC die Optimierung automatisch? Würde es etwas bringen, "inline" davor zu schreiben? >Der Code funktionierte zwar 1a auch mit realen Telefonatmitschnitten, >aber der Spezialbaustein MT8870 ist perfekt
-
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
Parameter an Funktion
Terminal nur Müll angezeigt bekomme (sendstring abgerollt in Main geht aber wunderbar!). Im AVR-GCC-Tutorial habe ich einen Hinweis auf die Harvard-Architektur gefunden, werde aber daraus nicht schlau. Die Zeichenkette ist ja statisch und wird vom Compiler WO hingepackt? Muß ich sendString einen
STK500 Testboard, der standardmässig 3.6864MHz liefert. Als Umgebung nutze ich den "vi" mit dem "avr-gcc", "make" und "uisp". Zu meiner Schande muß ich zugeben, mich nie mit dem GNU-Debugger beschäftigt zu haben. Saluti! Ludwig
-
Thread
Berechnung CTC Timer
blinken. Ich dachte ich muss den Aufrauf (500mal/s) selbst programmieren gemäß des Teilcodes aus dem AVR-GCC-Tutorial, wobei ich bis jetzt nicht ganz verstehe was in der Routine passiert und wozu die If-Abfragen dienen. ISR (TIMER0_COMPA_vect) { millisekunden++; if(millisekunden == 1000) {
dachte ich muss den Aufrauf > (500mal/s) selbst programmieren gemäß des Teilcodes aus dem > AVR-GCC-Tutorial, wobei ich bis jetzt nicht ganz verstehe was in der > Routine passiert und wozu die If-Abfragen dienen. > > ISR (TIMER0_COMPA_vect) > { > millisekunden++; > if(millisekunden ==
-
Thread
Fehler bei volatile-variable und ISR
... mal bei K&R nachlesen was das Attribut "volatile" bedeuted. Es wird lediglich die Optimierung der Sequenz unterbunden, aber nicht automatisch eine Interrupt-Sperre gesetzt. Wenn du also weiterhin mit globalen Variablen in verschiedenen Kontexten arbeiten möchtest, dann kommst du nicht umhin
Begrüssungstext raus oder kürze. Das spart heftig. Wenn du den Text so brauchst, verlagere den ins ROM (im AVR-GCC-Tutorial steht wie das mit PROGMEM geht).
-
Thread
Installationsprobleme Atmel Studio 7 unter Windows 10
Hi, Hast du die Optimierung in Projekteinstellungen aktiviert? Das ist ein Compilerflag. Ich kann leider auf dem Bild nicht sehen, ob du den simulator als Tool ausgewählt hast. Ist die Option direkt neben deinem Mikrocontroller
Hallo, danke erstmal für deine Antwort. Folgendes zu deinen Fragen: Die Optimierung ist deaktiviert (zu Testzwecken)! Ich erreiche auch wirklich die einzelnen Codezeilen jedoch werden diese nicht in gelb hervorgehoben!!! Ich habe als Debugger den Simulator verwendet! Bei
-
Thread
Eine weitere Bitumrechnung
aber der TO muss erst mal einen Fuß auf den Boden bekommen. Sonst hätte ich auch schon eine Optimierung vorgestellt.
Tausche deinen GCC mal durch GCC8 aus und mach -Wall -Werror an. Dann lässt er dich das nicht kompilieren, weil du sprintf deinen Buffer überlaufen kann.
-
Thread
Funktionsaufruf besser lesbar machen
Beitrag #3424149: > Das unterstützt bei weitem nicht jeder C-Compiler. Dafür sind wir ja aber im GCC-Forum. ;-)
gebastelt. Geht vielleicht effizienter, aber ich bin nicht der größte Fan von vorschnellen Optimierungen.
-
Thread
_delay_ms(..) abhängig von ATTiny Taktung?
wird ein F_CPU benötigt wenn Du die delay.h einbindest ? http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29
F_CPU *vor* include delay.h angegeben wurde (idealerweise im Makefile / Projektoptionen) *und* Optimierung aktiviert wurde.
-
Thread
ARM-Prozessor mit SRAM+Flash extern, ISP möglich?
empfehlendes das OpenSource / Freeware ist (Betriebssystem WinXP oder Linux)? Ich wollte eher mit GCC (entsprechende Tool-Chain fürs ARM crosscompilen natürlich) entwickeln... > 5: OKI stellt ARM7-Derivate mit externem Speicherinterface her; die > Typbezeichnung kannst Du herausfinden, indem Du
Man kann im übrigen beim GCC die option "-s" benutzen, die dann das selbe wie ein "strip" bewirkt. Und man kann die Infos die der Compiler über sich hinterlasst wie folgt entfernen: strip -R .comment <executablename> Ersparnis
-
Thread
MISRA C / ISO 62262 in der Praxis?
ist das durchaus drin. Zumal sich kommerzielle Anbieter ja mit irgendwas auch von der kostenlosen GCC-Konkurrenz abheben müssen.
hinter PC-Lint. Das ist in etwa so, wie (non safety) Keil- oder IAR-Kompiler dort wo es gute gcc-Backends gibt. Oder wie bei uns seinerzeit Tortoise/SVN gegen den Willen des Chefs eingeführt wurde, /weil/ es nichts kostete.
-
Thread
Gibt es einen Trick um "volatile"-Variablen zu "normalisieren"
Programms ist also kein Problem... Und für das vergessene Rückschreiben gibt's sogar Warnings vom GCC wie "value is set but not used". > Nunja mal sehn vielleicht kommt ja noch DIE LÖSUNG zu tage, auch wenn > ich mit den bisherigen definitiv Leben kann... Ich bin halt ein kleiner > Perfektionist
22; } std::cout << x; }[/c] Das sieht zwar furchtbar ineffizient aus, aber mit Optimierungen an (-O2 bei GCC) wird daraus genau der Code, den man haben will: Lade den Wert aus x, multipliziere ihn mit 924, schreibe ihn zurück nach x. Die geschweiften Klammern sorgen dafür, dass xb nur
-
Thread
Projekt Fußtreter
Weinmann schrieb im Beitrag #2616457: > wie kann ich denn "checken" ob ein pin 1 oder 0 führt? [[AVR-GCC-Tutorial#Zugriff_auf_IO-Ports]] Gruß Oliver
was schon ne menge > platz schluckt Vor allem wenn man es falsch benutzt, also wenn man die Optimierung beim Kompilieren ausgeschaltet hat oder keine Konstanten als Funktionsargumente übergibt! Prüfe mal, ob das bei deinem Programm der Fall ist.
-
Thread
Assembler Code in WinAVR einbetten mit Hilfe asm volatile
Errm, wenn du natürlich ohne Optimierung baust, brauchst du dich über nichts zu wundern... Das hatte ich stillschweigend vorausgesetzt.
findet sich bei den Robotern: http://www.roboternetz.de/wissen/index.php/Inline-Assembler_in_avr-gcc
-
Thread
Problem bei Compilerwechsel GCC -> IAR-Compiler
Nach dem Wechsel vom System GCC+Eclipse zur Embedded Workbench von IAR funktioniert meine Funktion zur Datenübertragung über die UART nicht mehr richtg. Es kommen nur noch die Hex-Zeichen 00 und 80 an, unabhängig davon was ich sende
Ich habe das ganze jetzt mal soweit wie möglich vereinfacht, und im Compiler die Optimierungen ausgeschaltet. Es kommen aber immer noch nur die Hex-Zeichen 00 und 80 an! :-( [C] #include ".\include\ADuC7026.h" void main(void){ GP1CON = 0x011; // Stelle die UART auf 9600bps
-
Thread
STM32 Locking in C
Umsetzung ineffizient. W.S. schrieb im Beitrag #5604389: > da macht man so etwas per SVC. Ach ja, GCC-Leute kennen das ja nicht Gerade heute habe ich einen syscall-Mechanismus per SVC mit dem GCC implementiert. Nur weil du das nicht hinbekommst heißt das nicht dass das nicht geht. Wie das geht findet
32-Bit Zugriffe Atomar. Das _Atomic ersetzt aber auch auf 32-Bittern das Assembler-Speicher-Optimierungs-Barrier.
-
Thread
Schnelle Assembler Multiplikation
Benutzen Compiler (zb der avr-gcc) sowas eigentlich zur Optimierung von Multiplikationen mit konstanten Werten? Das ersetzen von Multiplikationen mit 2er-Potenzen gehört ja zum Standard. Hier muss natürlich auch erücksichtigt werden
Johannes schrieb im Beitrag #3839179: > Gibt es einen bekannten Algorithmus, Jupp, schau z.B. in die GCC-Quellen. Der macht das nämlich so; irgendwo in der Gegend von expmed.c.
-
Thread
Probleme beim Debuggen mit SW4STM32 und und F7Disco
du? Liest du eigentlich die Postings? Bei deinem ersten Versuch übersahst du, dass ich die Optimierungen ausgeschaltet habe, und schlägst vor die Optimierungen auszuschalten. Nun fragst du nach der Software, steht auch im Eröffnungspost, SW4STM32. Quelltext bringt auch nix, weil es Quelltextunabhängig
Semihosting nichts anfangen > kannst. BTW was bitte hat Kenntniss über die Einstellung der Optimierungen mit Semihosting zu tun?
-
Thread
Übertrag bei 32-Bit Addition
Ich addiere zwei 32-Bit Zahlen. [c] VA = VB + VC; [/c] Wie bekomme ich in C (GCC WinAVR) mit ob ein Übertrag erfolgt ist? Wie kann ich das Carry-flag anzapfen?
4 Befehle für die Addition zuzüglich Carry-Extraktion. Sieht mir aber verdächtig nach Angst-Optimierung™ aus...
-
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
Frage zum ODM100 OLED Bausatz von ELV
von Anfang an ging, aber egal, jetzt gehts ja. Hat schon jemand den ODM100 Displaytreiber auf AVR-GCC portiert? Bin schon gespannt auf erste Projekte. So long Remo
ODM100.c Source Code für das Display gibt es doch eh bei ELV zum Download. Der Müsste doch mit dem AVR-GCC laufen. Wennst die RTC ansprechen willst hätte ich noch Code dafür... http://www.mikrocontroller.net/topic/183980#new
-
Thread
Mäanderförmige Array-Indizierung?
und* y-Richtung halbwegs gleichmäßig zuschlagen kann. Bevor du das von Hand machst: Compiler wie GCC versuchen, Maxrix-Operationen so umzusortieren, daß die Cache-Lokalität erhöht wird. Um das zu erreichen, verwendet GCC zum Beispie CLooG, den "Chunky Loop Generator" http://www.cloog.org/
umzubauen, daß eine möglichst hohe Cache-Lokalität erreicht wird. Vielleicht kann der Compiler die Optimierung ja schon von hause aus, und du musst garnix dazutun...
-
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 bootloader Probleme
Optimierung steht auf optimize for size, habe aber auch schon alles andere probiert. Falls interesse besteht kann ich das programm mal hochladen
das flag werde ich mal probieren. Heißt also, dass solche Probleme auch mit einer älteren avr-gcc Version auftreten könnten und ich nur das Glück hatte, dass hier keine Sprungtabelle verwendet wurde, oder liege ich da falsch?
-
Thread
Organisation von AVR-Projekten
machen und von wo anders her aufrufen. Schau dir am besten mal die Man-Pages zum AVR-GCC an. Einziger Stolperstein ist hier, dass der Linker immer noch den Einsprungpunkt in der C-Startup Funktion vermutet. Aber das liess sich auch deaktivieren, müsste nochmal nachschauen wo das war.
Bitvariablen zu definieren. D.h. Bitnummmer und Adresse in einem Namen abzulegen? Das gefällt mir am GCC sehr, hat mir auch am Keil C51 schon gut gefallen.
-
Thread
fragezeichen operator may be undefined
; printf("%u\n", x); return 0; }[/c] Ausgabe: [code]5 6[/code] Kompiliert mit GCC 4.9.3 mit -O3
@ Be Stucki (bestucki) >Kompiliert mit GCC 4.9.3 mit -O3 Gab es Warnungen?
-
Thread
sehr schnelle Signale messen
> Wohl kaum, wenn die Funktion nicht mal als static deklariert ist. Kommt auf die Optimierungs-Flags an. Wenn der Compiler Code vergrößern darf um Speed zu gewinnnen (z.B. -O3 beim gcc), dann kann er die Funktion zweimal einbauen. Einmal als inline und einmal normal. Ob der Compiler
in ASM schreiben. Besonders beim overhead der Interrrupts kann man da einiges sparen. Zumindestens GCC ist da gerade nicht sehr effektiv. Wenn man alles, oder zumindestens den ganzen Teil der während der Messung läuft in ASM schreibt, kann man noch etwas mehr sparen, denn in ASM kann man seperate Register
-
Thread
ARM: kompliziert?
der CoIDE ist ein link der es beschreibt. Download: Note: This version has not integrated GCC compiler. Before using CoIDE, you need to set GCC Toolchain first. Click here to see how to set. http://www.coocox.org/CoIDE/Compiler_Settings.html Wenn man denn gar nichts tun will sollte man
anders wie beim SDCC. Die Toolchain beim 32F4 ist im einfachsten Fall so simpel wie beim SDCC. GCC .. kompiliert .c Datei in Objectfile .o GCC .. linked ein oder mehrere .o Dateien in ein .bin Dazu gibt es ein Tool von ST mit dem man die Datei flashen kann. Das mit dem Makefile ist kein
-
Thread
Java auf AVR Gesperrt
Sicher mit 3.4.3? das kommt bei mir: <username>@<host> ~ > avr-gcc --version avr-gcc (GCC) 3.4.4 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY
erst dann wirklich zu einem Problem, wenn z.B. der Mega8-Code so gross wird, dass er nur mit den Optimierungen des gcc-4 in den Mega8 passt. Aber das ist noch nicht der Fall. Die avr-libc wird aber eher kritisch, das hat sich einiges geändert. Ggf. lässt sich das mit ein paar ifdefs regeln. Z.B. soll
-
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
-
Thread
constexpr Argument-Wrapper
return std::byte{0};}); // constraint not satisfied } [/c] Geht natürlich im Moment auch nur mit gcc (und -fconcepts).
Sry für den Necro, aber mir ist gerade aufgefallen dass GCC (7.3.0) schon jetzt nicht vollkommen Standard-Konform sein dürfte was das "Propagieren" von Constexpr-Ness angeht. Folgendes Schnipsel etwa compiliert mim GCC fehlerfrei durch [c] template<typename
-
Thread
stm32f103-bluepill-peripherie
Danke für eure Ausschweife, das löst aber mein Problem nicht. Kann von euch einer mit gcc arm inline Assembler in C programmieren? Eine schreibe und eine lese Routine für die stm32 Register. Für so etwas änliches wie ein HEX-Dumper mit der Möglichkeit der Änderung.
ich mich freuen wenn Carl zeigt, wie man das mit dem inline Assembler richtig macht, ohne weg Optimierung. Leider ist meine Begrifflichkeit nicht mehr so gut wie früher. Beim lesen der GCC inline Assembler Anleitung fing sich bei mir irgendwann der Kopf zu drehen an. Nochmals Danke an alle