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?
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.
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.
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.
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...
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.
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.
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".
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...
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.
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.
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...
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).
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.
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.
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...
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?
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.
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é
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?
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.
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...
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.
P.Loetmichel schrieb:> Mit BASCOM braucht man überhaupt keinen Assemblercode um Profiprogramme> zu schreiben!
LOL.
Hast du noch mehr solche guten Witze zum Wochenende ?
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.
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.
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.
> 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 ...
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.
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.