1 Kommentare

 
GN⁺ 2024-05-27
Hacker-News-Meinungen
  • Von solchen Inhalten träume ich seit meiner Teenagerzeit, und es ist schön, dass man immer öfter Programmierern dabei zusehen kann, wie sie an ziemlich anspruchsvollen Projekten arbeiten.
    Wenn man so hinter den Vorhang blicken kann, verschwinden viel mehr von dem, was zuvor wie Magie wirkte, und von der Komplexität.

    • Ich beneide Kinder heute darum, dass sie fast alles finden können, was sie lernen wollen. Früher war das überhaupt nicht so.
    • Ich habe mir dasselbe gewünscht, finde aber nach wie vor, dass tiefgehende und technisch hervorragende Inhalte schwer zu finden sind.
      Es wäre gut, solche Kanäle untereinander zu teilen, und ich würde gern noch weitere kennenlernen.
      Ein anderer Kanal, den ich kenne, ist https://www.youtube.com/@LowLevelLearning
      Streng genommen ist es kein Programmierkanal, aber https://www.youtube.com/@StuffMadeHere mag ich ebenfalls sehr. Ein großartiger Engineering-Kanal.
    • Der Kanal von Marcan ist auch sehenswert. Der Prozess, Linux auf Apple-ARM-Silicon zum Laufen zu bringen, ist mit fast 12 Stunden beeindruckend und zeigt, dass Apple ziemlich viel Custom-Hardware verwendet hat.
      https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
  • Vor ein paar Monaten habe ich einen USB-Host-Treiber für den STM32F4 geschrieben, und das Schwierigste war der Mangel an guter Dokumentation.
    Bei den Peripheriegeräten waren Lese-/Schreib-Register im SVD als read-only gemappt, es mussten undokumentierte Bits gesetzt werden, und USB Bulk-Only Transport verwies auf eine SCSI-Spezifikation, die nicht existierte.
    Am Ende fand ich einen Blogbeitrag, dem zufolge man im Grunde genau kopieren muss, was Windows tut, wenn man ein USB-Laufwerk zum Laufen bringen will.
    Zum Glück hatte ich ein Oszilloskop, das USB-Frames dekodieren konnte, was mir viel Zeit ersparte, um zu verstehen, warum es nicht funktionierte.
    USB scheint stark auf überliefertem Wissen zu beruhen; umso beeindruckender ist, dass es so allgegenwärtig ist und meistens einfach funktioniert.

    • Mich würde interessieren, welches Oszilloskop du für das USB-Dekoding verwendet hast.
    • Ich frage mich, ob du nie darüber nachgedacht hast, solche Arbeiten zu streamen.
    • Intel-USB-Controller verzeihen Fehler in der Steuersoftware extrem großzügig. Wirklich extrem tolerant.
  • Ich habe angefangen, zu einem Decompilation-Projekt beizutragen, und obwohl ich ganz sicher nicht der beste Decompiler bin, habe ich schon darüber nachgedacht, meine Arbeit zu streamen.
    Ich frage mich, ob Interesse an solchen Inhalten bestünde. Ob Leute sich für Dinge interessieren wie Spuren davon, wie Assembly von Vorzeichen bei Variablen beeinflusst wird, Unterschiede zwischen Struct- und Array-Zugriffen, die seltsamen Dinge, die selbst 30 Jahre alte Compiler mit Kontrollstrukturen anstellen, Register-Wiederverwendung oder wie man Code so hinbiegt, dass auf klassischen Konsolen bytegenau identisches Assembly herauskommt.

    • Ich habe mir extra einen Account erstellt, weil es wirklich großartig wäre, so etwas zu sehen. Ich habe versucht, solches obskures Reverse-Engineering-Wissen zusammenzutragen, aber es ist schon schwer zu wissen, wo man überhaupt danach suchen soll.
    • Ich habe Interesse. An der Uni habe ich grundlegendes 8086-Assembly gelernt und auch ein paar Bücher über Reverse Engineering gelesen, bin aber nie weitergekommen.
      Mich würde interessieren, ob du an einem Open-Source-Projekt arbeitest.
  • Ich entwickle ein Betriebssystem und habe darüber nachgedacht, ein paar Arbeitssessions zu streamen. Wenn Leute tatsächlich daran interessiert sind, könnte ich damit anfangen.

    • Der Reiz, jemandem bei einer schwierigen Aufgabe zuzusehen, liegt darin, einen Einblick in den Denkprozess zu bekommen. Ein Betriebssystem zu schreiben zählt definitiv zu den schwierigen Dingen.
      Wenn du wirklich Zeit dafür hast, würde ich mich sehr darüber freuen und dich auch unterstützen.
  • Am interessantesten ist die Schriftart für Terminal/Coding.

  • Im Titel fehlt etwas: Das ist ein USB-Gerätetreiber für ein relativ einfaches Gerät, und es gibt bereits bestehenden Code, sodass es praktisch eher eine „Übersetzung“ von Code zu Code ist.
    Es kann sehr beeindruckend aussehen, aber persönlich sehe ich es eher so, als würde man jemandem zusehen, der seinen Beruf gut beherrscht.

    • Stimmt. Der Titel liegt etwas daneben. Ich kenne mich mit dem Kernel nicht besonders gut aus, und ich habe beim Anschauen des Videos einiges gelernt, aber vieles wirkte fast wie Magie.
      Es wäre schön, wenn ein Moderator „from scratch“ aus dem Titel entfernen und aufnehmen könnte, dass es um einen Gerätetreiber geht; wenn nicht, ist es aber auch in Ordnung.
    • Das wirkt wie ein Treiber, für den es kaum einen Grund gibt, überhaupt zu existieren. Bei einem Frontpanel wäre es wahrscheinlich besser, das im Userspace als libusb-Anwendung zu verwalten.
  • Ich mag solche Videos und tiefgehenden Tutorials wirklich sehr, aber die Formulierung „from scratch“ passt hier nicht ganz.
    „Ausgehend von 10 Jahren Erfahrung mit genau solchen Aufgaben“ hätte wohl nicht denselben Klang.

  • Hat die USB-Spezifikation nicht ungefähr 500 Seiten? Beeindruckend.

    • Man muss nicht jedes Detail der USB-Spezifikation lesen; ein grobes Verständnis der Funktionsweise reicht aus.
      Der Kernel stellt viele Funktionen bereit, mit denen man arbeiten kann. Schon das Lesen des einfachsten Treibercodes, den man im Kernel-Source findet, reicht, um etwas zu lernen; danach kann man sich zu schwierigeren Treibern hocharbeiten.
    • 500 Seiten könnte ich nicht einmal in drei Stunden abschreiben.
    • Eine gute Treiber-API sollte all das verbergen, sodass einzelne USB-Treiber sich nicht um die USB-Spezifikation kümmern müssen. Das ist Aufgabe des gemeinsamen USB-Core-Codes.
    • Und hier ist das meiste davon ohnehin kaum relevant.