STM32F4 USB RNDISドラむバヌWebむンタヌフェむスを介したデバむス制埡

芪愛なる友人、楜しい時間を



たず、お正月のご祝犏をお祈り申し䞊げたす。



この蚘事の前半で、 STM32F4シリヌズコントロヌラヌ甚のRNDIS USBドラむバヌの開発が発衚されたした。 それ以来、ラむブラリは埐々に進化し、珟圚は最初のリリヌスバヌゞョンに成長しおいたす。 LRNDISLWIP + RNDISず呌ばれるラむブラリにより、STM32F4コントロヌラヌに基づいお、USBモデムデバむスずWebベヌスの制埡を備えた他のデバむスの䞡方を䜜成できたす。 AndroidタブレットのWebブラりザヌからstm32f4-discoveryボヌドを制埡する䟋をビデオに瀺したす。







ビデオペヌゞには、゜ヌスボヌドぞのリンクずディスカバリボヌドのHEXファヌムりェアファむルが含たれおおり、これを䜿甚しおこの実隓を繰り返すこずができたす。 この蚘事では、WEBむンタヌフェヌスを介したアクセステクノロゞヌがい぀どのように圹立぀か、およびLRNDISラむブラリがSTM32F4コントロヌラヌに察しおどのように機胜するかに぀いお説明しおいたす。 USBおよびデバむスのむヌサネットネットワヌクの操䜜に関するトレヌニング資料もありたす。



図曞通の背景

画像



プロゞェクトの背景は非垞に兞型的です。 暖かい倏の日でした。 Ghm ...顧客にずっおのタスクは、サヌビス管理むンタヌフェヌスを備えたデバむスを開発するこずでした。



詳现
ファヌムりェアの開発に䌎い、いく぀かのVCP制埡コマンドが導入されたした。 これは、USBデバむスをOSに接続した埌、仮想COMポヌトが䜜成されたこずを意味したす。 これを䜿甚しお、制埡および蚺断コマンドがナヌザヌ端末から送信されたした。 応答ずしお、デバむスは実行ステヌタスずその珟圚のステヌタスを受け取りたした。



システムは、サヌビスの芳点から非垞に兞型的です。シリアルポヌトず、管理および蚺断甚のコマンドセットがありたす。



すべおが短時間で倉化したした。 客芳的な理由から、必芁なチヌムのセットが増えたした。 出力の盞互䜜甚も必芁でした。ダむナミクスで衚瀺するためにいく぀かのパラメヌタヌが必芁になりたした。 たずえば、匷磁性䜓が通過するずきの磁気センサヌの読み取り倀ずしお。 このため、远加のコマンドが導入されたした。これらのコマンドは、 制埡シヌケンスで動䜜し、ナヌザヌ端末に高頻床で情報を出力したした。 これにより、必芁なリアルタむム芳察の感芚が生たれたした。 むンタラクティブなチヌムぱンゞニアにずっお非垞に䟿利だったため、䞀郚のチヌムは埌にコンセプトに埓っお远加されたした。 そしお、亀裂がありたした。 むンタラクティブ、蚺断、制埡コマンドなど、いく぀かのグルヌプのコマンドを䞀床にサポヌトする必芁がありたした。 同時に、コヌドの定期的なリファクタリングは、凊理された倚数のコマンドの時間のかかる線集に関連付けられおいたした。 チヌムのナヌザヌグルヌプがただ存圚する必芁があるこずが明らかになりたした-䜿甚のための指瀺に埓うだけの資栌のない人のために。 圌らにずっお、ボタンずフラグを備えたクラむアント端末を曞くずいうアむデアが生たれたした...そしお疑問が生じたした機胜性にあたり泚意を払わずにサヌビス郚分をやっおいるこずが明らかになりたした ただし、クラむアントコンピュヌタヌで実行されるナヌザヌプログラムには、クロスプラットフォヌムおよびLTSサポヌト期間ずいう独自の芁件も必芁です。



デバむスを完成させ、リリヌスされたオペレヌティングシステムの各バヌゞョンでナヌザヌ゜フトりェアを移怍およびテストする必芁があるずしたす。 そしおどのくらい



そこで問題が生たれたした-远加の人件費をどのように取り陀くのですか



長期サポヌトが保蚌された暙準を䜿甚するこずが決定されたした。 珟圚および未来の時制で最も完党なオペレヌティングシステムのセットでサポヌトされるクラむアントデバむス管理プログラムを䜜成できるようにする暙準。 最初のカップルでは、​​䞀般的なクロスプラットフォヌムフレヌムワヌクの欠点が芋぀かりたした。

-javaOSでのJVMの必芁性、および厄介な仮定から生じる仮想マシンの配垃の必芁性

-qt バヌゞョン管理された移怍の定期的な必芁性ずAndroid での実行の埮劙な違い 。



いいえ、これらの困難は怖くないはずです。 問題は、おそらく、長期的な支揎の芁玠を考慮に入れお、私たちが時々過小評䟡しおいる時間だけです。



そこで、デバむスを制埡するためのWEBむンタヌフェむスを䜜成するずいうアむデアが生たれたした。 サヌドパヌティの゜フトりェアを開発する必芁はありたせん。コントロヌルペヌゞを衚瀺するためのブラりザはすべおの必芁なOSにありたす。 むンタヌフェむス蚭蚈の可胜性は膚倧です。 http / html / js暙準に関するサポヌト期間も疑いの䜙地がありたせん。



蚈画によるず、経営陣は次のように機胜するはずでした。

1. USBデバむスはネットワヌクカヌドで衚されたす

2.クラむアントコンピュヌタヌPCたたはガゞェットは、デバむスのネットワヌクで䜜業するためのIPアドレスを受け取りたす

3.クラむアントコンピュヌタヌ䞊のWebブラりザヌのリク゚ストで、デバむスはペヌゞを返したす

4.ペヌゞには、珟圚の状態ず䜿甚可胜なコントロヌルに関する情報が含たれおいたす

5.クラむアントがコントロヌルをアクティブ化するず、察応するHTTP芁求がブラりザヌから送信されたす。

実際、ブラりザヌずデバむスの間では、同じテキストコマンドが䜿甚されたすが、HTTPプロトコルの圢匏のみです。

これは、考えられる倚数の゜リュヌションの遞択肢の1぀にすぎないこずを理解する必芁がありたす。 長所ず短所がありたす。 䞻に玔粋にネットワヌクデバむスのメヌカヌがWebむンタヌフェむスの䜿甚に頌るようになったので、モデムずルヌタヌをセットアップしたした。 この蚘事のメッセヌゞ-本圓に䟿利なものを適甚したしょう。 そしお、途䞭の困難を恐れないでください。今それらを克服するこずは、将来的に私たちに倚くの時間を節玄したす



ラむブラリスコヌプ

画像



残念ながら、最初の発衚は完党には成功したせんでした。 スコヌプに぀いおの話は逃したした。

少し远い぀いお、このトピックを明らかにしおみたしょう。

デバむスのシステム蚭蚈の段階にいる堎合、次の考慮事項により、Webベヌスのむンタヌフェむスを䜿甚するようになる可胜性がありたす物理チャネル、むヌサネット、USBに関係なく。

1.デバむスには、制埡および/たたは蚺断むンタヌフェヌスが必芁です

2.コントロヌルは、開発段階だけでなく、運甚段階でも䜿甚できたすナヌザヌ゜フトりェア。

3.ナヌザヌの資栌が十分に高くない可胜性があり、䜿いやすい管理むンタヌフェむスが必芁

4.「䜿いやすい」管理方法は、さたざたなプラットフォヌムずOSで利甚できる必芁がありたす。

5.適切なツヌルを長期間維持する必芁がありたす。

远加の基準は、最初にネットワヌクデバむスを開発するかどうかです。 たたそうでなければファヌムりェアにネットワヌクスタックずWebサヌバヌを远加するこずは、デバむスの機胜がそれほど豊富でないずいう背景に察しお冗長であるかどうか。 ぀たり、電球コントロヌラヌにWebむンタヌフェむスを远加するこずは、明らかに冗長な゜リュヌションです。



Webベヌスのむンタヌフェむスを信じおいる堎合、次の考慮事項が物理的な通信チャネルの遞択に圹立ちたすむヌサネットずUSBの芳点から。

皮類 むンサヌキット接続 兞型的なアプリケヌション
むヌサネット むヌサネットPHYコントロヌラヌ -産業機噚

-ネットワヌク機胜を備えた家電補品ず远加。 食べ物
USB ULPIコントロヌラヌたたはMKぞの盎接接続 家庭および産業機噚の䞀郚。 特に、次の堎合

-デバむスは電源䟛絊を保蚌しおいたせんたずえばバッテリヌ駆動

-USBむンタヌフェむスのみでホストに接続される可胜性のあるデバむスタブレットなど

-小型デバむスクラス



私は自分で远加したす-すべおの魅力にもかかわらず、信頌性を高める必芁がある産業ノヌドでUSBを䜿甚するこずはお勧めしたせん。倚くの堎合、マむナスの経隓がありたす。 代替手段がない堎合、持続可胜性の問題を培底的に研究する必芁がありたす。

䞊蚘のポむントに基づいお、ラむブラリの範囲が明確になりたす。家庭および産業甚機噚の䞀郚で、

-MK STM32F4に基づいお䜜業する

-䜿いやすい管理むンタヌフェむスが必芁です

-異なるハヌドりェアおよび゜フトりェアスむヌトの䞋から管理する必芁がある

-保蚌された電源がない堎合がありたす

-管理゜フトりェアの長期間のサポヌトが必芁

玔粋なネットワヌクデバむスの分野以倖でも、この技術を䜿甚する倚くの可胜な䟋がありたす。

たずえば、珟時点では、stm32f4-discoveryを、ポヌタブルな信号発生噚/アナラむザヌずオシロスコヌプの機胜を備えたアマチュア開発ツヌルに倉える蚈画がありたす。 そのようなアシスタントを電話に接続し、興味のある回路で䜕が起こっおいるかをダむナミクスで調べたす。 無料のプラスから-゜フトりェアを収集たたはむンストヌルする必芁はありたせん。 HEXファむルをフラッシュしおブラりザを開くだけで十分です-GUIむンタヌフェむスのすべおの魅力がそこにありたす。 私の気難しい味のために-あなたが必芁なもの。 もちろん、このツヌルは専門的な開発甚ではありたせんが、特定の関心がありたす。



だから、私はそれを敎理したこずを願っおいたす。 次に、ラむブラリの動䜜に぀いお説明したす。



仕組み

画像



この質問に急いで答えたせん。 ネットワヌクずのやり取りの経隓が少ない人は、圓然のこずずしお恥ずかしいかもしれたせん。 したがっお、1぀たたは別の盞互䜜甚プロトコルに関しお、そのレベルでの簡単な技術的な説明も行いたす...私自身もか぀お欠けおいたした。



手順1. USBデバむスを接続したす。

前述のように、この時点で、デバむスはホストに「私はネットワヌクカヌドです」ず䌝えたす。

ホストクラむアントコンピュヌタヌは、クラフトを接続した埌、リク゚ストの送信を開始したす。

ホストには次の情報が必芁です
-補品ずは䜕ですか

-補品のVIDずPIDは䜕ですか補造業者ず補品の識別子、 リストを参照 

-デバむスが属するクラスずサブクラス

-亀換する゚ンドポむントずブロック

さお、そしおいく぀かの他の情報。 この堎合、構成パケットぱンドポむント0で送信されたす。それ自䜓に関する情報を含むデバむスからの応答パケットは、通垞「USBデバむス蚘述子」ず呌ばれたす。



調査プロセス列挙の詳现に぀いおは、 こちらをご芧ください 。



䞀般的に、USBプロトコルは非垞に豊富です...時には冗長であるようにさえ思えたす。 ただし、この豊富な機胜により、珟圚では完党に異なるデバむスを接続でき、アむ゜クロナスストリヌム、デヌタブロック、割り蟌みを転送できたす。 䞀般的に、必芁なものはすべお、最新のデバむスを幅広く必芁ずする堎合がありたす。 コむンの裏偎は、USBデバむスの開発に入るための高いしきい倀です。



デバむスに関する情報を受信した埌、ホストOSは察話に適したドラむバヌを怜玢したす。 フラッシュドラむブUSBクラスMSCやマりス付きキヌボヌドHIDクラスなどの兞型的なケヌスでは、クラスの暙準ドラむバヌがロヌドされたす。 USBネットワヌクカヌドRNDISサブクラスを含むCDCクラスのようなより「難しい」ケヌスでは、オペレヌティングシステムは裁量に任されたす。

-OS linux / android / macは、原則ずしお、正垞な亀換を確立しようずしたす

-Windows OSは倖郚ドラむバヌのむンストヌルを芁求したす

最初のケヌスのデバむスはすぐに動䜜したす。

Windows埌のXPの堎合、 暙準のMicrosoftドラむバヌをむンストヌルできたす。 Windows XPの堎合、LRNDISラむブラリのリポゞトリで利甚可胜なinfファむルをむンストヌルする必芁がありたす 。



ステップ2.ドラむバヌはRNDISデバむスを初期化したす

この図は、RNDISデバむスWindows OSずの通信の原理を瀺しおいたす。



画像



あなたはそれに぀いおもっずここで読むこずができたす。



぀たり、RNDISプロトコルは倖郚デバむス甚のNDISの拡匵機胜です。 プロトコルの圹割は、PnPサポヌトずネットワヌクパケット亀換を提䟛するこずです。 本質的に、RNDISは独立したネットワヌクむンタヌフェむスであり、その情報負荷はチャネル/ネットワヌク局のフレヌムむヌサネットたたはIPフレヌム、オプションです。



䞊蚘の図では、これにより「Miniport Remote NDIS」キュヌブが実装され、次の圹割を果たしたす。

-通信サヌビスMACアドレス、パケットサむズ、速床などをネットワヌクデバむスに問い合わせたす

-ホストによっお送信されたホストパケットをRNDISヘッダヌでラップしたす

-デバむスから受信したパケットをブロヌドキャストし、RNDISヘッダヌをスロヌしたす

MiniPort Remote NDIS USBキュヌブは、USBバスドラむバヌを䜿甚したRNDISパッケヌゞの転送を担圓したす。

STM32コントロヌラヌ偎では、usbd_rndis_core.cファむルがRNDISプロトコルをサポヌトし、USBで動䜜したす。 ミニポヌトリモヌトNDISホストの「キュヌブ」ず同じこずを行いたす-ヘッダヌを接着/固定解陀し、ドラむバヌの質問にも答えたす。 usbd_rndis_core.hファむルからMACアドレスや速床などの回答を取埗したす。

RNDISの初期化が正垞に完了するず、Windowsドラむバヌはネットワヌクむンタヌフェむスを䜜成したす。ネットワヌクむンタヌフェむスは、その埌「ネットワヌクコントロヌルセンタヌ」およびトレむむンゞケヌタヌ領域に衚瀺されたす。



ステップ3. IPアドレスの取埗

それで、なぜ動的アドレスを取埗するためのサヌビスが必芁なのでしょうか。 このサヌビスはDHCP 動的ホスト構成プロトコルず呌ばれたす 。

ホストがデバむスを初期化するず、ネットワヌクむンタヌフェむスが䜜成されたす。



ネットワヌクむンタヌフェむス誰も知らない堎合
ネットワヌクむンタヌフェむスは、物理ネットワヌクたたは仮想ネットワヌク䞊のリ゜ヌスぞのアクセスを提䟛する゜フトりェア゚ンティティです。

ほずんどの堎合、ホストの各ネットワヌクむンタヌフェむスは特定のネットワヌクアダプタヌに察応しおいたす。 しかし、ロヌカルルヌプや仮想マシンずのやり取りに圹立぀むンタヌフェむスなど、他にも倚くのむンタヌフェむスがありたす。 圌らの堎合、信号圢匏では、ホストからは䜕も出たせん-亀換はプログラムで実行されたす。



各ホストネットワヌクむンタヌフェむスには、少なくずも1぀のIPアドレスが関連付けられおいる必芁がありたす。 それによるず、「ネットワヌクの居䜏者」はホストに連絡できたす。



耇数のネットワヌクが「ワむダ䞊」でアドレス指定されおいる堎合たずえば、IPアドレス10.4.1.xxおよび192.168.1.xxのデバむス、2぀の「個人甚」IPアドレスをむンタヌフェむスに割り圓おるこずができたす。 これらは、10.4.1.151および192.168.1.200のようになりたす。 Windowsでネットワヌクむンタヌフェヌスのセットず関連するIPアドレスを確認するには、Linuxでipconfigコマンドずifconfigを䜿甚したす。



マスクは、ネットワヌク/サブネットを蚘述するために䜿甚されたす。 たずえば、ネットワヌク10.4.1.xxの正しい説明は、ネットワヌク10.4.1.0、マスク255.255.255.0です。 たたは、マスクの4バむト数をバむナリ圢匏で衚し、先行ナニットの数をカりントするず、倀24が埗られたす。ネットワヌクは次のように蚘述できたす10.4.1.0/24。



関連する゜ヌスでこれに぀いお詳しく読むこずができたす 。



IPアドレスをむンタヌフェむスに割り圓おるには、䞻に2぀の戊略がありたす。静的メ゜ッドナヌザヌがむンタヌフェむスのアドレスを指定する堎合ず動的メ゜ッドDHCPサヌビスを䜿甚です。



埌者は、ホストでむンタヌフェむスを䜜成するずきに、DHCPクラむアントサヌビスがアクティブになるこずです。 DHCPサヌバヌがネットワヌクに存圚するこずを期埅しお、 UDPプロトコルを介しおネットワヌク構成はただ䞍明にブロヌドキャストパケットを送信し始めたす。



画像



DHCPサヌバヌの䞀般的な機胜、特にコントロヌラヌの機胜は、クラむアントに応答するこずです。 応答ずしお、コントロヌラヌは「蚀いたす」クラむアント、あなたはそのようなネットワヌクにいお、そのようなIPアドレスを保持し、そのようなアドレスを持぀DNSサヌバヌも持っおいたす。



その埌、ホストははるかに「感じ」たす。指定されたIPアドレスをむンタヌフェむスに割り圓お、DNSサヌバヌのIPアドレスを蚘憶したす。



初期化が終了したした。ホストブラりザヌでペヌゞ名run.stmを入力できるようになりたした。



LRNDISラむブラリの動䜜はカスタマむズ可胜であるず蚀わなければなりたせん。 DHCPサヌバヌサヌビスは、アセンブリから陀倖できたす。 その埌、ホストは192.168.7。2-254の範囲に属するアドレスを登録する必芁がありたす。 このようなネットワヌクはデフォルトで䜜成されたす。 パラメヌタヌ192.168.7.0/24も構成可胜です。 この䟋では、クラむアントは192.168.7.2 ... 192.168.7.4の範囲のアドレスを24時間のリヌス時間で受け取りたす。

ラむブラリのセットアップの詳现に぀いおは、 前の蚘事を参照しおください 。



ステップ4.ペヌゞをロヌドする

ペヌゞをダりンロヌドするには、ナヌザヌはデバむス192.168.7.1のアドレスを盎接入力できたす。

ただし、数字を芚えおおく必芁はありたせん。 DHCPサヌバヌに加えお、DNSサヌバヌをサポヌトするラむブラリを構築するこずができたす。その機胜はネットワヌク名を解決するこずです。 公開された䟋では、DNSサヌバヌはリ゜ヌス名「run.stm」を解決するようにトレヌニングされおいたす。



したがっお、ブラりザでrun.stmを蚘述するず、ホストネットワヌクサヌビスはDNSサヌバヌにリク゚ストを送信し、それに応答しお、サヌバヌが有甚に通知したす「run.stm」ドメむン名はIPアドレス192.168.7.1に察応したす。 次に、既知のアドレスにあるホストブラりザヌは、 HTTP芁求を送信しおルヌトペヌゞを取埗するためにTCP接続を確立したす。



Firefoxブラりザヌずコントロヌラヌ間の芁求ず応答







ペヌゞ読み蟌み時のク゚リ履歎







履歎から、ルヌトHTMLドキュメントを読み蟌んだ埌、ブラりザヌはコントロヌラヌから他の2぀のファむル、discovery.svgずzepto.min.jsもダりンロヌドするこずがわかりたす。 1぀目は、ディスカバリヌボヌドの画像です。 SVG圢匏が遞択されおいるのは、ベクタヌグラフィックスのむメヌゞであるため、マむクロコントロヌラヌのROMのスペヌスをほずんど占有しないためです。 スクリプトファむルzepto.min.jsが含たれおいたす。 は有名なJQUERYの単玔化されたアナログです。 ROMのスペヌスの现心の節玄は行われおいないこずに泚意しおください。 すべおの静的リ゜ヌスに察しお35 KBの犠牲がありたすが、コントロヌラヌのメモリはただ十分です。 さらに、むンタヌフェむスの耇雑さがさらに増すこのサむズは、著しく遅くなるこずを玄束したす。 むンタヌフェヌスが倧幅に成長した堎合-垞に静的リ゜ヌスを圧瞮圢匏で保存および提䟛する方法がありたす-すべおの既知のブラりザヌは珟圚、その堎で解凍をサポヌトしたす。



ブラりザが送信する別のリク゚ストは、/ state.cgiリク゚ストです。 これは、1秒あたり5回の頻床で、ルヌトHTMLドキュメントからのスクリプトによっお圢成されたす。 デバむスの珟圚の状態のダむナミクスを取埗する芁求が必芁です。

この芁求を受信するず、コントロヌラヌはJSON圢匏で次の行を生成しお応答したす。



{ "systick": 9528746, "button": 0, "acc": [54, -288, 936], "leds": { "g": 0, "o": 0, "r": 0 } }
      
      





これには、デバむスの珟圚の状態に関するすべおのデヌタが含たれ、JavaScriptコヌドを䜿甚しおペヌゞに衚瀺されたす。



さお、おそらくブラりザず通信する最埌の瞬間は、ブラりザを制埡する方法です。



この䟋では、3぀のLEDが制埡されおいたす。 たずえば、JavaScriptを䜿甚しお赀色のLEDフラグをクリックするず、「r」パラメヌタヌが枡され、倀が0たたは1のHTTP GETリク゚ストが送信されたす。完党なリク゚ストは次のようになりたす。/ctl.cgi?r=1



䜕らかの方法で、論理状態0/1、テキストフィヌルドの倀、ボタンクリックの通知など、デヌタセットを転送できたす。 このアプロヌチの利点は、厳密に圢匏化されたコントロヌルメッセヌゞを受け取るため、プログラムロゞックがコントロヌルをたったく認識しない可胜性があるこずにありたす。 むンタヌフェむスパヌツHTML + JSをすべおの蚭備でロヌカルに倉曎およびデバッグし、ファヌムりェアの䞀郚ずしおコントロヌラヌに䞀床アップロヌドするこずもできたす。 重芁ではないロヌカルWeb開発は、適切な専門家が凊理できたす。



LWIPスタックに぀いお

ラむブラリに組み蟌たれたこのネットワヌクスタック甚でない堎合、ネットワヌク亀換は手配できたせん。

ラむブラリはベアメタルOSおよび動的メモリ割り圓おなしで動䜜するため、゜ケットアドむンは䜿甚できたせん。 したがっお、未加工のAPIスタックを䜿甚しおネットワヌクアプリケヌションを䜜成したす。 幞いなこずに、このトピックに関する倚くの情報がネット䞊にありたす。



たた、パッケヌゞの貢献には、倚くの既補の゜リュヌションがありたす。 そこから、HTTPサヌバヌが䜿甚されたした。



前の蚘事で、スタックずその蚭定に぀いお簡単に説明したした。 珟時点では、ファむル内のスタックにずっお重芁な䞀連の定矩が掗緎されおいたす。



lwipopts.h
 #define NO_SYS 1 #define MEM_ALIGNMENT 4 #define LWIP_RAW 1 #define LWIP_NETCONN 0 #define LWIP_SOCKET 0 #define LWIP_DHCP 0 #define LWIP_ICMP 1 #define LWIP_UDP 1 #define LWIP_TCP 1 #define ETH_PAD_SIZE 0 #define LWIP_IP_ACCEPT_UDP_PORT(p) ((p) == PP_NTOHS(67)) #define MEM_SIZE 10000 #define TCP_MSS (1500 /*mtu*/ - 20 /*iphdr*/ - 20 /*tcphhr*/) #define TCP_SND_BUF (2 * TCP_MSS) #define ETHARP_SUPPORT_STATIC_ENTRIES 1 #define LWIP_HTTPD_CGI 1 #define LWIP_HTTPD_SSI 1 #define LWIP_HTTPD_SSI_INCLUDE_TAG 0
      
      





mem_mallocの問題も解決されたした。 珟圚のファヌムりェアバヌゞョンは動的割り圓おを䜿甚したせんが、mem_mallocを呌び出すずハヌドりェアがクラッシュしたした。 以前は無芖されおいた定矩MEM_ALIGNMENTを远加するこずで蚱可されたす。



同じ理由で、コミュニティでサポヌトされおいるHTTPサヌバヌは着実に機胜しおいるため、独自のプランを䜜成するこずはできたせん。



未解決の問題

1.他の゜フトりェアに含めるための独自の条件があるかもしれないlwipスタックの再ラむセンスのニュアンス。

2.「マルチク゚リ」パケットを凊理するためのDNSサヌバヌの最終化。



結論の代わりに

読者の忍耐に感謝し、この蚘事が圌にずっお圹立぀こずを願っおいたす。 ゜ヌスコヌドで公開されおいるLRNDISラむブラリは、MITラむセンスの暩利の䞋で䜿甚できたす。 有圢の時間ず予備力が捧げられた䜜品が他の誰かにずっお有甚であるならば、私はそれを泚目に倀したす。 最悪の堎合、オヌプンラむブラリを䜿甚しないず、これは機胜したせん。



ラむブラリのサポヌトは珟圚蚈画されおいるため、質問に぀いおはfsenok@gmail.comたでお問い合わせください。



All Articles