mikrocontroller.net

Forum: Compiler & IDEs Closed source mit GCC/avr-lib


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist es mit der Kombination GCC/avr-libc möglich, kommerzielle
Anwendungen zu erstellen, deren sourcecode man nicht veröffentlichen
muss ? Mit der BSD Lizenz der avrlibc sollte es keine Probleme geben.
Sicher bin ich mir nicht bei der GPL.

Klingt jetzt vielleicht egoistisch, aber arbeite an einer Schaltung die
einen µC enthalten soll. Was damit passiert entscheide nicht ich, daher
will ich lieber auf Nummer sicher gehen.

Im Moment schwanke ich noch zwischen AVR's und PIC18FXX's. Ein
wesentlicher Vorteil der PIC18s ist halt mittlerweile der kostenlose
Compiler von microchip.

Es würde mich sehr freuen, wenn ihr mir helfen könntet !!

Gruß
Andreas

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

das haben wir hier schonmal diskutiert und sind zu dem Schluß gekommen
das das kein Problem ist. Der GCC steht zwar unter GPL aber du
verwendest ja nicht Sourcecode des GCC und baust damit deinen eigenen
Compiler sondern verwendest den Compiler nur als Übersetzer von
C-Source in ein Binary. Dann linkst du Teile der avrlibc dazu. Da diese
aber unter der BSD-Lizenz steht ist das kein Problem.

Mir sind auch einige (größere) Firmen bekannt die es auch nicht anderst
machen. Eagle wird wohl in der Linuxversion auch mit dem GCC gebaut.

Matthias

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim GCC kein Problem. In den speziellen Teilen des GCC gibt es genau
dafür eine Ausnahme-Klausel. Einfach mal die GCC-Doku lesen.

Wenn nun die AVR-LIBC unter einer BSD-Lizenz steht, kannst Du loslegen.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten. Auf die Idee in der GCC-Doku zu schauen bin ich
gar nicht gekommen. Habe nur die GPL gelesen.

Ich habe noch nie für µC programme erstellt. Muss ich sonst nichts
dazulinken ? Reicht da einfach die avrlibc ?

Noch was anderes: Angenommen, ich verwende in meiner Anwendung z.B. zur
Ansteuerung eines Displays ein Library, die unter der GPL Lizenz steht.
Die Lib steht in den Dateien display.c und display.h

Wenn ich nun diese beiden Dateien in mein Programm einbinde und nicht
verändere, sondern nun die Funktionen aufrufe, was muss ich dann
manchen ? Wir dann alles automatisch GPL, oder muss ich dann z.B. nur
diese zwei Dateien offenlegen ? Ich finde die GPL lässt da sehr viel
Interpretationsspielraum. Nur falls das Produkt später wirklich
verkauft wird, sollten solche Sachen geklärt sein.

Andreas

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Unbekannter
ich habe mir Doku angeschaut aber nix gefunden. Könntest Du vielleicht
einen link posten?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn ich nun diese beiden Dateien in mein Programm einbinde und nicht
> verändere, sondern nun die Funktionen aufrufe, was muss ich dann
> manchen ? Wir dann alles automatisch GPL, ...

Ja, die GPL hat virulenten Charakter.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu Fragen der GPL empfielt es sich, in die FAQ zu schauen.
Wegen Compilieren mit GCC:
http://www.gnu.org/licenses/gpl-faq.html#CanIUseGP...

Wegen der Verwendung von Files unter GPL in einem eigenen Programm:

http://www.gnu.org/licenses/gpl-faq.html#GPLInProp...
http://www.gnu.org/licenses/gpl-faq.html#Distribut...

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reicht eigentlich der GCC und die avrlibc aus um vollständige Programme
zu erstellen oder braucht man noch irgendwelchen code oder libs die
unter der gpl stehen ?

Das verstehe ich nicht ganz:
http://www.gnu.org/licenses/gpl-faq.html#GPLInProp...

So wie ich das sehe bezieht sich das nicht nur auf den Sorucecode,
sondern auch auf binarys.

Wenn ich nun ein Windowsprogramm schreibe (z.B. unter VC++) und dann
aus diesem Programm heraus avrdude aufrufe um z.B. Firmwareupdates zu
machen, ist das dann legal (Wenn ich zu meinem Programm avrdude incl.
sourcen mitliefere) ??

Letztendlich könnte ich doch genausogut eine Verknüpfung auf dem
Desktop anlegen und dann dem Benutzer sagen er soll draufklicken ... Wo
ist da die Grenze ? Suse hat doch früher auch im non-free "yast"
GPL-Programme aufgerufen.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Reicht eigentlich der GCC und die avrlibc aus um vollständige
> Programme zu erstellen oder braucht man noch irgendwelchen code oder
> libs die unter der gpl stehen ?

(Btw., du plenkst.  Sieht hässlich aus.)

Das hängt davon ab, was du tun willst.  ,,Vollständige Programme''
kann man ja bereits mit einem Assembler ohne Zuhilfenahme einer
externen Bibliothek erstellen.

Die avr-libc hat einen (meiner Meinung nach) recht sauber
dokumentierten Funktionsumfang, den du zu deiner freien Verfügung
unter BSD-Lizenz hast.  Implizit benutzt du über den GCC noch
Funktionen aus der libgcc.a, die stehen zwar unter GPL aber unter
einer eingeschränkten, die dir die Weitergabe innerhalb eines
Kompilats ohne Einschränkungen gestattet.  (Nur, wenn du am Sourcecode
dieser Bibliothek selbst was änderst, bist du verpflichtet, diese
Änderungen allen verfügbar zu machen.)

Wenn du allerdings Procyon AVRlib benutzen willst, solltest du deren
Lizenzbestimmungen genau ansehen (die ist meines Wissens GPLed).
Gleiches trifft zu, wenn du beliebige Codestücke anderer Autoren
nehmen willst, erinnert sei an Peter Fleury's UART-Bibliothek o.ä.

> Wenn ich nun ein Windowsprogramm schreibe (z.B. unter VC++) und dann
> aus diesem Programm heraus avrdude aufrufe um z.B. Firmwareupdates
zu
> machen, ist das dann legal

Ja.  Es geht bei der GPL nur um eine `derived work'.  Zwar ist die
etwas schwammig formuliert, aber der Aufruf eines externen Programmes
lässt den Aufrufer wohl in keinem Falle zur `derived work' des
Aufgerufenen werden.  Bei der Benutzung von Bibliotheken wird's dann
wirklich glatteisig (dafür gibt's dann zusätzlich noch die LGPL),
ganz
besondere wenn man (abseits von AVR mal) shared libraries betrachtet.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, danke für die Antworten. Irgendwie war ich von den AVRs zusammen
mit dem gcc voll überzeugt. Jetzt komme ich aber wegen dem ganzen GPL
kram ins grübeln.

Immerhin liefert microchip für seine PIC18 einen kostenlosen compiler,
der zumindest laut Doku so features wie UART schon drin hat.
http://ww1.microchip.com/downloads/en/DeviceDoc/MP...

Irgendwie habe ich jetzt die Befürchtung, dass ich mti den AVRs anfange
und dann merke, dass mir ein paar Softwarefeatures fehlen. Zum
Nachprogrammieren wird wohl keine Zeit bleiben und fertige libs darf
man nicht nehmen, da die meistens unter der gpl stehen.

Am Wochenende werde ich mir mal die PICs näher anschauen und was es da
so für Tools gibt. Ich muss halt möglichst schnell, möglichst weit
kommen (Time to market :-) ). An codebeispielen mangelt es für den gcc
ja nicht, wenn man aber davon nichts benutzen darf, hat man auch nichts
davon. Privat wäre das ja kein Problem. Naja, ich hoffe dass ich morgen
abend schlauer bin...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hmm, danke für die Antworten. Irgendwie war ich von den AVRs
> zusammen mit dem gcc voll überzeugt. Jetzt komme ich aber wegen dem
> ganzen GPL kram ins grübeln.

Musst du nicht wirklich.  Wie geschrieben: mit GCC und avr-libc hast
du an sich erstmal kein Problem.

> Irgendwie habe ich jetzt die Befürchtung, dass ich mti den AVRs
> anfange und dann merke, dass mir ein paar Softwarefeatures
> fehlen. Zum Nachprogrammieren wird wohl keine Zeit bleiben und
> fertige libs darf man nicht nehmen, da die meistens unter der gpl
> stehen.

Erstens hat keiner gesagt, dass sie ,,meistens unter GPL stehen''.
Ich bin mir nur bei der Procyon AVRlib recht sicher.  In jedem Falle
solltest du einfach nur genau hinsehen, bevor du fremden Code benutzt.

Zweitens, bist du dir so sicher, dass du dieses Problem bei anderen
MCUs nicht hättest?

> An codebeispielen mangelt es für den gcc ja nicht, wenn man aber
> davon nichts benutzen darf, hat man auch nichts davon. Privat wäre
> das ja kein Problem.

Nun, du kannst dir davon ja immer noch die Idee nehmen und es dann
selbst implementieren.  Blindlings wird man in einem kommerziellen
Projekt wohl ohnehin keinen fremden Code nehmen (den man nicht
verstanden hat), schließlich soll das Ganze ja wartbar bleiben.

Klar ist die Nachnutzung fremden Codes immer nett, aber ich hab's
bislang eher selten gemacht.  Meist braucht man nur ein vernünftiges
Codebeispiel, um davon die Idee zu nehmen.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast recht, zwischen Idee übernehmen und 1:1 kopieren besteht ein
Unterschied (sonst wären wir ja bei den Softwarepatenten).

Bei meiner Anwendung spielt die Schaltung die Hauptrolle. Der µC dient
eigentlich "nur" zur Ansteuerung diverser Bauteile und als PC
Schnittstelle. Daher sollte die Softwareentwicklung so einfach wie
möglich sein.

Klar, das mit dem GPL code kann mir bei jedem compiler passieren.
Trotzdem habe ich das Gefühl, dass man mit dem C18 von microchip von
Haus aus mehr Funktionen hat.

Die PIC16 hatten wohl schon Nachteile gegeüber den avrs. Aber die PIC18
sind von den Leistungsdaten her mindestens ebenbürtig. Gleiche
Schnittstellen, gleicher Speicher und da ich nicht in asm programmiere
muss ich mir über die Architektur nicht so viele gedanken machen.

Welche Controller werden eigentlich in der Industrie vorwiegend
eingesetzt?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Welche Controller werden eigentlich in der Industrie vorwiegend
> eingesetzt?

Alle. ;-)

Das hängt doch von so vielen Parametern ab...  Wenn du eine
Kleinserie machst, spielen die Kosten des Controllers z. B.
keine Rolle.  Verfügbarkeitsfragen sind dann wieder ein anderes
Ding.

Da fragst du wohl besser im allgemeinen Forum.  Ich würde den
AVR jedenfalls nicht wieder gegen einen PIC zurück tauschen
wollen.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn dieser Thread schon etwas älter ist:

Wie ist denn dieser Link zu verstehen?
http://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL
"Only when the program copies part of itself into the output. "
Wenn ein C Compiler eine Division auf einem ARM kompiliert, muss diese
ja in SW nachgebildet werden, da der ARM keine HW-Division kennt.
Hierzu wird ja wohl eine feste Routine in das Binary eingebaut.

Unbekannter schrieb:
"Beim GCC kein Problem. In den speziellen Teilen des GCC gibt es genau
dafür eine Ausnahme-Klausel. Einfach mal die GCC-Doku lesen."
Kann mir jemand sagen, so in der GCC-Doku die Klausel steht? Wie heißt
das Stichwort, wonach man suchen muss? "Close Source", "non-free",
"proprietary"?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas hier steht in gcc/libgcc2.c:

In addition to the permissions in the GNU General Public License, the
Free Software Foundation gives you unlimited permission to link the
compiled version of this file into combinations with other programs,
and to distribute those combinations without any restriction coming
from the use of this file.  (The General Public License restrictions
do apply in other respects; for example, they cover modification of
the file, and distribution when not linked into a combine
executable.)

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dumme Frage, aber wenn ich mir z.B. WinARM herunterlade (sind da nur
Binarys).
Der Compiler sagt:
"arm-elf-gcc (GCC) 4.1.1 (WinARM)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE."

Ich muss zugeben, ich habe mich noch nicht wirklich viel mit GCC
beschäftigt. Wo findet man Sourcen vom GCC. Gibt es da einen direkten
Link.

Mir ist aber nach wie vor unklar, wie ich den Bezug zwischen
"arm-elf-gcc.exe" und dessen Output und dem oben genannten
"gcc/libgcc2.c" herstelle. Das setzt ja voraus, dass ich mich erst
mit dem Quellcode vom "arm-elf-gcc" beschäftigen muss, bevor ich
weiß, was ich mit dem arm-elf-gcc binary machen darf?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.