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.
:
Bearbeitet durch User
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.
Mit BASCOM braucht man überhaupt keinen Assemblercode um Profiprogramme zu schreiben!
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.
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?
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.
Weder hat der OP etwas von AVR geschrieben noch davon, daß sein Code besondere Anforderungen an Latenzen stellt oder erfüllt.
> 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
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.
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; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.