Path: csiph.com!weretis.net!feeder4.news.weretis.net!news.szaf.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Bernd Laengerich Newsgroups: de.sci.electronics Subject: Re: Arduino IDE Date: Wed, 28 Feb 2018 22:36:33 +0100 Lines: 57 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net k7GzZ6mATcuAheb4mYBMFwFUra/SdzFuczQMNCY/8SXhN3Q8w= Cancel-Lock: sha1:WkFkJR6yBUovfmKveAPnOxdnhY0= User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 In-Reply-To: Xref: csiph.com de.sci.electronics:241556 Am 28.02.2018 um 20:02 schrieb Gerald Oppen: > Jörg weiss wovon er schreibt. Da bin ich mir nicht so sicher, er entwickelt soweit ich weiß keine Software. Ich gebe zu daß ich derzeit relativ wenig mit Atmel und gcc/as mache. Insgesamt gibt es bei der Embedded-Programmierung deutlich mehr Fallgruben als es sich der "normale" Applikationsentwickler gemeinhin vorstellt. > Deine Aussage passt vielleicht zu den Durchschnittsanwendungen, wenn es > dann aber mal anspruchsvoller wird trennt sich die Spreu vom Weizen. Es gibt mehrere IDEs für Atmel, viele davon benutzen die GNU-basierte toolchain mit make, avr-gcc und -as, ld, u.A. auch Atmel Studio. Andere Compiler wie IAR oder Rowley Crossworks (Keil macht AFAIK kein AVR, aber z.B. 8051 und ARM) können und werden natürlich anders arbeiten (und haben ggf. weniger, mehr oder andere Fehler, je nach Version), aber das ist selbstverständlich und nicht IDE-spezifisch, üblicherweise sind sowohl die Optionen für den build anders als auch eventuelle Inline-Code-Optionen wie #pragma. Ich mag aber nicht glauben, daß z.B. gcc und as, mit den selben Schaltern aufgerufen, aus dem gleichen Source unterschiedlichen Code produzieren und dabei magisch "erkennen", ob sie von einer IDE, von Hand oder aus einem makefile von jenkins aufgerufen werden. Die Arduino-IDE erlaubt keine direkte Steuerung der buildparameter (sie sind in den Konfigurationsdateien hardware/platform.txt, hardware/arduino/avr/platform.txt und möglicherweise weiteren versteckt), daher ist sie für anspruchsvollere Anwendung mit projektspezifischen Einstellungen weniger geeignet, das schrieb ich ja an Eric. Wer, aus welchen Gründen auch immer, die Arduino-IDE statt beispielsweise Atmel Studio nutzen möchte, wird dann sinnvollerweise auf ein makefile ausweichen und dabei Arduino Builder oder Arduino-Makefile zusätzlich nutzen. > Fängt schon bei der Codeoptimierung an. "Die IDE" macht keine Codeoptimierung, das macht, wenn man es denn erlaubt, der Compiler/Assembler der Toolchain, gesteuert durch Projektoptionen die beispielsweise im makefile vergraben werden. Hier ging es um das direkte beschreiben eines ATMega-Registers, das wäre üblicherweise Assembler (in C hat man eingeschränkt Einfluss auf die Registerwahl per global oder local register variable definition), entweder inline oder als Assembler-Datei. Der Optimierungseinfluß dazu kann nur im Zusammenhang betrachtet werden, nicht an Hand eines einzelnen Befehles. Natürlich gibt es in verschiedenen Versionen auch verschiedene Bugs, aber auch hier sehe ich nicht "die IDE" als verantwortlich dafür an. Wer allerdings Takte zählt und zeitkritische Sachen macht, wird um zumindest teilweise Assembler nicht herumkommen und dort dann vermutlich auch Optimierungen abschalten. avr-as hat AFAIK keine Optimierungen, avr-gcc schon. Und Inline-Assembler ist nicht vor Optimierungen geschützt, dazu gibt es z.B. Beispiele wie dieses: Bernd