Forum: Compiler & IDEs STM32 gcc compile ok aber linken kriminell?


von pegel (Gast)


Lesenswert?

Hat sich schon mal jemand darüber Gedanken gemacht?

http://gekogeek.com/hacks/stm32-demo-code-carries-extra-hidden-copyrights/

Ich muss gestehen ich habe das linkfile einfach so benutzt.
Wie kann ich das "umstricken" damit es meins ist wenn ich doch für die 
ST libraries die Namen und Bereiche aus dem .ld File brauche???

von Roland H. (batchman)


Lesenswert?

> Hat sich schon mal jemand darüber Gedanken gemacht?

Das ist uralt. Ich wundere mich schon sehr lange, dass immer wieder 
Leute naiv diese Dateien verteilen. Was man nicht sieht, ob diese 
Linker-Skripte in kommerziellen Produkten verwendet werden.

Lizenzen (und Verträge) lesen und verstehen gehört zum Geschäft.

> Ich muss gestehen ich habe das linkfile einfach so benutzt.

"Einfach so" geht nicht mehr. Ich kenne kaum noch Verträge, in denen die 
"Rechte Dritter" nicht sehr detailliert behandelt werden.

> Wie kann ich das "umstricken" damit es meins ist wenn ich doch für die
> ST libraries die Namen und Bereiche aus dem .ld File brauche???

Scherzkeks. "Umstricken" führt nicht dazu, dass es "Deins" wird.

Entweder selber schreiben, oder z. B. das von 
http://code.google.com/p/openstm32/ verwenden. Aber auch da gilt: Lizenz 
lesen (GPL3).

Wegen der Verträge hab ich inzwischen die Nase voll und schreibe alles 
selber: Startup, Linker-Skripte, selbst die newlib ist komplett 
rausgeflogen. Im Desktop-Bereich werden auch keine Fremdbibliotheken 
mehr verwendet. Alles andere ist inzwischen kommerziell ein 
unkalkulierbares Risiko. Und bis man die Feinheiten der Verträge 
verstanden hat, hat man das "linker script" schon lange geschrieben.

Das Schöne am ARM ist doch, dass man den Startup auch in C schreiben 
kann. Und wenn man ein "linker script" für den ARM hat, passt das bis 
auf die "memory regions" für die anderen auch.

von pegel (Gast)


Lesenswert?

Hallo Roland,

vielen Dank für die ausführliche Antwort.
Was könnte der Grund sein das ST kein eigenes linkscript mit passender 
startup anbietet wenn doch sonst alles vorhanden ist?

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Dummheit, Faulheit, Ignoranz?

von pegel (Gast)


Lesenswert?

Hm, oder vielleicht Prozente von den Herstellern der -teuren- 
kommerziellen IDEs?

von Ist so (Gast)


Lesenswert?

pegel schrieb:
> Hallo Roland,
>
> vielen Dank für die ausführliche Antwort.
> Was könnte der Grund sein das ST kein eigenes linkscript mit passender
> startup anbietet wenn doch sonst alles vorhanden ist?

Wie mir mal jemand von ST sehr deutlich sagte, hat man bei ST absolut 
keinen Bock auf Software, schon gar nicht auf freie Software. Freie 
Software hasst man regelrecht. Unprofessionell, Kinderkram ... Am 
liebsten würde man nur Hardware machen und die ohne alles über den Zaun 
zum Kunden werfen.

Einen Mikrocontroller kann man heutzutage allerdings nicht mehr ohne 
Software verkaufen. Daher hat ST Deals mit Firmen, deren Produkte ST - 
vermutlich gegen Bezahlung - empfiehlt. So muss sich ST nicht so oft die 
Finger an Software schmutzig machen.

Nun habe aber diverse der empfohlenen Partner ihre Compiler-Produkte 
wiederum auf GCC und binutils aufgebaut. So hat ST durch die Hintertür 
doch die dort verhasste freie Software am Hals.

Die Partner wiederum versuchen gerne die GPL zu umgehen, um ihre 
Produkte besser vermarkten zu können. So kommt es, dass Atollic dem 
GPL-lizenzierten Linker mal eben ein proprietäres Linkerskript 
unterschiebt. Aber das interessiert ST nicht - Hauptsache man muss nicht 
selber Software anfassen und formal gibt es über die Partner ja alles - 
auf Windows. Alles andere als Windows ist für ST auch unprofessionell.

Sinnvoll ist das was ST macht, bzw. nicht macht zwar nicht, aber die 
wollen das so. Ändern wird sich nichts, über ST kreisen schon die 
Finanzgeier 
http://www.bloomberg.com/news/2012-10-12/stmicro-sees-third-quarter-sales-trailing-estimates.html

von Roland H. (batchman)


Lesenswert?

> Wie mir mal jemand von ST sehr deutlich sagte, hat man bei ST absolut
> keinen Bock auf Software, schon gar nicht auf freie Software. Freie
> Software hasst man regelrecht.

Das ist inzwischen auch bei vielen anderen auch so.

> Unprofessionell, Kinderkram

Die Schwierigkeit besteht für diese Firmen tatsächlich darin, dass sie 
es rechtlich nicht "fassen" können.

> Am liebsten würde man nur Hardware machen und die ohne alles über den Zaun
> zum Kunden werfen.

Wenn sie da mal nur konsequent wären ... und ihre eigene Library endlich 
einstampfen würden :-)

> Daher hat ST Deals mit Firmen, deren Produkte ST -
> vermutlich gegen Bezahlung - empfiehlt.

Das dürfte vermutlich auch eine Rolle spielen.

Der guten Ordnung halber: Es gibt gut gepflegte Linker-Skripte/Startups 
bei AVR und MSP430. Bei den ARMs ist es lieblos (STM, NXP, TI 
Stellaris). Kurios ist es bei Renesas RX (Linker-Script ist von Red 
hat), und so richtig verwirrend ist es für PIC32.

Zitat aus dem Stellaris-Linker-Script
1
You may not combine this software with "viral" open-source
2
 * software in order to form a larger program.

Ja, so Zeugs können sie formulieren. Aber bei C++ - Support im 
Linker-Skript hapert es.

Aber wie schon sehr treffend formuliert wurde ...

Ist so schrieb:
> Nun habe aber diverse der empfohlenen Partner ihre Compiler-Produkte
> wiederum auf GCC und binutils aufgebaut. So hat ST durch die Hintertür
> doch die dort verhasste freie Software am Hals.

... haben sie einfach keine Chance mehr, ohne den GCC auszukommen. Am 
deutlichsten sieht man das im Fall von PIC32.

von pegel (Gast)


Lesenswert?

Danke euch für die Aufklärung.

Dann ist es ja so, dass wenn ich zum Beispiel ein Projekt ohne das ST 
Verzeichnis weitergebe, bei dem der Empfänger selbst die Libs von ST 
laden muss die von meinem Makefile benutzt aber nicht geändert werden 
und wenn er selbst mit gcc compiliert und linkt ich auch nicht schuldig 
bin.

Bürokratie find ich gut! Musste meinen eigenen Satz auch zweimal lesen 
bevor ich ihn verstanden habe ;-)

Schade, die STM32 find ich eigentlich echt fantastisch.

von Roland H. (batchman)


Lesenswert?

> Dann ist es ja so, dass wenn ich zum Beispiel ein Projekt ohne das ST
> Verzeichnis weitergebe, bei dem der Empfänger selbst die Libs von ST
> laden muss die von meinem Makefile benutzt aber nicht geändert werden
> und wenn er selbst mit gcc compiliert und linkt ich auch nicht schuldig
> bin.

Ich meine, dass es so OK ist (bin aber kein Jurist), weil der Empfänger 
selbständig herunterladen (und prüfen) muss.

Ein ähnlichen Fall hatte ich kürzlich. Aus vertraglichen Gründen (die 
der Kunde selbst so will) muss er sich nun die Libraries selbst besorgen 
und integrieren. Der Schuss ging nach hinten los.

Man sieht es auch immer wieder, dass vom Makefile die Libraries 
automatisch heruntergeladen werden, so dass der Empfänger nichts 
"bemerkt". Das könnte aber schon eine Grauzone sein, insbesondere dann, 
wenn der Empfänger nicht darauf hingewiesen wird.

> Musste meinen eigenen Satz auch zweimal lesen
> bevor ich ihn verstanden habe ;-)

Nach der Lektüre von 10 Verträgen geht das dann richtig flüssig :-)

> Schade, die STM32 find ich eigentlich echt fantastisch.

Das sollte die Freude nicht trüben :-)

Das ist nicht STM spezifisch.

Wie schon geschrieben, wirklich freie Linker-Skripte und Startups sind 
eher die Ausnahme als die Regel.

Bei den ARMs kann man sich diese auch selbst erstellen. Bei Renesas RX 
und PIC32 ist das wesentlich schwieriger (da Assembler Voraussetzung 
ist).

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Recht brauchbares lizenzloses Linker-Script und Startup-Fragment als 
Basis für Cortex Mx-Entwicklungen (für ARM7TDMI fehlt ein wenig) in 
diesem Text: https://launchpadlibrarian.net/109296007/readme.txt.

Startup-Codes in CMSIS-Packeten zu Controllern scheint inzwischen, bis 
auf die üblichen Garantieausschlüsse, frei zu sein.

Ansonsten ist es angebracht, ST Mircoelectronics einen Hinweis zu 
senden, denn deren Softwarepacket dürfte die Hauptquelle sein, aus der 
das Skript von anderen übernehmen und weitergegeben wird.

von Ist so (Gast)


Lesenswert?

Roland H. schrieb:
> Kurios ist es bei Renesas RX (Linker-Script ist von Red
> hat),

Der Grund dafür dürfte DJ Delorie heißen. Jener Programmierer, der vor 
ewigen Zeiten den GCC und diverse Tools nach MS DOS portiert hat. Der 
ist heute ein Red-Hat-Mitarbeiter und mag Renesas MCUs.

> und so richtig verwirrend ist es für PIC32.

Microchip ärgert sich je ebenfalls furchtbar, dass es bei GCCs für PIC 
nicht so einfach ist den Compiler zu verkrüppeln. Da baut man jahrelang 
eigene Compiler und verkrüppelt sie, damit der Kunde die Vollversion 
kauft, da legt man sich vor einiger Zeit zusätzlich eine renommierte 
Compilerschmiede zu, und dann macht man doch den GCC-basierenden C32. 
Und muss mit dem HI-TECH XC32 Compiler nachlegen und versuchen die 
Kunden wieder ins proprietäre Lager zu ziehen.

> Zitat aus dem Stellaris-Linker-Script
>
1
> You may not combine this software with "viral" open-source
2
>  * software in order to form a larger program.
3
>
>
> Ja, so Zeugs können sie formulieren. Aber bei C++ - Support im
> Linker-Skript hapert es.

Anwälte werden sich sicher stundenlang darüber auslassen können, was in 
dem Zusammenhang "combine" heißt. Soweit ich weiß, ist der unter der GPL 
stehende ld der einzige Linker der die Skripts versteht. Wenn man 
"combine" so streng auslegt, dass die Ausführung des Skripts durch ld 
schon ein Kombinieren ist, dann dürfte man das Skript gar nicht 
verwenden.

> ... haben sie einfach keine Chance mehr, ohne den GCC auszukommen. Am
> deutlichsten sieht man das im Fall von PIC32.

Bei den Herstellern von großen ARM-CPUs ist es noch schlimmer. 
Spätestens seit dem Siegeszug von Android-Smartphones, die fast alle auf 
ARMs laufen, sind viele Hersteller auf Gedeih und Verderben mit freier 
Software verheiratet. Trotzdem tun die so, als wolle man ihnen die 
Unschuld rauben, wenn man nach nicht-Windows Tools und freier Software 
fragt.

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
Noch kein Account? Hier anmelden.