-
Thread
AVR Flash Problem GCC
Hallo Leute, ich habe ein Problem mein mit Atmel Studio 6 erzeugtes Programm in den ATmega8 zu flashen. Er fängt mit dem Übertragen ja auch an, aber nach 192 bytes bricht er mit der Fehlermeldung ab: An error occured while executing command with ID 0x14. Timed out waiting for a response. 192 bytes was successfully received before the timeout. Protocol state at time of timeout was 'Get Data'. Ich vermute es liegt am Code. Nur das der Compiler nicht meckert. Habe leider kaum Erfahrungen mit Studio 6 wie man z.B. die Code Optimierungen ausstellt usw.... Es handelt sich um ein DCF77 Empfänger
-
Thread
GCC Compiler Optimierungen
Code im Anhang. Es wird die Variable dcc_daten[] in der ISR und in main verwendet. Sobald ich den GCC den Code optimieren lasse, ist der Inhalt von dcc_daten[] nur noch in der ISR selbst korrekt. In main lese ich nur noch "Müll" aus der Variablen. Was mache ich falsch? [c] #ifndef F_CPU #define
richtig C -konform deklariert, so das der Compiler mir da etwas wegoptimiert. Wie gesagt ohne Optimierung geht das so (mit 1300 Byte) mit Optimierung (egal welche) werden es dann ca. 800 Byte aber der Inhalt von dcc_daten[] ist nur noch in der ISR richtig.
-
Thread
AtmelStudio 6 - Bug oder Feature ?
32Mhz stabil sind und erst dann umschalten weil die Hardware das sonst ignoriert. Mit 'Size' optimierung läuft das wie erwartet. Schalte ich die Optimierung jedoch aus, funktioniert das nicht. Die Schleife wird durchlaufen, es bleibt aber beim 2Mhz Systemtakt. (code siehe unten) Keine Compilerwarnung
Michael Knoelke schrieb im Beitrag #2748100: > Mit 'Size' optimierung läuft das wie erwartet. > Schalte ich die Optimierung jedoch aus, funktioniert das nicht. > Die Schleife wird durchlaufen, es bleibt aber beim 2Mhz Systemtakt. Dann tippe ich mal, daß mehr
-
Thread
Compilersprache C -- Optimierung
Du in C so schreibst wie man in Pascal schreibt, dann hat der Compiler große Freiheiten für die Optimierung.
is the root of all evil. Vorzeitige Optimierung ist die Wurzel allen Übels.
-
Thread
effiziente Initialisirung mit Nullen
Entwickler der glibc gefragt. Er muss > dann memset anders implemtieren. memset ist im Falle von gcc im Compiler implementiert, wie ein Großteil der Standard-Blibliothek. Siehe http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Other-Builtins.html#Other-Builtins > Die Stringbefehle der CPU werden kaum
Peter II schrieb im Beitrag #2743994: > Und wenn gcc hier diese befehle bei memeset verwendet, dann vermute ich > ganz stark das jemand dieses expliziert von hand codiert hat. /Alles/ im GCC hat jemand explizit von Hand codiert. ;-) Oder was dachtest
-
Thread
default von Switch wird nicht abgearbeitt
>Jedenfalls sagt das AvrStudio beim >erstellen eines bookmark das dieser Teil vom Code der Optimierung zum >Opfergefallen ist. Das eine hat mit dem anderen nichts zu tun. Durch die Optimierung kann es schon sein, das der dahinterliegende Asm-Code irgendwo und noch zerfasert herumliegt, so das
Der Code funktioniert mit Optimierung nicht! Um den Fehler zu finden (Crc ist immer Falsch ) ist mir aufgefallen das der Defaultblock nicht erreicht wird. Hingegen ohne Optimierung geht der Code und es wird auch dieser Defaultblock
-
Thread
Atmel Studio 6 - Buildproblem
funktioniert auf Eclipse ja nicht aber auf Atmel Studio >6 :( Dann hattest du bei Eclipse evtl. die Optimierung nicht eingeschaltet, beim AVR STudio aber schon. Und bumm fliegen einem Warteschleifen die für den Compiler keinen Sinn machen um die Ohren. Wegoptimiert. Code zeigen!
auf Eclipse ja nicht aber auf Atmel Studio >>6 :( > > Dann hattest du bei Eclipse evtl. die Optimierung nicht > eingeschaltet, beim AVR STudio aber schon. Und bumm fliegen > einem Warteschleifen die für den Compiler keinen Sinn machen > um die Ohren. Wegoptimiert. > > Code zeigen! das ist
-
Thread
DSP von Texas Instruments oder Infineon fuer den privaten Gebrauch?
größeren DSPIC Den Compiler gibts bei Microchip. In der evaluation Version ist dann halt die Optimierung geringfügig eingeschränkt. Gruß Anja
Aufgabenspektrum > her nicht voll bedienen kann. Gibt doch eine Menge Tools, die kostenlos sind: - GCC für SW-Entwicklung - kicad für HW-Entwicklung - einige brauchbare Chip-Simulatoren (Skyeye, qemu, usw) Um wirklich was zu lernen, reichen die vollauf. Aber auch Profis arbeiten damit.
-
Thread
Rückgabe vom Typ uint32_t funktioniert nicht
im c-File der main() als auch im c-File der Funktion eingebunden. Achso, es geht um einen Avr & gcc. Die Optimierung habe ich eingeschaltet (-0s) Hat jemand eine Erklärung?
mal "volatile" an.. Der Compiler arbeitet bei mit volatile deklarierten Variablen ohne jede Optimierung.... Variable in der Unterfunktion debuggen und anschauen ob hier noch alles stimmt. Aber unbedingt wie schon erwähnt: Code posten! Gruß Choose
-
Thread
C vs. C#: float Performance
dasselbe Objekt bezeichnen. Und das führt dann zu ganz einfach durchzuführenden schlagkräftigen Optimierungen.
32/64 Bit verwenden. Unter 32 Bit kann man das dem gcc mit der Option "-mfpmath=sse" beibringen.
-
Thread
ARM ist die Zukunft?
wenn der µC mit der Leistung alles wettmacht. Die Zukunft wird also ein geringerer Bedarf an Optimierungen und die Verwendung von Hochsprachen bis hin zu Hilfslibs und Werkzeugen sein. Insofern, ja, ARM ist als 32 Bit µC eine potentielle und vom aktuellen Status her sinnvolle Zukunft. Ob der AVR32
grausiger Wildwuchs an Extensions und architekturellen Unterschieden drinsteckt. Mir als eifriger GCC-Nutzer ist insofern fast wieder egal, welche Architektur ich verwende, solange die "board supply packages" und die C-library oder der OS-Support (wie z.B. für Linux) einigermassen fehlerfrei ist, oder
-
Thread
Effizient Maske für höchstes gesetzes Bit berechnen?
Optimierungen vornimmt, auf die 99,9% der Assemblerprogrammierer nicht kommen würden.
Yalu schrob: >....dass der GCC mitunter Optimierungen >vornimmt, auf die 99,9% der Assemblerprogrammierer nicht kommen würden. Ich denke eher, daß die 0,1% in Deiner Rechnung fehlenden Leute zu 100% hier im Forum vertreten sind
-
Thread
STM32F4-Discovery - welche toolchain?
nicht an meinen selbst gesetzten Breakpoints >stehen :( >vielleicht hat jemand eine idee? Optimierung abschalten?
holger schrieb im Beitrag #2745098: > Optimierung abschalten? hab ich und -ggdb flag ist auch gesetzt
-
Thread
Unterfunktionen in Section verbannen
Section gelegt. Das willst du doch? Es schafft bestenfalls die Voraussetzung für eine solche Optimierung, die dann in den binutils geschehen kann.
ffunction-sections -fdata-sections CFLAGS += -Wl,--gc-sections CFLAGS += -Wl,--relax[/pre] avr gcc-Version 4.3.5 (GCC)
-
Thread
AVR Synthesizer mit ATxmega128A1
Hallo zusammen.. Zur Zeit arbeite ich an der Optimierung der MiniScope Funktion in meinem Synth. Ziel der Optimierung ist das schnelle Zeichnen von Wellenform Kurven auf dem SainSmart TFT 3.2 Allerdings habe ich bei der LCD Orientierung im Landscape
Hallo liebe Freunde smile Ich habe die "Optimierung" in Atmel Studio 7 von -OS zu -O1 geändert. Das Ergebnis ist ein schnellerer Code und ein wenig mehr Code im Programmspeicher des Xmega Prozessors. Durch die geänderte Optimierung ist der Code
-
Thread
Bit Array in C
kennen diese Spielchen alle. Und noch ein paar mehr, von denen DU noch nie gehört hast. Dreh die Optimierung deines Compilers auf und wenn es möglich ist, eine Division durch etwas Besseres zu ersetzen, dann macht das der Compiler. So etwas ist eine (triviale) Standardoptimierung seit über 45 Jahren. Wenn
_t div(int8_t x) { return x/4; } uint8_t udiv(uint8_t x) { return x/4; } [/c] Mit gcc Optimierung -Os übersetzt gibt es das: [code] 00000000 <div>: 0: 87 fd sbrc r24, 7 2: 8d 5f subi r24, 0xFD ; 253 4: 85 95 asr r24 6: 85 95
-
Thread
Switch Case verzweigung so Anwendbar auf ATmega 32?
Vergleiche im Quellcode auf. Bei der Case-Methode beinhaltet jeder Case zwei Vergleiche. Der GCC optimiert das zwar, aber bei der If-Methode braucht man sich nicht auf die Optimierungsfähigkeiten des Compilers zu verlassen. 5. Trotz Optimierung erzeugt der GCC bei der Case-Methode meist
Yalu X. schrieb im Beitrag #2702147: > 5. Trotz Optimierung erzeugt der GCC bei der Case-Methode meist längeren > Code. Wenn man Pech hat, legt er eine Sprungtabelle mit jeweils einem > Sprung für jeden in den Intervallen enthaltenen Zahlenwert an
-
Thread
Kleiner endlicher Automat (FSM)
jeweiligen Funktionen auch direkt aufrufen: Hmm. Ich denke es ist kein guter Stil, sich auf eine Optimierung zu verlassen damit ein Programm funktioniert. Spätestens wenn man zum Debuggen die Optimierung ausschaltet ist es vorbei damit. Besonders übel wäre es auch, wenn in irgendeinem Spezialfall die Optimierung nicht angewandt wird und das Programm crasht. Das wäre ein schwer zu lokalisierender Bug. Da schreibe ich lieber die "korrekte" Version mit Funktionspointer.
-
Thread
SDCard, Widerstands-Level-Converter, Speed?
mehr Hinweise finden? Wie mache ich das, oder wo finde ich mehr Infos drüber? Bzgl. ASM-Code Optimierung. Habe schon recht viel erreicht.. komme von 372 KB/sec. lesen und mit Code-Optimierung, inlining komme ich auf 486 lesen. schreiben 166 -> 216 KB/sec. http://www.matuschek.net/atmega-spi/
Und hier noch ne dreckige Lösung in Assembler für GCC. Dort wird SPIF nicht abgefragt:)
-
Thread
loop 512 mal - 16Bit oder 2*9Bit Counter?
do { //irgendwas } while ( --count2); count2 = 255; } while ( --count1); [/c] Ohne Optimierungen erhalte ich 512 * 8 Instruktionen für die 16-Bit Variable und 256 * 2 * 5 + 2 * 7 Instruktionen (= 2574) - falls ich mich nicht vertan habe. Die Takte habe ich nicht ausgezählt.
:\Program Files (x86)\Atmel\Atmel Studio 6.0\extensions\Atmel\AVRGCC\3.4.0.65\AVRToolchain\bin\avr-gcc.exe" -funsigned-char -funsigned-bitfields -O1 -fpack-struct -fshort-enums -g2 -Wall -Wundef -Werror -pedantic -pedantic-errors -c -std=gnu99 -save-temps -MD -MP -MF "main.d" -MT"main.d" -MT"main.o"
-
Thread
Switch Case compiler übersetzung in asm. fehlerhaft
schrieb im Beitrag #2699346: > -mshort-calls Davon rate ich ab. Das Problem ist da: http://gcc.gnu.org/viewcvs/branches/gcc-4_7-branch/gcc/config/avr/avr.c?view=markup&pathrev=187343#l9455
Johann L. schrieb im Beitrag #2699366: > Davon rate ich ab. Das Problem ist da: > http://gcc.gnu.org/viewcvs/branches/gcc-4_7-branch/gcc/config/avr/avr.c?view=markup&pathrev=187343#l9455 Das musst du mir erklären, ich sehe da nur viiiiiel Code...
-
Thread
RGB Led mit PWM und 120Grad vesatz
i-- ) { for ( j = 51; 0<j; j-- ) { } } } [/code] Falls du GCC verwendest, denke ich dass dir diese zwei loops wegoptimiert werden. Somit wechseln deine Farben dann ohne delay. ich würde <util/delay.h> includen und dann deine Funktion durch Folgendes ersetzen
Danke allen für die Hilfe. @Nik B. Danke für den Tipp, habe aber die Optimierung schon ausgemacht. @Flo Guter Tipp. Anhand dieser Zeichnung versuche ich einen Code zu schreiben, müsste Klappen. Ich setz mich jetzt dran.
-
Thread
Wunschliste für einen Xmega Nachfolger
einen ordentlichen C++ Compiler? Ordentlich heißt dabei vor allem gute Template Unterstützung/Optimierung.
einen ordentlichen C++ Compiler? Ordentlich > heißt dabei vor allem gute Template Unterstützung/Optimierung. Offiziell unterstützt Microchip kein C++. In der Praxis ist der C30 jedoch nur ein modifizierter gcc. Zu den Hitech-Compilern kann ich nichts sagen. fchk
-
Thread
AVR Studio 5.0 und 5.1 Version GCC/Toolchain?
Welche Version wird denn bei avr-gcc -v angezeigt?
pre] oder sowas: [pre]avr-gcc (GCC) 4.8.0 20120521 (experimental)[/pre] mit avr-gcc -v kommen etwas mehr Informationen, aber auch daraus ist die GCC-Version erkennbar. Allerdings hatte Atmel auf Bugs durch eigene Patches;
-
Thread
String als Parameter übergeben
Die Optimierung hat versehentlich auf -Os (für Size) gestanden weil die Datei später zum Projekt hinzugefügt wurde. Seit die Optimierung am GCC abgeschaltet ist, tut auch der Debugger wieder wie erwartet. Leider
Janvi schrieb im Beitrag #2686205: > Die Optimierung hat versehentlich auf -Os (für Size) gestanden weil die > Datei später zum Projekt hinzugefügt wurde. Seit die Optimierung am GCC > abgeschaltet ist, tut auch der Debugger wieder wie erwartet.
-
Thread
optimierung von sbi/cbi
hi, gibt's eigentlich eine möglichkeit, dem compiler beizubringen, zb das folgende automatisch zu optimieren? da kann man ja so einiges zusammenfassen. von hand wäre das aber mühsam und fehleranfällig. normalerweise schreibe ich ja nicht "PORTB |= _BV(PB5);" sondern habe makros für sowas. [c] PORTB |= _BV(PB5); 393c: 2d 9a sbi 0x05, 5 ; 5 PORTB |= _BV(PB4); 393e: 2c 9a sbi 0x05, 4 ; 5 PORTB |= _BV(PB2); 3940: 2a 9a sbi 0x05, 2 ; 5 PORTB |= _BV(PB3); 3942: 2b 9a sbi 0x05, 3 ; 5 PORTB |= _BV(PB0); 3944: 28 9a sbi
-
Thread
Addition oder OR
kann bestätigen das mit einem Sun Solaris Sparc Compiler "verodern" schneller ist. Wie es sich mit gcc und/oder anderen Prozessoren verhält weiss ich nicht.
Peter Dannegger schrieb im Beitrag #2688222: > Beim AVR-GCC ist mir aufgefallen, daß er OR nicht mag. Siehe http://gcc.gnu.org/PR41076 Konstruktive Vorschläge sind willkommen und können für avr-gcc 4.8 umgesetzt werden.
-
Thread
PIC 18f452 Hilfe Bei 1. C programm mit sdcc
Beim MCC18 wird lediglich _eine_ der vielen Code-Optimierungen nach einiger zeit deaktiviert, nicht alle. "Procedural abstraction", soweit ich das noch in Erinnerung habe. Alle anderen Optimierungen bleiben verfügbar. Grüße, Chris
bei "-O2" (optimize for speed) aber etwas langsamer als bei "-Os" (optimize for size). Welche Optimierungen in den jeweiligen Stufen durchgeführt werden steht im User Manual des GCC.
-
Thread
ADC Channelauswahl
und y und sonstigem Schnickschnack. Aber: All das steht doch auch so im ADC-Teil, der im [[AVR-GCC-Tutorial]] verlinkt ist. Inklusive einer funktionierenden Routine, die einen beliebigen Kanal (und damit auch 2 verschiedene hintereinander) abfragen kann. Hast du da schon mal reingeschaut? [[AVR-GCC-Tutorial
, wo du Zeitprobleme hast * und dann, wenn feststeht, dass du in einem bestimmten Bereich Optimierungen brauchst, dann fang mit Optimierungen an. Premature optimization is the root of all evil
-
Thread
Suffix bei konstanten Werten
z.B.: int tmp; tmp = 15U; Was hat die Kennzeichnung als unsigned für einen Sinn? Macht der GCC dann spezielle Operationen? Wie sieht das mit L (Long) aus? Viele Grüße
Verhalten kann etwa vom jeweiligen float-Layout abhängen. Dies ist auch der Grund dafür, daß GCC Bibliotheken wie GMP und MPFR verwendet und voraussetzt: GCC verwendet nicht die Host-FPU für solche Compilezeit-Optimierungen, sondern macht alle Berechnungen per Emulation und mit dem Layout wie auf
-
Thread
Casten funktioniert nicht
oder nimm zum Testen die Codeoptimierung raus. Nicht oder! Wenn er simuliert, muss er die Optimierung ausschalten. Das ist Grundvoraussetzung.
Testen der ersten. Simulator schrieb im Beitrag #2685962: > Wenn er simuliert, muss er die Optimierung ausschalten. Das ist > Grundvoraussetzung. Damit geht man zwar auf Nummer sicher. Aber ein Muss ist das nicht. mfg.
-
Thread
Seltsames Verhalten mit globaler Variable in externer C Datei
danke für die Rückmeldung. Es ist der gcc mit der Optimierung -0s. Nutze das AVR-Studio und programmiere in C. Die Variable ist namentlich im Main nur in der Ausgaberoutine enthalten und auch sonst wird der Name nicht verwendet....hatte
-
Thread
Speicherfresser Atmega
Hallo Markus, wie sieht den dein Makefile und die optimierungs Optionen aus ? CFLAGS += ... _
richtig, ich hatte nicht auf den Namen geschaut. Mehr ist dann auch nicht mit automatischen Optimierungen machbar. Evtl. spielt man mal mit dem avr gcc 4.7.
-
Thread
ATmega168 Bootloader
Mit welcher Optimierungs-Einstellung kompiliert?
Auch hier fällt mir wieder die Verwendung des Z Registers auf, mein Compiler macht das anders (avr-gcc 4.3.3). Hab mal den C Code reingemischt: [code] char sregtemp = SREG; +00001C6B: B72F IN R18,0x3F In from I/O location cli(); +00001C6C: 94F8 CLI
-
Thread
Copy Constructor Riddle
GCC compiliert es problemlos, und die Ausgabe ist: This space has been intentionally left blank: ->1<-
Ausgabe an cout, die sich durch die Optimierung ja tatsächlich nicht verändert.
-
Thread
AVR Studio Debuggen von C
Hallo, also ich habe die Version 4.14 vom AVR Studio runtergeladen und versuche gerade GCC zu Debuggen. Das meiste funktioniert für den ATTINY 85 ziemlich gut, es gibt aber ein paar Sachen, die überhaupt nicht funktionieren: - nicht für jede Variable, die berechnet wurde wird ein Wert
vielleicht daran: >also ich habe die Version 4.14 vom AVR Studio runtergeladen und versuche >gerade GCC zu Debuggen. Weshalb nutzt du nicht 4.19? MfG Spess
-
Thread
GPIB-RS232-Schnittstelle
kein Experte auf dem Gebiet. Ich benutze für gelegentliches Programmieren den WinAVR (=Notepad++, gcc-avr und avrdude), der erzeugt gar keine .bin Datei, deswegen weiß ich nicht was ich mit der Datei anfangen kann. Selber compilieren hat auf den ersten Anlauf hin nicht funktioniert ("makefile:58: dependencies
belegt weniger als 14k der zur Verfügung stehenden 32k des mega32U4-Flashs -- trotz stärkster Speed-Optimierung. Ein kleiner Hinweis am Rande: Die aktuellen TI-Datenblätter der SN75161 und 162 enthalten einen Fehler: Die Richtung des SRQ-Signals ist invertiert dargestellt. Sie muss dem ATN-Signal entgegengesetzt
-
Thread
Keil, IAR vs GCC
für Argumente sprechen dafür einen Keil oder IAR Compiler zu verwenden, anstatt einem kostenlosen GCC. Im Speziellen würde mich GCC für ARM für Industrieelektronik interessieren. Lors
Bedacht und nutzt gegebenfalls eigene Funktionen (Atmel macht das z.B. bei stdio in Beispielen für arm-gcc so), sind die Unterschiede in Bezug auf Codegröße sehr viel geringer. Stöbert man durch die Quellen der newlib, findet man auch einige Änderungen zur Optimierung, die von Leuten mit arm.com-E-Mail
-
Thread
LPC1788 - startup / .ld-script
schrieb im Beitrag #2645881: > Compiliert mit der NXP CodeRed, läuft auf dem LPC1769. Welcher GCC ist das? Mit welcher Optimierung? Könntest Du bitte in Deiner Version eine Division einbauen und den Part posten, in welchem die Division aufgerufen wird? [code] ull /= 10 [/code] Bei mir
Datentypen auf uint32_t ab, ist alles in Ordnung. Das gleiche Bild. Auch hier die Frage, welcher GCC, welche Optimierung, Assembler listing? Tobias Neumann schrieb im Beitrag #2645230: > Hier der Link zur CMSIS mit 64bit uints: War diese Teil der "Code Red Tool chain" oder wurde diese später
-
Thread
GCC Optimierer zerlegt Block (compound-statement)
, dass du es blöd findest. Nur ist GCC nicht für Mikrocontroller entworfen worden und diese Optimierungen sind allgemeiner natur, damit erwischt es jede Maschine. Wobei schon allerlei Optimierungen im AVR Backend abgeschaltet werden,
wir bei der Programmierung von MCUs öfter mal die Takte zählen und Interrupts fein steuern. Die Optimierung des GCC für einen PC, Mainframe oder Supercomputer ist sehr gut, aber bei zeitkritischen Programmen auf einer MCU ist die Optimierung mach mal hinderlich. Außerdem ist die 8 Bit AVR Architektur
-
Thread
Addition mit Sättigung - wie in C ?
> Und das unsigned Zeug ist ja eh bei DSP nicht zu gebrauchen. :-) > > Also, wer patched den GCC? ;-) Olle Kamellen: Siehe -fno-strict-overflow oder -fwrapv Guckst du: http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#index-fwrapv-2246 http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Die glibc ist Teil von GCC? Aha. Das ist mir bislang entgangen.
-
Thread
Zu wenig ram?
; // Bit ist gesetzt! } [/c] Viel Spaß, Frank P.S. Sei unbesorgt: Der gcc wird die Division durch 8 durch einen Schiebebefehl ersetzen. Ebenso wird der Modulo-Operator durch entsprechendes Maskieren erledigt. Die obigen Macros sind daher bei Optimierung mit -Os nicht sehr
-
Thread
AVR Studio immer schlechter?
@Michael: Ich stell die Optimierung für jedes Projekt dauerhaft ein. Also nach dem erstellen einmal rein in die Compiler optionen, und bim C- und C++-Compiler unter optimization(oder so ähnlich -.-) den Grad der optinierung eingestellt
@stefan: Den GCC gibs auch für Fenster ;) Meine Güte, da hab ich ja was losgetreten, dann kloppt euch mal!
-
Thread
Attiny Speicher zu knapp
Ist hier beschrieben http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29
stimmt was du da erzählst dann benutzt du einen miesen Compiler oder machst böse Dinge (keine Optimierung, nicht-konstante Delays usw.). Denn auch mit dem GCC kann man den Code aufblähen aber dann hat man definitv etwas falsch gemacht. gruß cyblord
-
Thread
Warum ist das AVR-GCC Tutorial so bescheiden?
Um Missverständnisse zu vermeiden: Das AVR-GCC-Tutorial ist kein C-Tutorial (wie bspw. das von Christian empfohlene http://www.rn-wissen.de/index.php/C-Tutorial), sondern ein Tutorial zu den speziellen Eigenschaften des AVR-GCC. Wer das Tutorial
> Warum ist das AVR-GCC Tutorial so bescheiden? Bescheidenheit ist eine Zier, doch weiter kommt man ohne ihr.
-
Thread
GCC ARM Cortex-M3: Merkwürdiger Assembler Code von C++-Routinen
(ich verwende Sourcery G++ Lite): arm-none-eabi-gcc -o test1.o -c -DSTM32F10X_MD_VL -DUSE_STDPERIPH_DRIVER -Wall -mcpu=cortex-m3 -mthumb -g3 -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-inline -ffunction-sections
Hallo, ohne -fpack-struct wird daraus bei mir (Sourcery gcc version 4.6.1): [code] movs r3, #17 str r3, [r0, #0] [/code] mit -fpack-struct erhalte ich das selbe Ergebniss wie du.
-
Thread
Einstieg in die Mikrocontroller-Welt mit Pollin's Evaluationsboard oder Arduino
> equivalente Programme? Ja. WinAVR ist im Grunde nichts anderes als die ubuntupakete: avr-libc, gcc-avr, binutils-avr und avrdude zusammen. Das ist zwar nicht die ganze Wahrheit, aber diese Pakete reichen zum Entwickeln. Als IDE kann man Codeblocks oder Eclipse nehmen oder man coded über den Texteditor
Und viel > wichtiger noch: was für Teile hast du anfangs wo für wieviel Geld > gekauft?? :) Das GCC Tutorial auf dieser Seite zusammen mit der Bestellliste, die auch auf dieser Seite zu finden ist. Mich hat es teilweise sehr verwirrt, sowohl Struktur, Inhalt und Umsetzung. Ich habe, nachdem ich
-
Thread
Ein Programm mit unterschiedlichen Auswirkungen
meinte ich die Optimierungsstufe. Die ist auf -0S eingestellt. IDE verwende ich AVR Studio 4 und den GCC Compiler. Lg
Vorteile würde mir eine Optimierung bringen? Daß der Code kleiner und schneller ist als ohne.
-
Thread
True =1 false =0 kann man damit rechnen?
lesbar, als ein Pointercast. Das funktioniert aber nicht bei Bitfeldern. Diese Bitfelder mit dem avr-gcc waren eben diese Ausnhame, die ich erwähnte, die durchaus praktisch ist. Und sie ist wohldefiniert, wenn man die Anleitung des gcc gelesen hat.
auf was anderem als gcc nutzen will.
-
Thread
AVR gegen den Rest der Welt
Vertrauen. 2. AVR und GGC AVR ist nicht zuletzt auch durch die Verfügbarkeit eines brauchbaren GCC-Ports populär geworden. Dabei sind AVR und GCC kein "Dream Team". Beim Design der AVR-Architektur saß IAR (schwedischer Compilerbauer) mit am Tisch, und die AVR-Architektur wurde an die IAR-Compiler
GCC-Versionen größeren Code erzeugen als ältere. Die AVR-Portierung hängt immer hinterher und ist auch nicht in den Hauptzweig integriert. Die verschiedenen Adressräume sind für den GCC ein Hindernis -