.hex File

Hallo,

ich nutze die Arduino IDE auf dem Mac, nun möchte ich gern ein Programm weitergeben, was auch mit der IDE geflashed werden kann, jedoch ohne Quellcode rausgeben zu müssen! Gibts da ne Möglichkeit?

Besten Dank!

Hallo,

wie Du selbst schon vermutest, kannst Du die .HEX-Datei weitergeben. Der Empfänger muss dann nur die Möglichkeit haben, sie in den Controller zu programmieren.

Gruß,
Ralf

  1. Wo find ich das File unter OSX
  2. Wie macht er das? Soweit ich weiß hat er "nur" die Arduino IDE

Danke! :slight_smile:

Dir ist schon klar, daß Du mit Open Source Software unter Common Creative Lizenz arbeitest, von uns und der Comunity jede Menge Hilfe bekommst/bekommen hast und uns jetzt fragst wie Du die Lizenz nicht einhalten mußt?
Wieso magst Du nicht den Sketch geben?
Grüße Uwe

Einfach um Quellcode nicht weitergeben zu müssen!

uwefed:
... und uns jetzt fragst wie Du die Lizenz nicht einhalten mußt?

Hallo Uwe, mir ist es tatsächlich nicht klar, was hier gegen eine Lizenz verstößt. Bitte um kurze Aufklärung.

Gruß,
Ralf

Weil die Weitergabe kompilierter Opensource nicht zulässig ist. Die Weitergabe von Libs ist nur im Opensource Format möglich inkl. Lizenztext.

@mde110: Stimmt, das macht - im Hinblick auf den Namen OpenSource - schon Sinn. Da ich sowieso immer die Quelltexte mit veröffentliche, hatte ich mir bisher noch keine Gedanken darüber gemacht. Danke!

Gruß,
Ralf

mde110:
Weil die Weitergabe kompilierter Opensource nicht zulässig ist.

Das ist nicht korrekt wiedergegeben. Die “Arduino-Software” ist selbst “Open Source” und wird ja auch in kompilierter Form weitergegeben.

Im wesentlichen kommen bei der Arduino-Software zwei Open-Source-Lizenzen zum Tragen:

  1. Die GPL-Lizenz: http://de.wikipedia.org/wiki/GNU_General_Public_License
  2. Die LGPL-Lizenz: http://de.wikipedia.org/wiki/GNU_Lesser_General_Public_License

Die “Arduino-Software” steht unter GPL-Lizenz
Der “Arduino-Core” und die “Arduino-Libraries” stehen unter LGPL-Lizenz

Der wesentliche Unterschied in Sachen Quellcode:

Wenn Du mit Hilfe von Open-Source-Code unter GPL-Lizenz eine davon abgeleitete Software entwickelst, darfst Du natürlich die kompilierte Software kopieren und verbreiten. Aber Du mußt auch den vollständigen Quellcode mitgeben. Dies trifft auf die “Arduino-Software” zu. Falls Du also eine modifizierte Softwareentwicklungsumgebung zur Programmierung von Mikrocontrollern aus der Arduino-Software entwickelst, ist die Weitergabe der Quellcodes aus Lizenzgründen notwendig.

Bei der “Lesser GPL” (LGPL) sind die Anforderungen geringer, wie der Ausdruck “Lesser” im Namen der Lizenz schon ausdrückt. Alle “offiziellen Arduino-Libraries” und die Dateien des “Arduino-Core” stehen unter der LGPL, haben also “lesser” (geringere) Anforderungen. Einfach mal reinschauen, z.B. im Installationspfad in den Quelltext unter
…\arduino-1.0.5\libraries\Wire\Wire.h
da steht eindeutig:
This library is free software; you can redistribute it and/or

  • modify it under the terms of the GNU Lesser General Public*
  • License as published by the Free Software Foundation; either*
  • version 2.1 of the License, or (at your option) any later version.*

Und bei der “Lesser” License ist niemand verpflichtet, von seinem selbstgeschriebenen Code den Quelltext offenzulegen. Was er bei Software unter Verwendung von LGPL Libraries machen muß: Er muß jedem ermöglichen, den Code in ein Programm zu linken, der NICHT von ihm selbst geschrieben wurde, also der Code, der in den verwendeten Libraries steckt. Und dem tut er genüge, wenn er
a) kompilierte sogenannte “Object Files” weitergibt oder
b) die Quellcodes der verwendeten Libraries (einschließlich Core-Libraries) unter LGPL Lizenz

D.h. sofern er ausschließlich die mit Arduino mitgelieferten Libraries zum Programmieren verwendet, braucht er nur weiterzugeben:

  • sein fertiges Programm als .hex File
  • Quellcodes aller verwendeten Libraries

Sofern er weitere Libraries verwendet, die er von anderen Seiten heruntergeladen hat, muß er unterscheiden:
1.) Wenn auch nur eine einzige Libary darunter ist, die nicht unter der LGPL, sondern der GPL veröffentlicht wurde, dann muß er den gesamten Quellcode seiner damit erstellten Anwendung weitergeben
2.) Wenn alle verwendeten Libraries unter der LGPL veröffentlicht wurden, muß er nur den Quellcode dieser Libraries mitgeben, jedoch nicht seinen eigenen, selbstgeschriebenen Quellcode.

Richtig ist also: Open-Source Quellcode muß er in jedem Fall mitgeben (oder anbieten, das jahrelang kostenlos nachträglich zu machen).

Sein selbstgeschriebenes Programm wird aber nur zu Open Source, wenn er mindestens eine Library unter GPL einbindet, mit der Verpflichtung, den vollständigen Quellcode weiterzugeben.

Sein selbstgeschriebenes Programm bleibt aber seine Privatsache, wenn er ausschließlich Libraries unter LGPL verwendet, mit der Verpflichtung, dann nur den Quellcode (oder sogar nur die Object-Files) der verwendeten LGPL-Libraries zusammen mit seiner Software weiterzugeben.

@jurs: Spitzen-Erklärung! Dankeschön! Wie gesagt, mir ist es eigentlich sowieso Banane, weil ich immer die Quelltexte mit veröffentliche, aber gut das zu wissen (ich weiß, ich hätte die Lizenzen vorher schon lesen können, habe ich aber nicht - wenigstens nicht komplett, Asche auf mein Haupt :blush: ) ).

Gruß,
Ralf

jurs:

mde110:
Weil die Weitergabe kompilierter Opensource nicht zulässig ist.

Das ist nicht korrekt wiedergegeben. Die “Arduino-Software” ist selbst “Open Source” und wird ja auch in kompilierter Form weitergegeben.

Die IDE von Arduino ist in kompilierter Form erhältlich, aber auch das Source-File.
Antworten gibt es unter http://arduino.cc/en/Main/FAQ

Grüße Uwe

uwefed:
Antworten gibt es unter http://arduino.cc/en/Main/FAQ

Ja klar, und im Gegensatz zu meinem ausführlichen Beitrag zu den sich aus der GPL bzw. LGPL ergebenden Pflichten ist auch dort der Unterschied zwischen den Open-Source Lizenzen "GPL" und "LGPL" eindeutig erklärt, heißt es dort doch kurz und bündig:

Using the Arduino core and libraries for the firmware of a commercial product
does not require you to release the source code for the firmware.
(Text aus dem Arduino-FAQ, die Fett-Hervorhebung von mir.)