数か月前にSTM32F4向けUSBホストドライバを書いたが、いちばん大変だったのは良いドキュメントが不足していたことだった。
周辺機器では、読み書きレジスタが SVD では読み取り専用としてマッピングされていたし、文書にないビットを設定する必要もあり、USB bulk-only transport は存在しない SCSI 仕様を参照していた。
結局、USBドライブを動かすには Windows がやっていることをほぼそのままコピーしなければならない、というブログ記事を見つけることになった。
幸い、USBフレームをデコードできるオシロスコープがあったので、なぜ動かないのかを理解する時間をかなり節約できた。
USB は口伝の知識に大きく依存しているように見えるのに、それでもこれほど普及していて大半がそのまま動くのは印象的だ
1件のコメント
Hacker Newsのコメント
10代の頃からこういうコンテンツを夢見ていたし、かなり高度なプロジェクトを進めるプログラマたちが作業過程を配信する様子を、ますます見られるようになってうれしい。
こうして舞台裏をのぞけると、魔法のように見えていたものや複雑さがずっと薄れる
こういうチャンネルをお互いに共有できるといいし、ほかにも知りたい。
自分が知っている別のチャンネルは https://www.youtube.com/@LowLevelLearning
厳密にはプログラミングチャンネルではないけれど、https://www.youtube.com/@StuffMadeHere も大好き。すばらしいエンジニアリングチャンネルだ
https://www.youtube.com/live/GxnWuXgj3JI?si=lUJ_7KdkylzXLryj
数か月前にSTM32F4向けUSBホストドライバを書いたが、いちばん大変だったのは良いドキュメントが不足していたことだった。
周辺機器では、読み書きレジスタが SVD では読み取り専用としてマッピングされていたし、文書にないビットを設定する必要もあり、USB bulk-only transport は存在しない SCSI 仕様を参照していた。
結局、USBドライブを動かすには Windows がやっていることをほぼそのままコピーしなければならない、というブログ記事を見つけることになった。
幸い、USBフレームをデコードできるオシロスコープがあったので、なぜ動かないのかを理解する時間をかなり節約できた。
USB は口伝の知識に大きく依存しているように見えるのに、それでもこれほど普及していて大半がそのまま動くのは印象的だ
デコンパイルプロジェクトへの貢献を始めたところで、自分は最高のデコンパイラというわけではないけれど、作業しながら配信してみようかと考えたことがある。
こういうコンテンツに興味がある人がいるのか気になる。アセンブリに変数の符号の影響が残る痕跡、構造体アクセスと配列アクセスの違い、30年前のコンパイラでさえ制御構造に対してやる奇妙なこと、レジスタの再利用、クラシックなゲーム機でバイト単位で同一のアセンブリが出るようにコードを誘導する方法、などに関心があるのか分からない
もしよければ、オープンソースプロジェクトで作業しているのか知りたい
OSを作っていて、作業セッションを何度か配信してみようかと考えていたが、人が本当に興味を持つなら始めてみてもいいかもしれない
本当に時間があるならぜひやってほしいし、支援もすると思う
ターミナル/コーディング用のフォントがいちばん興味深い
https://tosche.net/fonts/comic-code
タイトルには欠けている部分があって、これは比較的単純なデバイス向けのUSBデバイスドライバで、既存コードもあるので、実際にはコードからコードへ移す「翻訳」作業に近い。
とても印象的には見えるかもしれないが、個人的には、自分の仕事に熟達した人が働いているのを見るのに近いと思う
モデレータがタイトルから “from scratch” を外して、デバイスドライバだという点を入れてくれたらよかったが、そうでなくても構わない
こういう種類の動画や掘り下げたチュートリアルは本当に好きだが、“from scratch” という表現は少し当てはまらない。
「まさにこの仕事を10年やってきた経験から始める」と言っても同じ響きにはならないだろうが
USB仕様ってだいたい500ページくらいあるのでは? すごい
カーネルが作業に使える関数をたくさん提供してくれる。カーネルソース内で見つかる最も単純なドライバコードを読むだけでも学べるし、そのあとでより難しいドライバに進めばいい