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
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
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.
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
@Unbekannter ich habe mir Doku angeschaut aber nix gefunden. Könntest Du vielleicht einen link posten?
> 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.
Zu Fragen der GPL empfielt es sich, in die FAQ zu schauen. Wegen Compilieren mit GCC: http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF Wegen der Verwendung von Files unter GPL in einem eigenen Programm: http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem http://www.gnu.org/licenses/gpl-faq.html#DistributingSourceIsInconvenient
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#GPLInProprietarySystem 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.
> 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.
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/MPLAB_C18_Libraries_51297f.pdf 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...
> 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.
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?
> 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.
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"?
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.)
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.