Forum: Mikrocontroller und Digitale Elektronik Softwareschutz


von anfänger0815 (Gast)


Lesenswert?

Hallo Forum, ich möchte gerne Assemblercode im Forum einstellen um euch 
zu bitten mal drüber zu schauen. Natürlich für Privatanwender jederzeit 
frei, nur sollte der Code, wenn er denn jemanden gefällt der diesen 
geschäftlich nutzen möchte, auch für die, die geholfen haben und 
natürlich für mich etwas bringen (Geld). Auf was mzuß ich achten bevor 
ich den Code ins Forum einstelle?

von STK500-Besitzer (Gast)


Lesenswert?

anfänger0815 schrieb:
> Auf was mzuß ich achten bevor
> ich den Code ins Forum einstelle?

Dafür gibt es Software-Lizenzen (z.B. die GPL).
Wenn du deinen Code also veröffentlichst, solltest du das unter einer 
bestimmten Software-Lizenz tun.
Ob sich irgendjemand daran hält, kannst DU aber eher schwer überprüfen.

von Dr. Sommer (Gast)


Lesenswert?

Eine entsprechende Lizenz angeben. Einfach "nur so" hochgeladener Code 
kann gar nicht genutzt werden.

Am Einfachsten ist es, eine bestehende Open Source Lizenz zu nehmen, 
dann muss man sich nicht selbst mit den rechtlichen Formulierungen 
abmühen.

Eine beliebte Variante ist es, den Code unter die GPLv3 zu stellen und 
zusätzlich kommerzielle Lizenzen zu bieten. Da die meisten Unternehmen 
die GPL nicht nutzen wollen weil sie dann ihren eigenen Code 
veröffentlichen müssten, müssen sie so eine kommerzielle Lizenz von dir 
kaufen. Wird z.B. bei Qt so gemacht, oder hier:

https://www.state-machine.com/licensing/

Die Frage ist natürlich, ob dein Code wirklich so toll ist dass dafür 
jemand bezahlen würde und den nicht einfach nachbaut.

von oszi40 (Gast)


Lesenswert?

Ob man davon gleich reich wird?
1.Schau erst mal ob es eine ähnliche Losung nicht schon gibt, von der 
man viel lernen könnte.
2.Kopieren geht ganz schnell. Wenn der Entwicklername mit drin steht, 
ist er auch ganz schnell in der Kopie, was später ein kleiner Vorteil 
sein könnte, wenn das Programm in dritte Hände gelangt. :-) Ja, man 
könnte auch editieren, aber die Vergangenheit zeigte, viele Leute faul 
sind.

von Dr. Sommer (Gast)


Lesenswert?

oszi40 schrieb:
> Ob man davon gleich reich wird?

Vor allem: wenn das ein AVR-Assembler-Programm ist an dem 1 Monat 
gearbeitet wurde und das dementsprechend kosten soll, wäre es vielleicht 
billiger das in C++ auf STM32 oder Python auf Cortex-A in 3 Tagen 
nachzubauen...

von Michael B. (laberkopp)


Lesenswert?

anfänger0815 schrieb:
> Auf was mzuß ich achten bevor ich den Code ins Forum einstelle?

Gar nichts.
Du kannst nicht verhindern, daß ein Komerzieller deinen code nutzt.
Du wirst es nicht mal rausfinden.
Und selbst wenn, dann müsstest du ein Gerichtsverfahren anstrengen, um 
ihm das abzugewöhnen und Schadenersatz einzufordern, bloss musst du 
Gerichts- und Anwaltkosten vorfinanzieren und das wird deine Finanzen 
übersteigen.

Allerdings: Überschätze dich nicht. Dein code wird klein sein. Ein paar 
Programmzeilen sind finanziell nichts wert. Im Gegenteil, in nicht so 
kapitalistisch verseuchten Gesellschaften freut man sich, wenn man 
anderen helfen konnte und wenn die eigene Erfindung von anderen genutzt 
wird.

Es wurden ganze Bücher mit Algorithmen, heute sagt man Patterns, 
geschreiben in denen code-Stücke frei verfügbar veröffentlicht wurden, 
und gute Autoren wurden dadurch berühmt.

von Markus F. (mfro)


Lesenswert?

anfänger0815 schrieb:
> und
> natürlich für mich etwas bringen (Geld).

Wenn ich deinen Forumsnamen richtig interpretiere, ist die 
Wahrscheinlichkeit dafür eher gering.

von anfänger0815 (Gast)


Lesenswert?

Ja, ok, schon kapiert. Mir ging es nur darum, falls jemand sagt, hey 
toll, die Idee kann ich bei mir nutzen, dass dann die Community, wie 
oben beschrieben, auch etwas davon hat. Wie heißt es so schön "Auch ein 
blindes Huhn findet manchmal ei Korn".

von c-hater (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Vor allem: wenn das ein AVR-Assembler-Programm ist an dem 1 Monat
> gearbeitet wurde und das dementsprechend kosten soll, wäre es vielleicht
> billiger das in C++ auf STM32 oder Python auf Cortex-A in 3 Tagen
> nachzubauen...

Möglicherweise. Aber könnte genausogut sein, dass es schlicht nicht 
funktioniert. C++ auf STM32 oder Python auf einem Cortex-A z.B. hat 
welche garantierte Latenz für IRQs?

Keine! Nix bezüglich des Timing ist bei Hochsprachen garantiert. Es gibt 
aber unzählige Anwendungen, für die das Timing hinreichend wichtig ist, 
insbesondere auch bei Sachen, für die man einen AVR8 als Zielsystem 
durchsatzmäßig überhaupt in Betracht ziehen würde...

von Dr. Sommer (Gast)


Lesenswert?

c-hater schrieb:
> Keine!

Da man aber auch in Assembler keine garantierten Latenzen hat bei allem 
was etwas komplexer als AVR ist (insb. Cortex-M und -A), muss man in 
beiden Fällen eh ausprobieren.

von Peter D. (peda)


Lesenswert?

Bei Assemblercode brauchst Du Dir in der Regel keine Sorgen zu machen, 
daß ihn jemand kommerziell nutzen wird. Heutzutage steht Wartbarkeit und 
Erweiterbarkeit im Vordergrund.
Es kann allerdings sein, daß jemand die Geräteidee, die Du damit 
implementiert hast, interessant findet und sich dann dafür Code in C/C++ 
schnell mal selber schreibt.

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Da man aber auch in Assembler keine garantierten Latenzen hat

Doch. Man kann bei reiner Assembler-Programmierung Maximal-Latenzen für 
jeden beliebigen Interrupt verbindlich garantieren. Auf absolut jeder 
realexistierenden Hardware-Plattform. Jedenfalls auf absolut jeder, dich 
ich kenne...

Es wäre natürlich rein theoretisch möglich, das irgendeine Firma 
irgendwann mal gegen dieses durch die ehernen Gesetze der formalen Logik 
gebotene Prinzip verstoßen hat, aber dann wäre der entsprechende 
Controller sehr schnell wieder vom Markt verschwunden und ich hätte das 
Elend nicht mitbekommen...

Kennst du so ein Beispiel? Ich meine: weil du hier so die Fresse 
aufreißt als hättest du irgendwas wirklich Wichtiges zu sagen? Dann 
sollte doch schon etwas faktisches Futter dahinter sein...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

anfänger0815 schrieb:
> Auf was mzuß ich achten bevor
> ich den Code ins Forum einstelle?

Schreib da bloss keine EMail Adresse rein. Ich bekomme noch heute Spam 
wg. eines kleinem Framebuffer Treibers, den ich mal für uCLinux 
geschrieben hatte (und der bis heute in der Distro ist).

von Dr. Sommer (Gast)


Lesenswert?

c-hater schrieb:
> Kennst du so ein Beispiel? Ich meine: weil du hier so die Fresse
> aufreißt als hättest du irgendwas wirklich Wichtiges zu sagen? Dann
> sollte doch schon etwas faktisches Futter dahinter sein...

Wow, was für ein Tonfall. Ja, z.B. TI Sitara AM3358 Cortex-A8 (z.B. auf 
dem Beaglebone), oder ein STM32F7 Cortex-M7. Diese Prozessoren besitzen 
Caches und eine Pipeline. Damit wird die Ausführungszeit eines jeden 
Befehls undeterministisch, selbst die von NOP. Wie lange das Laden des 
Befehls dauert hängt davon ab, ob der Speicher mit dem Code der ISR 
zufällig schon im Cache ist. Dazu kommen bei ersterem Beispiel einige 
erforderliche bedingte Sprünge in der ISR. Wie lange die dauern, hängt 
vom Zustand der Branch Prediction ab.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Eine obere Grenze sollte auf jedem System zu bestimmen sein. Allerdings 
ist das eine Aufgabe die enorm komplex ist und unter Umständen gar nicht 
durch öffentliche Dokumente möglich ist. Desshalb wird sowas auch 
typischerweise gemessen.

von c-hater (Gast)


Lesenswert?

Dr. Sommer schrieb:

> Wow, was für ein Tonfall. Ja, z.B. TI Sitara AM3358 Cortex-A8 (z.B. auf
> dem Beaglebone), oder ein STM32F7 Cortex-M7. Diese Prozessoren besitzen
> Caches und eine Pipeline. Damit wird die Ausführungszeit eines jeden
> Befehls undeterministisch

Nicht wirklich. Es gibt immer noch die MAXIMALE Ausführungszeit, also 
den "worst case". Bezüglich der Interrupt-Latenzen ist das sogar die 
einzig relevante Kenngröße. Auf absolut jeder realexistierenden 
Architektur...

von Markus F. (mfro)


Lesenswert?

c-hater schrieb:
> Nicht wirklich. Es gibt immer noch die MAXIMALE Ausführungszeit, also
> den "worst case".

... und die ist jetzt wie und warum genau für Assemblerprogramme 
einfacher oder irgendwie genauer bestimmbar als für C-/C++-Programme?

von jemand (Gast)


Lesenswert?

anfänger0815 schrieb:
> Hallo Forum, ich möchte gerne Assemblercode im Forum einstellen um
> euch
> zu bitten mal drüber zu schauen. Natürlich für Privatanwender jederzeit
> frei, nur sollte der Code, wenn er denn jemanden gefällt der diesen
> geschäftlich nutzen möchte, auch für die, die geholfen haben und
> natürlich für mich etwas bringen (Geld). Auf was mzuß ich achten bevor
> ich den Code ins Forum einstelle?

Ich verwende die GPLv3:
https://www.gnu.org/licenses/gpl-3.0.en.html
Einfach den Hinweis in jede Quellcodeseite einfügen, und die GPL 
anhängen.

Ich will damit nur erreichen, dass sich nicht jemand anders den Code 
unter den Nagel reißt und mir die Nutzung verbietet. ist zwar sehr 
unwahrscheinlich, aber da gehts ums Prinzip.
Ich mach das für jedes Source-File, dass ich weitergebe.

Allerdings darf der GPL-Code ja schon gewinnbringend verwendet werden. 
Also musst du eine passende Lizenz suchen.

von René H. (Gast)


Lesenswert?

anfänger0815 schrieb:
> Hallo Forum, ich möchte gerne Assemblercode im Forum einstellen um euch
> zu bitten mal drüber zu schauen. Natürlich für Privatanwender jederzeit
> frei, nur sollte der Code, wenn er denn jemanden gefällt der diesen
> geschäftlich nutzen möchte, auch für die, die geholfen haben und
> natürlich für mich etwas bringen (Geld). Auf was mzuß ich achten bevor
> ich den Code ins Forum einstelle?

Hast du es aus Spass entwickelt oder mit der Absicht Geld zu verdienen?
Wenn das zweite, dann lass die Veröffentlichung. Geld siehst du nicht.

Ich hatte mal einen Treiber Reverse engineered damit man die Hardware 
auch unter Linux verwenden konnte. Unter GPL wurde das veröffentlicht 
(den Treiber findet man heute noch in den meisten Distributionen).
Cisco war die einzige Firma die angefragt hatte ob die den Treiber 
verwenden dürfen.

Grüsse,
René

von c-hater (Gast)


Lesenswert?

Markus F. schrieb:

> ... und die ist jetzt wie und warum genau für Assemblerprogramme
> einfacher oder irgendwie genauer bestimmbar als für C-/C++-Programme?

Ganz einfach: man zählt die Takte (genau das kann man eben nicht in 
einer Hochsprache!) und addiert den maximalen Lag aus irgendwelchen 
Caches dazu.

Was hast du denn gedacht?

von Markus F. (mfro)


Lesenswert?

c-hater schrieb:
> Markus F. schrieb:
>
>> ... und die ist jetzt wie und warum genau für Assemblerprogramme
>> einfacher oder irgendwie genauer bestimmbar als für C-/C++-Programme?
>
> Ganz einfach: man zählt die Takte (genau das kann man eben nicht in
> einer Hochsprache!) und addiert den maximalen Lag aus irgendwelchen
> Caches dazu.
>
> Was hast du denn gedacht?

Das Du da bei einer modernen CPU schön was zu zählen hast. Viel Spaß.

Oder weißt Du bei irgendwas, was über den AVR-Horizont hinausgeht z.B. 
auswendig, welche Befehle in welcher Kombination superskalar ausgeführt 
werden oder nicht?

Ich würde das - so oder so - messen.

von René H. (Gast)


Lesenswert?

@c-hater und mfro
Lasst es, am Thema vorbei.

Grüsse,
René

von Markus F. (mfro)


Lesenswert?

René H. schrieb:
> Lasst es, am Thema vorbei.

Du meinst, man müsste solcherlei großspuriges Gehabe einfach 
unkommentiert stehen lassen?

Ich nicht. Vielleicht bin ich heute auch bloß kratzbürstig...

von Stefan F. (Gast)


Lesenswert?

c-hater, musst du eigentlich jedes Thema, wo irgendwann einmal das Wort 
C oder C++ erwähnt wird, kaputt diskutieren?

Deine Beiträge haben absolut gar nichts mit dem Thema zu tun!

Die Aussage von Dr. Sommer, dass ein Nachbau ein einem 
leistungsstärkeren Gerät in einer einfacheren Programmiersprache 
billiger sein KANN, ist nach wie vor korrekt. Und nur darum ging es.

Abgesehen davon hast du dein Thema mit den Timings dieses Jahr schon 
oft genug in andere Diskussionen herein gedrückt. Und dass du C++ nicht 
magst, kann die ganze Welt für immer nachlesen. Es reicht langsam 
wirklich.

von Psychologe (Gast)


Lesenswert?

- seufz -

von P.Loetmichel (Gast)


Lesenswert?

Mit BASCOM braucht man überhaupt keinen Assemblercode um Profiprogramme
zu schreiben!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

P.Loetmichel schrieb:
> Mit BASCOM braucht man überhaupt keinen Assemblercode um Profiprogramme
> zu schreiben!

 LOL.
 Hast du noch mehr solche guten Witze zum Wochenende ?

von test (Gast)


Lesenswert?

Scheiss auf die Sprache, professionelle Software kann man in jeder 
Sprache schreiben. Genauso wie man beschissene Software iin jeder 
Sprache schreiben kann.

Für manche Sachen sind halt einige Sprachen besser geeignet wwie andere.

Und einige Sprachen bringen Komfort bei der Entwicklung zum Preis das 
leistungsfähige Hardware benötigt wird.


Also soll jeder nutzen was er für richtig hält sofern es prinzipiell das 
gewünschte Ergebnis ermöglicht.

von bastler (Gast)


Lesenswert?

Markus F. schrieb:
> Ich würde das - so oder so - messen.

Und wie stellst du sicher, dass du dabei auch
selten auftretende untypische Fälle erfasst?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

bastler schrieb:
> Markus F. schrieb:
>> Ich würde das - so oder so - messen.
>
> Und wie stellst du sicher, dass du dabei auch
> selten auftretende untypische Fälle erfasst?

Durch häufiges messen unter unterschiedlichen Systemlasten. Das Problem 
ist es die richtigen Lasten zu definieren. Es geht aber einfach auf 
komplexeren Architekturen nicht mehr anderst da derart viele Systeme 
involviert sind das man das ohne massiven Aufwand nicht mehr exakt 
ermitteln kann. Muss man exakte Zeiten garantieren nimmt man was 
einfaches oder strikt was per Hardware (FPGA) dran.

von S. R. (svenska)


Lesenswert?

Marc V. schrieb:
> Hast du noch mehr solche guten Witze zum Wochenende ?

Professionell bedeutet "verdient damit Geld". Das sagt genau nichts über 
die Programmiersprache oder die Qualität aus.

von Nop (Gast)


Lesenswert?

Weder hat der OP etwas von AVR geschrieben noch davon, daß sein Code 
besondere Anforderungen an Latenzen stellt oder erfüllt.

von Tim S. (tseidel)


Lesenswert?

> Nicht wirklich. Es gibt immer noch die MAXIMALE Ausführungszeit, also
> den "worst case". Bezüglich der Interrupt-Latenzen ist das sogar die
> einzig relevante Kenngröße. Auf absolut jeder realexistierenden
> Architektur...

Klar. Die ist infinit.
Spannung weg, Befe...

Oups
Tolle Erkenntnis, dass man das nicht praktisch nach oben Abgrenzen kann, 
es sei denn man akzeptiert die ein oder andere Prämisse über Ressourcen 
unter Asm als auch c als auch Biologischer Problemlöser ...

: Bearbeitet durch User
von Realist (Gast)


Lesenswert?

anfänger0815 schrieb:
> nur sollte der Code, wenn er denn jemanden gefällt der diesen
> geschäftlich nutzen möchte,

Sei beruhigt: Für Deinen Code wird sich einfach absolut niemand 
interessieren.

von Tom (Gast)


Lesenswert?

Du musst auch gucken, dass du selbst keinen patentierten Code benutzt, 
wie z.B. (abs-Berechnung):
1
int v;           // we want to find the absolute value of v
2
unsigned int r;  // the result goes here 
3
int const mask = v >> sizeof(int) * CHAR_BIT - 1;
4
r = (v ^ mask) - mask;

von MaWin (Gast)


Lesenswert?

Tom schrieb:
> r = (v ^ mask) - mask

Da fehlt doch wohl noch ein -

von Florian (Gast)


Lesenswert?

Tom schrieb:
> abs-Berechnung)

Kannst du das bitte erläutern?

von Dr. Sommer (Gast)


Lesenswert?

Tom schrieb:
> v >> sizeof(int) * CHAR_BIT

Rechts Shift von vorzeichenbehafteten Zahl ist undefined behaviour. 
Shift um eine Zahl die >= die Anzahl Bits ist, ebenfalls. Also keine 
besonders gute Idee, zumal es abs() gibt, das wahrscheinlich 
entsprechend der Plattform optimiert ist.

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.