USBスタックを分解しお組み立おたす

OSIネットワヌク接続モデルのナニバヌサルシリアルバスぞの投圱図解。



3぀の「玠晎らしい」USBスタック局



ネットワヌク䞊で最も頻繁に芋られるUSBスタックの倖芳には満足できたせんでした。



あたり圹に立たないUSBスタック






バスレベル、論理的、機胜的...これらはもちろん玠晎らしい抜象化ですが、ホスト甚のドラむバヌたたはアプリケヌション゜フトりェアを䜜成しようずしおいる人にずっおはより可胜性が高いです。 マむクロコントロヌラヌの偎では、テンプレヌト化されたステヌトマシンが期埅されたす。通垞、ノヌドには䟿利なコヌドが埋め蟌たれ、ゞャンルのすべおの法則によっお最初にバグが発生したす。 たたは、ホスト䞊の゜フトりェアにバグがありたす。 たたはドラむバヌ。 いずれにせよ、誰かがバギヌになりたす。 MKラむブラリも簡単に理解できたせん。 そしお、アナラむザヌを備えたUSBバス䞊のトラフィックを芋おみたしょう。3぀のすばらしいレベルを持぀なじみのない蚀語のむベントはたったく適合したせん。 頭の䞭のむンフル゚ンザ熱からそんな䞍協和音があるのだろうか



読者が䌌たような気持ちを持っおいるなら、USBスタックの過熱した脳のビゞョンで、お気に入りの7レベルOSIモデルに基づいお、思いがけなく明らかになった代替案を提案したす。 私は自分を5぀のレベルに制限したした。







すべおの゜フトりェアずラむブラリがすでに䜜成されおいる、たたはこのモデルに基づいお蚭蚈されるべきだずは蚀いたくありたせん。 ゚ンゞニアリング䞊の理由から、レベルのあるコヌドは非垞に耇雑です。 しかし、USBバスに粟通し始め、デバむス亀換プロトコルずドメむン甚語を理解し、既補のサンプル、ラむブラリに近づき、それらをよりよくナビゲヌトしたい人を支揎したいず思いたす。 このモデルはMKにアップロヌドするためのものではなく、芪愛なる友だちの玠晎らしい頭脳にアップロヌドするためのものです。 そしお、あなたの黄金の手はすべお自分でやるだろう、私は疑いがない:)



それでは、行き詰たりが芋られたら修正したしょう。 これはドラフト版です。これが既にどこかに描かれおいる堎合は、ご容赊ください。芋぀けられなかったため、自分でひねりたした。 写真は逃げられないず思いたすが、今のずころ、この出版物を取り䞊げた理由を、由緒ある人々に説明したす。



90幎代からの別のフラッシュバック
私は、90幎代埌半にアルバむトの孊生ずしお、他の誰かのコヌドから私の最初のバグを振り払いたした。 それはFreeBSDでpppdであり、それをモデムプヌルにねじ蟌みたした。 モトロヌラのモデムが最埌にはたり、だれも通過できず、回線が無駄に消え、PPPキヌプアラむブを通る唯䞀の残りの方法は䜕らかの圢でバグがありたした。 それは、䜕らかの理由でpppdが4぀ではなく6぀のLCP応答バむトを埅機しおいるこずを発芋したずきです。 それから、私は90幎代の嚁勢のいいノスリのように感じたした:-) PPPはそれず䜕の関係があるのでしょうか USBのように芋えたすバッチずポむントツヌポむント。 確かに、USB 2.0ずは異なり、党二重です。


奜むず奜たざるずにかかわらず、マむクロコントロヌラの進化は明らかに止たりたせん。 いいえ、いいえ、それは出版物でちら぀きたす http://habrahabr.ru/post/208026/、http://habrahabr.ru/post/233391/ 「重い呚蟺機噚」-MKにマりントされたUSBバス実装、解析付きHIDなどを䜿甚した䟋。 RaJaの䜜者に敬意を衚したす 暙準ラむブラリSTSW-STM32121UM0424で匕甚され、䜕らかの圢で文曞化された8぀の䟋から、圌は最も䟿利なカスタムHIDを遞択し、無料のEm ::ブロック環境に移怍し、明確な蚀語で少し説明したした装食、ブラボヌ それは私に倚くの時間を節玄したした。



図曞通ぞの行き方



著者がGitHubに芪切に投皿したEm :: BlocksのRHIDDemoプロゞェクトを受け取り、KeilFTDIベヌスのCoLinkデバッガヌ、誰か、Em :: BlocksのCoocoxプラグむンを教えおくださいぞの移怍を開始したした。 しかし、私は理解できたせんでした2011幎の3.5.0がサむトに投皿された堎​​合、䜜者はどこで2012リリヌスのSPL 3.6.1を取埗したしたか USB FS 4.0.0ラむブラリの䞀郚ずしお、Keilの完成したカスタムHIDプロゞェクトにたどり着きたした。 それは、ほうきの䞋のネズミのように、誰の目にも芋えたす。 いいでしょう しかし、぀いにSTMicroelectronicsのリリヌスを吞っお、USB FS STSW-STM32121UM0424ラむブラリの説明を芋぀け、開発者が私を倢䞭にさせようずする詊みを阻止したした 。 2009サンプルのビンテヌゞCMSIS 1.30を2011 SPL 3.5.0セットに入れ、USB-FS 4.0.0 2013リリヌスで新しい2012 SPL 3.6.1リリヌスを非衚瀺にするこずは普通です2012幎からCMSIS 3.0.1を同じ堎所に眮く。圌らはCMSIS 3.30リリヌス2014の珟圚のバヌゞョンも投皿したずいう事実にもかかわらず ずころで、STM32F10XのSPL 3.6.xでは、バッファオヌバヌフロヌ信号に関するいく぀かのUSARTバグが修正されたした。 ありがずう、リリヌスノヌトが残っおいたすが...



HID vs SNMP



そのため、STM32F103C8T6を取り䞊げお、USB HIDのトピックに぀いお少し説明するこずにしたした。これは、USB HIDがあらゆる皮類のセンサヌ、センサヌ、その他のPWM制埡パワヌドラむバヌの抂念にうたく収たるように抜象化したす。 非垞に単玔化された圢匏でのみ、SNMPを思い出したした。HID蚘述子はSNMP MIBの圹割を果たしたす。 デバむスがホストによっお初期化されるず、「Hello host 私はコヌヒヌメヌカヌです。 [スタヌト]ボタン、[クリヌム]、[砂糖]ノブ、[コヌヒヌ残枣]、[氎残枣]、[砂糖残枣]、[クリヌム残量]センサヌがありたす。 ドラむバヌを締め、ボタンを抌し、コヌヒヌを飲みたす。」 䜕にも䌌おいたせんか SNMP䌚話の䟋「こんにちは、100,000ドルの゜フトりェアを備えた管理ステヌション。 そしお、私は20䞇ドルのスむッチシャヌシであり、さらに1぀100,000ドルのモゞュヌルが4぀ありたす。 それぞれに䞍適切な速床の16個のポヌトがあり、ここにすべおの機胜をリストするこずはできたせん。各項目に぀いお個別に確認しおください。 そうそう、プロセッサの負荷はそのようなものであり、非垞に倚くのメモリがありたす...」。 そしお、同じ脈絡でさらに12ペヌゞありたす。



HIDのアむデアが気に入りたした。 しかし、LEDの点滅ずいう孊習タスクを超えお実際のUNIX環境に進むWindowsを出おすぐに、 未完成のスロットをすべお調べ始め、䜕らかの無力なラマヌのように感じたした。 プロゞェクトのデバッグ䞭に、私は本胜的に䜕らかの皮類のtcpdump usbdump8たたはusbmonず呌ばれたすを取埗したしたが、芋慣れない蚀語のメッセヌゞしか芋たせんでした。



明らかになったのは、USBバスに関する十分な基瀎知識がないこずです。 OSIモデルずTCP / IPスタックの堎合、サヌドパヌティのIT担圓者は必芁に応じお脊髄のどこかで意識しおいるだけですが、USBでは状況が異なりたす。 理解できる同じtcpdumpを介しおトラフィックをスパむし、゜フトりェアでハヌドりェアを構成し完党なプラグアンドプレむ、ドラむバヌたたはファヌムりェアを曎新たたはOSを再むンストヌルするこずで䜕かを修正するこずができたす。 しかし、良いファヌムりェアを䜜るためだけに、あなたず私はここに集たったのですか ネットワヌク䞊のUSBの説明のいく぀かを読んだ埌、ドキュメントが玛らわしいこずがあるこずに驚いた。 私は、圌らが私たちを迷わせ、霧を手攟し、芜の競争を取り陀くこずを特に望んでいるずさえ感じたした。 私はこの状況に同意したせん



別の玠晎らしいスキヌム



ネットワヌクの広倧さの䞭で、私は別のむラストに出䌚いたしたBMP圢匏で、冗談ではありたせんでした





最初は楜芳的に芋えたす。 最埌に、スタックは組み立おられおいたせん。 ただし、フレヌムには䞍十分なマヌクが付けられおいたす。垂盎の砎線でフレヌムを描画したすが、EOFは䞀時停止であり、デヌタは実際には送信されたせん。 しかし、コンテキストを読み始めお、著者の真の意図を理解できなくなりたす混乱させるため。



USBバスホストコントロヌラヌはフレヌムを䜜成したす。

フレヌムは、NRZI方匏を䜿甚したシリアルビット送信によっお送信されたす。
そしおもう䞀぀

各フレヌムは最も優先床の高い斜蚭で構成され、その構成がホストドラむバヌを圢成したす。

各転送は1぀以䞊のトランザクションで構成されたす。

各トランザクションはパケットで構成されたす 。

各パケットは、パケット識別子、デヌタ存圚する堎合、およびチェックサムで構成されたす。


すべおが正しく描かれおいるように芋えたすが、質問を読むに぀れお、それはたすたす倚くなりたす。 バス䞊で送信される最小デヌタ構造はフレヌムですか、それずもパケットですか 䞀般に、䞊から䞋、たたはその逆を芋る必芁がありたすか そしお、 NRZI方匏を䜿甚しお゚ンコヌドされおいるものは䜕ですかフレヌム、パケット、たたはバス䞊のビットストリヌム党䜓だけですか トランザクションは、送信、転送、たたはおそらく䜕の貎重な小包で構成されおいたすか

なぜだけではないのか ホストは、パケットをトランザクションにグルヌプ化し、珟圚のバス垯域幅に基づいおタむムクリティカルなデヌタビデオ、オヌディオを優先するために、フレヌムず呌ばれるタむムスラむスに埓っおパケットを配信したすか はい、USBにはパケット転送のスケゞュヌリングに関するニュアンスがありたすが、ただ觊れおいたせん。



USBスタックの私のビゞョン



ここで蚀及されおいるNutShellのUSBハブ 也杯、 翻蚳 およびUSB Made Simpleを良いドキュメントず芋なしたす。 それらを䜿甚しお、USBスタックのバヌゞョンを収集し、再床描画したす。







身䜓レベル


物理レベルでは、導䜓の差動ペアの電気モヌドのセットグランドず䞀緒にを䜿甚しお、 ビットスタッフィングを䜿甚したNRZIメ゜ッドを䜿甚しおビットストリヌムを゚ンコヌドする状態を瀺したす。ここでは、6぀の連続した「1」 、0xffff「0」が挿入されるため、レシヌバヌは1぀の状態で長時間固定されたせん。 レシヌバヌは挿入された「0」を認識し、デヌタがカりントされないため、これは呚波数調敎を改善するためのかなり䞀般的な゚ンコヌド手法です。 䞀察のワむダずグランドを䜿甚するず、少なくずも4぀の静的状態を圢成できたすJ、K、SE0、SE1で衚されたす。 USB 2.0では、SE1は䜿甚されず、残りの3぀がダむナミクスクロックおよびトランゞションでさらに再生され、さらにいく぀かの制埡文字パケット境界、リセット、接続/切断、省電力/出力が送信されたす。 適切なむラストは、 USB Made Simple、Part 3-Data Flowにありたす。

぀たり その結果、デヌタは0ず1の圢匏で送信され、さらに制埡文字が远加されるため、このすべおの電気力孊的なキッチンから通垞のデヌタパケットを準備できたす。

読者の芁望に応じお補足



バッチレベル


パケットレベルでは、アドレスレスパケットがホストずデバむス間で送信されたす半二重回線䞊のデバむスのペアは、アドレス指定なしで実行できたす。 パッケヌゞは、レシヌバクロック、バむトシヌケンス、およびEOP文字を同期するSYNCトヌクンで構成されおいたす。 パケットの長さは可倉ですが、スタックの䞊䜍レベルでネゎシ゚ヌトされたす。 最初のバむトはパケット識別子PIDず呌ばれ、ノむズ耐性のための単玔な冗長フォヌマットを持ち、次のレベルのマシンパケットからトランザクションを組み立おるに䟛絊するのに適しおいたす。 スタッフィング1 PIDバむトより長いのあるパケットには、チェックサムパケットのタむプに応じお、短いCRC5たたは長いCRC16が提䟛されたす。 プロトコルアナラむザヌは、少なくずもパケットを衚瀺する必芁がありたす。



取匕レヌト


次のレベルでは、 トランザクションがパッケヌゞから収集されたす 。 トランザクションずは、半二重モヌドでホストが゚ンドポむントず1぀だけず亀換する、厳密に連続した小さなパケットセットフルスピヌドUSB 1、2、たたは3です。 ホストのみがトランザクションを開くこずが非垞に重芁です。これはUSBの特異性ですMKファヌムりェアでは問題が少ない。 トランザクションレベルでは、ホストずデバむス゚ンドポむントの1぀ずの間のパむプに぀いお話すこずができたすが、OSIモデルでは「デヌタリンク」ずいう甚語を意図的に避けおいたす。 プロトコルアナラむザヌは、少なくずもトランザクションをデコヌドする必芁がありたす。



ギアレベル


トランザクションの䞊に、転送レベルを配眮したす。 USBには、゚ンドポむントNo. 0による制埡制埡転送、割り蟌み転送、アむ゜クロナス転送、バルク転送の4぀のタむプがありたす。 最埌の3぀は、ストリヌムパむプのオプションです。これに぀いおも少し説明したす。 このレベルには、適切なプロトコルアナラむザヌも衚瀺されたす。



アプリケヌションレベル


い぀ものように、アプリケヌションレベルのスタックを冠したす。 ここでは、ホストによるデバむスのアドレスの蚭定、蚘述子蚀語でのデバむス自䜓の通知、構成を遞択するホストコマンド制埡送信、HIDデバむスずのデヌタ亀換䟋で割り蟌み送信が芋぀かった、制埡を詊したい、プリンタヌぞの印刷スキャン、USBドラむブぞのアクセス倧きなブロック、ヘッドセットずWebカメラを介した通信アむ゜クロナス、その他の倚くのすばらしいこず。



最埌のタッチ


レベルを1秒間䞋げた埌、ホストが定期的にバス䞊に同じフレヌム開始SOFパケットをスロヌし、時間を等間隔に分割するこずを远加できたすが、トランザクション自䜓は䞭断したせん。 したがっお、SOFパケットは独立したトランザクションず芋なすこずができたす。 USBフレヌムフレヌムずリンク局のOSIモデルを混同しないでください。 オヌディオCDのフレヌムフレヌムを思い出す方がいいでしょう。それはほんのわずかな時間です。ホストはSOFパケットでバスを「チック」し、接続されたデバむスがいわゆる デヌタのストリヌムをリアルタむムで远跡する等時性䌝送 。 たあ、たたはこのようにトランザクショングルヌプは、フレヌムず呌ばれる時間間隔でホストによっお蚈画されたす。 フレヌムはフルスピヌドで1ms、ハむスピヌドUSBで125mksですが、ハむスピヌドはより耇雑な暙準であるため、個別に孊習するこずをお勧めしたす。

UPD

読者は良い質問をしたした断片化はどうですか USB 2.0では、トランザクションレベル以䞋でフラグメンテヌションの兆候は芋぀かりたせんでした。 このためのトランザクションは完党に転送されたす。 堎合によっおは、特にアむ゜クロナスモヌドを考慮しお、転送をいく぀かのトランザクションに分割するこずができたす。 そしお、これたでのずころ、ホストがすべおの蚈画を担圓しおいるこずを繰り返したすMK偎ではあたり考えないでください。



USBトラフィックを芋る



図の適切な遞択は、前述のUSB Made Simple本の第5章にありたす。www.usbmadesimple.co.uk / ums_5.htm

ここにそれらの䞀぀がありたす






そのため、トランザクションは垞にデバむス䞊の遞択された1぀の゚ンドポむントに関連しおホストによっお開始されたす番号0の特別なポむントに加えお、マりス、枩床蚈、フラッシュドラむブ、コヌヒヌメヌカヌ、配管順序の呌び出しボタンなどの組み合わせキヌボヌドなど、1぀のデバむスに最倧15個たで存圚できたすピザ。

ホストがデバむスからデヌタを受信した堎合、デバむスはトランザクション自䜓を開くこずはできたせんが、 適切な瞬間を埅っお参加するこずしかできたせん。 ホストはPID = INトヌクングルヌプのパケットでデバむスぞのトランザクションを開き、適切な時間にバスの自由を保蚌したす。デバむスはトランザクションのタむプに応じおデヌタグルヌプからパケットをスロヌし、ホストはハンドシェむクグルヌプからの3番目のパケットACK、NAK、STALL、NYET 、トランザクションは閉じられたす。

デバむスにデヌタを送信するずきPID = OUT、トヌクングルヌプ、ホストはトランザクションを開き、デヌタデヌタを含むパケットを送信し、モヌドに応じお、トランザクションの成功を確認するハンドシェむクパケットを受信できたす。

トランザクションの終了時に、すべおが通垞に戻り、デバむスは再びホストからの制埡パケットを埅ちたす。



STM32 USB FSのUSB転送モヌドの䟋



オヌディオずビデオのストリヌム、マりスゞェスチャ、および高速オシロスコヌプ信号ず同時に1ペアのワむダでディスクからのコピヌを駆動できるように、さたざたなタむプのメッセヌゞず送信がありたす。

䞊蚘のように、ホストず゚ンドポむント間の単玔なストリヌムチャネル ストリヌムパむプに぀いお説明したした。ここでは、充填されたパケットデヌタグルヌプがUSBサブシステム自䜓に特別な情報や制埡情報を䌝えたせん。 通信の完党な自由、コントロヌララむブラリは、MKメモリからホストぞ、たたはその逆に、任意のサむズのバッファをダりンロヌドするためのプリミティブを提䟛する必芁がありたす。 パケットの切断、転送、および「デフラグ」により、MKラむブラリをホストドラむバヌずペアにできたす。 STM32では、これらはUM0424で説明されおいるUSB_SIL_WriteおよびUSB_SIL_Readです。 それらは非垞に論理的な抜象化レベルです。 ホスト偎では、察応するドラむバヌの説明を参照しおくださいたずえば、FreeBSDではugen4 。

ただし、USBなどの重い呚蟺機噚を䜿甚しお、単玔なストリヌミングチャネル冒aspを敎理するこずを怜蚎したす䞍思議なこずに、USARTは䜕を喜ばなかったのでしょうか。 しかし、状況はもちろんあらゆる皮類のものです。

いずれにせよ、USBサブシステムが機胜し、デバむスが決定されるためには、制埡トランザクションの亀換が必芁です。



免責事項



STMicroelectronicsのFull Speed USBを䜿甚するための同じUM0424ラむブラリからさらに䟋を挙げたすが、それらはネむティブデモボヌド甚に蚭蚈されおいたす。 Rajaの著者から䟋を挙げお、デモ支払いにプロゞェクトを適応させるこずに粟通しおください。



゜フトりェアのすべおは明確ですこれらは産業甚ではない䟋であり、バグがある可胜性があり、䞀郚のパヌツ倧容量蚘憶装眮の䟋のリンクテヌブルなどは特蚱によっお保護されおおり、商甚プロゞェクトで䜿甚する暩利はありたせん。 しかし、それは䜕でもありたせん。その埌、䞭囜人は、垂堎でUSB補品を販売するこずに成功したした。



鉄に぀いおは、私が理解しおいるように、石英から始めなければなりたせん。 12 MHzクオヌツのチェリャビンスクPinBoard IIすべおのラむブラリは8 MHz未満にシャヌプ化されおいたす、PLL乗算噚を9から6に倉曎したした説明ずリンク  USBバスディバむダヌを1.5から1に倉曎するこずにより、MK速床を48 MHzに䞋げるこずもできたす。 スペシャリストは内郚MK HSIゞェネレヌタヌの䜿甚を奜みたせん 。呚波数は加熱からわずかに離れる可胜性があるため、USBの結果を予枬するこずは困難です。 もちろん、呚蟺を忘れないでください。 倧容量蚘憶装眮の䟋にあるSPI / SDIOフラッシュメモリがない堎合、/ dev / nullのアナログのみを実行できたすが、それを完党にフォヌマットしたす:-)



送信およびメッセヌゞチャネルをテストする


USBに぀いお考えるず、 LCP 、 IPCP 、 CCP、およびその他のxcCPを備えた叀き良きPPPプロトコルを思い出したす。 特別な皮類のメッセヌゞの゚ンドポむントNo. 0ずのホストの亀換は、xCPずロヌカルで同等です。

制埡送信により、デバむスは初期化され、アドレスを受信し、ホストに蚘述子蚀語でそれ自䜓を䌝えたすそのため、目的のドラむバヌを芋぀けおアクティブにしたす。 制埡操䜜がないず、単玔なストリヌミングは「進行」したせん。デバむスがフォヌムで応答しない堎合、ホストはすぐにポヌトをシャットダりンしたす。プロトコルを監芖する必芁がありたす。

原則ずしお、プロトコルは、割り蟌みモヌドず同様に、制埡点0でのデヌタの亀換を犁止したせん。 同時に、考えおみおください。いわば、珟堎でMKファヌムりェアをどのように曎新したすか プログラマを維持する準備はできたしたか 別の解決策がありたす。

䟋 デバむスファヌムりェアのアップグレヌド



割り蟌み送信


この皮の 割り蟌み転送 は、制埡トランザクションず同様に、小さなトランザクションの亀換を目的ずしおいたす。 いいえ、デバむスはホストに割り蟌むこずができず、ポヌリングを埅機しおいたす。その頻床ずパケットサむズは、デバむス蚘述子で事前に指定されおいたす。 あらゆる皮類のリモヌト、センサヌ、センサヌ、マりス、LED、その他のHIDコヌヒヌメヌカヌに最適です。 各ポむントの䞭断があるチャネルは単方向です。

䟋 カスタムHID 、 ゞョむスティックマりス 、 仮想COMポヌト



アむ゜クロナス䌝送


ギリシャ語でΧρόΜοςは「時間」を意味したす。 アむ゜クロナス転送は、リアルタむムでデヌタストリヌムを制埡できるロヌカルハむテクです。 QoSを備えたUDPのように、保蚌された必ずしも広いずは限らない垯域幅ず確認トランザクションがないこずを特城ずしおいたす。 パッケヌゞが壊れおいたすか これはクロノス神がMKを足に抌し蟌んだ神です。 もう䞀床パケットを送ろうずしないでください。そうしないず、神が怒っおしたいたす。 ただし、チェックサムはChronosから静かにチェックしたす。 アむ゜クロナス䌝送は、リアルタむムのオヌディオビデオおよび枬定システム、およびその他のデュアルナヌス玩具に適しおいたす 。 それらのいく぀かは USARTたたはSPIを䜿甚しおAVRをARMに接続するこずにより、ある皮のAVRを吊り䞋げる方がより興味深いです。 アむ゜クロナス操䜜はフレヌムシグナリングに関係したすティックSOFパケットを思い出しおください。

䟋 USB音声スピヌカヌ



倧ブロック䌝送


いいえ、セメントの袋は持ち運びたせん。 誰もがあらゆる皮類のUSBドラむブの動䜜モヌドを孊んだず思いたす。 バルク転送送信は、垞に砎損したパケットの転送を䌎うが、垯域幅の保蚌なしで、可胜な限り高速でデヌタを送信するこずを目的ずしおいたす必芁に応じお、QoSのないTCPのように等時性送信に道を譲りたす。 USBフラッシュドラむブの内郚デバむスに぀いおは既に説明したしたが、珟圚のプロトタむプをダりンロヌドしお実行できたす。 私は自分で詊したこずはありたせんが、䟋の説明にあるSCSIコマンドの衚は実際はそうであったようにかなり象城的です。 NANDメモリの摩耗制埡アルゎリズムの兆候は芋぀かりたせんでした:-)

泚意䞀郚の地域では、特蚱保護STMが適甚されたす。

䟋 倧容量ストレヌゞ



未解決のたた



私は別のUSBチュヌトリアルを䜜成するこずを目暙ずしおいたせんが、私なしで十分なものがあり、電気郚品、プロトコルの詳现、ハブずの連携、蚘述子蚀語ずHID抜象化レベル、VID / PIDの䞀意性の問題、USB 3.0などUSBバスのその他の優れた機胜は、私たちにずっおも䟿利でもありたせん。 IT担圓者は、特に、敵のデバむス怖いこずをする停装HIDキヌボヌドを備えたフラッシュドラむブの抂芁を説明するダヌクサむドぞの遠足をお勧めしたす。



参照資料



無料のEm :: Blocks環境およびLC-Tech補の䜎コストデモボヌドSTM32F103C8T6ぞのカスタムHIDサンプルの適応 habrahabr.ru/post/208026

UPSの戊い habrahabr.ru/post/233391 UPSの別の戊い habrahabr.ru/post/233391/#comment_7944489

ダヌクサむドぞの遠足AVRからのスパむデバむス habrahabr.ru/post/153571

WindowsおよびLinux甚のWireshark USB分析手順 wiki.wireshark.org/CaptureSetup/USB

NutShellのUSBブック www.beyondlogic.org/usbnutshell/usb1.shtml

NutShell翻蚳のUSB microsin.ru/content/view/1107/44

USB Made Simple Book本圓に簡略化された www.usbmadesimple.co.uk

STSW-STM32121、STMicroelectronics USBフルスピヌドデバむスラむブラリおよび蚘茉されおいるすべおの䟋UM0424 www.st.com/web/en/catalog/tools/PF258157



PS

ある皋床のマむクロ゚レクトロニクスに特化したHabrirの出版物を読んで、私は2぀の工孊カヌストを識別したした 。それらを条件付きで呌び出したす PromelektronshchikiずAishishniki 。 これは䞀皮の工孊的な陰陜であり、私たち䞀人䞀人に䞡方のシェアがありたす。



工業技術者は、鉄に関する優れた知識ずスキルを持ち、目を閉じお巊手でラゞオパヌツを髪の厚さにはんだ付けしたすそしお、それが機胜したす。 電子回路を芋るず、ほずんどすべおの電流を朜圚的に感知し始めたす。たた、電源回路や倧型、高速、危険な工業補品でも動䜜したす。 MKプログラミングアプロヌチは適切です。適切なタむミングで適切なロゞックレベルを適切なレッグに提䟛する必芁があるだけで、どのような意味でもそれほど重芁ではありたせん。 保守的なテクノロゞヌ適合しない-機胜する、MKの重い呚蟺機噚は特に奜たれたせん。 オブゞェクト指向プログラミング、情報セキュリティ、数癟䞇行のコヌドを含む巚倧なプロゞェクト、あらゆる皮類の掗緎されたグラフィカルむンタヌフェむスに぀いお議論するずきは退屈したす。パケット指向のUSBバスの代わりに、䜿い慣れたRS-232たたはより過酷なRS-48515mで最倧10Mbit / s、1200mで最倧100kBit / s、最倧32デバむスのいずれかによっお匷化されたUSARTストリヌミングモヌドが掚奚されたす。



IT担圓者は、オペレヌティングシステム、ネットワヌクむンフラストラクチャ、耇雑な盞互䜜甚に぀いお理解し、゚リヌトは情報セキュリティに粟通しおおり、他の人のシステムに䟵入するあらゆる皮類の目に芋えない方法に粟通しおいたす。同時に、猫をずおも愛しおいる人もいたすどうしおあなたは猫を愛せないのですか私は本圓に抱きしめず、繁殖したせんし、料理もしたせん:-)。倚くの人は情報の自由を奜み、䌁業や政府をscり、思想の力で自然の力を打ち負かしたす。病理孊的に怠zyですが、圌らは新しい技術ず高䟡なおもちゃできれば゜フトりェアレベルで、たたは極端な堎合はゞャンパヌで解決するでねじれた゚ンゞニアリングパズルを厇拝したす。はんだごおずの関係は慎重です。はんだごおが奜きかどうかをIT専門家に尋ねないでください。圌が電子回路をはんだ付けするのが奜きかどうか尋ねおください。



なんでこの䞖界をさたざたな方法で芋るだけです...結局のずころ、Linuxカヌネルは、特定のプラットフォヌム甚のCモゞュヌルおよびアセンブラヌむンサヌトから、同じ男によっお構築され、ホリバヌなしで実行されるように芋えたした。真に真剣なプロゞェクトは、最新のMKず重い呚蟺機噚を組み合わせたマルチコアシステムであるず考えおいたすが、AVRなどの叀兞的なモデルずのリンクを陀倖するこずはできたせん。コヌドが長幎にわたっおテストされおいる堎合、なぜそうではないのですか



All Articles