ユニット 7 / 12

通信プロトコルとネットワークスタック

利益:

  • AIサポートによるI2C/SPI/UARTおよびTCP/IP、MQTTなどのプロトコルのフレーム/パケット構造を分析する機能
  • AIによりプロトコルエラー(タイミング、アドレッシング、チェックサム)を仮説として絞り込む機能
  • 標準ドキュメント、アナライザー(ロジック/パケット)測定によるAIのプロトコル解釈の検証機能

プロトコルは、2 つのデバイスが相互に理解するために同意する一連のルールです。つまり、どのような速度で、どの順序で、どのような形式で通信するかということです。温度センサーが I2C 経由でマイクロコントローラーと通信するか、デバイスが TCP/IP および MQTT 経由でクラウド サーバーと通信するかは、プロトコルに基づいています。この単元では、AI を使用してプロトコル フレーム/パケットを分析し、プロトコル エラーを絞り込み、通信スタック (物理層からアプリケーションまでの重なり合う層) を理解する方法を学びます。 AI はプロトコルを説明し、仮説を生成するのに強力です。しかし、回線が実際に何を行うかは、そのアナライザーの測定 (論理アナライザー、プロトコル/パケット アナライザー) と標準文書によってのみわかります。

組み込みシリアルプロトコル: I2C、SPI、UART

ボード上のチップは通常、次の 3 つのシリアル プロトコルと通信します。

  • UART: 2 ライン (TX/RX)、クロック ラインなし。両側を同じ速度 (ボーレート) に設定する必要があります。シンプルですが、同期は速度に依存します。
  • SPI: クロック (SCLK)、データ入出力 (MOSI/MISO)、および選択 (CS) ライン。高速、全二重ですが、より多くのピンが必要です。クロック極性/位相 (CPOL/CPHA) は両側で一致する必要があります。
  • I2C: 2 つのライン (SDA/SCL)、アドレスベース、同じライン上の複数のデバイス。プルアップ抵抗と共通のグランド状態。遅いですが経済的です。

AI は、これらのプロトコルがどのように機能するか、そのフレームワーク構造、および典型的な障害の原因を非常に詳しく説明します。 I2C デバイスが応答しなくなった場合に、考えられる原因 (アドレスの誤り、プルアップの欠落、速度の不一致、共通グラウンドの欠如、回線の競合、ケーブルの長さ/容量) を体系的にリストします。しかし、これらのどれが本物であるかは、ロジック アナライザでラインを測定し、SDA/SCL 波形を観察することで理解できます。 AI が仮説を与え、測定が決定します。

ヒント: シリアル プロトコル障害が発生した場合、AI に「考えられる原因を最も可能性の高いものから最も可能性の低いものまでランク付けし、それぞれのアナライザーで確認されたものはすべて確認されます」と尋ねます。このようにして、測定を的を絞ったものにすることができます。それぞれの理由を 1 つずつ試す代わりに、アナライザー ビューにより適切なブランチに移動します。

ネットワークプロトコル: TCP/IP、UDP、MQTT、CoAP

デバイスがネットワークやクラウドに接続すると、階層化プロトコルが機能します。 TCP/IP スタックは基本的に、物理/データ リンク (イーサネット、Wi-Fi)、ネットワーク (IP: アドレス指定とルーティング)、トランスポート (TCP: 信頼性、シーケンシャル、フロー制御 / UDP: 高速、トラストレス)、およびアプリケーション (HTTP、MQTT、CoAP) の階層構造になっています。主要な概念:

  • TCP と UDP: TCP は損失を補償し、順序を保証しますが、遅延とオーバーヘッドが発生します。 UDP は高速ですが、配信保証はありません (テレメトリにはリアルタイムのオーディオ/ビデオが推奨されます)。
  • MQTT: パブリッシュ/サブスクライブ モデルで動作する軽量の IoT メッセージング プロトコル。ブローカーを介したトピック経由のメッセージング。 QoS レベルは配信保証を設定します。
  • CoAP: 制限付きデバイス用の HTTP に似た UDP ベースの軽量プロトコル。

AI はこれらのプロトコルのフレーム/パケット構造を分析し、Wireshark (パケット アナライザー) キャプチャの解釈を支援し、MQTT トピックの設計をレビューします。ただし、実際のトラフィックが何であるかはパケット キャプチャによって検証され、サーバーの動作は実際のテストによって検証されます。

チェックサム、CRC、およびフレーミング

ほとんどのプロトコルは、チェックサムまたは CRC (巡回冗長検査) を使用して、データが破損していないかどうかを確認します。送信者はデータから検証値を計算し、受信者は同じ計算を行って比較します。 AI は CRC/チェックサム計算のコードを記述および作成しますが、多項式の選択、エンディアン、初期値などの詳細は規格に固有です。 AI によって生成された CRC コードは、プロトコルの公式定義と逐語的に比較し、既知のテスト ベクトルに対して検証する必要があります。

ミニケース3個

ケース 1 — 不完全なプルアップ。チームはブレッドボード上で I2C センサーを実行できません。デバイスアドレスを確認しません (ACK なし)。 AI は、最も可能性の高い原因として、プルアップ抵抗と共通アースの不足を挙げています。論理アナライザーで SDA ラインを観察すると、信号が完全にハイ レベルに達していないことがわかります。プルアップ抵抗を付加すると通信が開始されます。教訓: AI が最も可能性の高い原因を強調し、アナライザーがそれを確認しました。

ケース 2 — 間違った SPI モード。エンジニアが SPI デバイスから意味不明のデータを読み取ります。 AI は、考えられる原因としてクロック極性/位相 (CPOL/CPHA) の不一致を示唆しています。アナライザでは、クロックがデバイスが予期するエッジとは異なるサンプリングをしているように見えます。モードが修正されると、データは意味のあるものになります。教訓: SPI における「データだが無意味」の症状は、ほとんどの場合モードの不一致です。測定によってこれが明らかになります。

ケース 3 — MQTT QoS の誤解。インターンは MQTT 経由でテレメトリを送信しましたが、一部のメッセージが失われたことに気付き、AI に質問しました。 AI は、QoS 0 は「最大 1 回のみ、配信は保証されない」と述べています。配信を保証するには QoS 1/2 が必要ですが、これによりオーバーヘッドと遅延が発生することを説明します。インターンはテレメトリの重要度に基づいて QoS 1 に切り替え、実際のテストでブローカーの動作を検証します。レッスン: AI プロトコル オプションについて説明します。アプリケーションに応じて正しい選択が行われ、テストによって検証されます。

コピー可能なプロンプトテンプレート

プロトコル障害ナビゲーション テンプレート「[I2C/SPI/UART/TCP/MQTT] 通信に次の症状があります: [症状]。考えられる原因を最も可能性の高いものから最も可能性の低いものまでランク付けします。各原因について: (1) なぜこの症状が発生するのか、(2) アナライザ/測定で確認されたものはすべて確認され、(3) 表示されたものはすべて排除されました。しないでください。確定診断は測定によって絞り込みます。」

フレームワーク/パケット分析テンプレート 「次の [I2C/SPI/UART バイト配列 / パケット キャプチャ] の内容をフィールドに分割し、各フィールド (アドレス、コマンド、データ、チェックサム/CRC、フラグ) を説明します。エンディアンとビット順序に関する仮定を明確に述べてください。プロトコルの公式説明とテスト ベクトルでコメントを検証する必要があることに注意してください。データ: [貼り付け]。」

CRC/チェックサム検証テンプレート「[プロトコル] の CRC/チェックサム計算について説明します: 多項式、初期値、ビット順序、最終

プロトコル選択テンプレート「次のアプリケーションのトランスポート/アプリケーション プロトコルの比較を実施します: [要件: 配信保証、遅延、電力、帯域幅、デバイス制約]。TCP/UDP および MQTT/CoAP/HTTP オプションをこれらの基準と比較します。明確な選択を押し付けないでください。各オプションのバランスをとり、選択は実際のテストによって検証されるべきであると述べます。」

弱いプロンプト / 強いプロンプト

弱いプロンプト: 「I2C が動作していません。なぜですか?」

強いプロンプト: 「I2C センサーが ACK を返しません (アドレスが認識されません)。考えられる原因を最も可能性の高いものから列挙してください: プルアップ、コモン グラウンド、間違ったアドレス、速度、ケーブル容量、競合。それぞれの原因について、ロジック アナライザの SDA/SCL で確認されたものはすべて確認され、表示されたものはすべて除外されていることを書き込みます。診断は行わないでください。測定によって絞り込めるリストが必要です。」

弱いプロンプトでは単一の推測が生成されます。強力なプロンプトは、測定に絞り込み、順序付けして検証できる診断マップを提供します。

プロトコル比較表

プロトコル

種類

強み

検証ツール

UART

シリーズ、時計なし

シンプルな2行

ロジカルアナライザー

SPI

シリアル、クロック付き

高速、全二重

ロジカルアナライザー(CPOL/CPHA)

I2C

シリアル、アドレス指定可能

多くのデバイス、少数のピン

アナライザー(ACK、プルアップ)

TCP

ネットワーク、トランスポート

信頼できる、順番に

パケットアナライザー(Wireshark)

UDP

ネットワーク、トランスポート

高速、低遅延

パケットアナライザー

MQTT

アプリケーション

軽量、パブ/サブ、QoS

ブローカーログ + パケットキャプチャ

注意: AI にプロトコル キャプチャを解釈させるのは高速ですが、AI がビット順序またはフィールド境界を誤って想定する可能性があります。各分析をプロトコルの公式説明および既知のテストベクトルと照らし合わせて検証します。

よくある間違い

  • 故障原因を測定せず、AIの予測に基づいて変更する。アナライザー ビューは、正しい原因を導き出します。
  • SPI での CPOL/CPHA 準拠の無視。 「データはあるけど意味がない」というのはモードの非互換性が原因であることが多いです。
  • I2C のプルアップとコモン グラウンドを忘れています。 「まったく動作しない」という最も一般的な原因です。
  • CRCパラメータを仮定します。多項式、開始、ビット順序は規格に固有です。テストベクタで検証されます。
  • MQTT QoS と配信保証が混同されています。 QoS 0 は保証されません。用途に応じて選択およびテストが行​​われます。

要約すると

この単元では、AI を強力な補助として使用して、I2C/SPI/UART や TCP/IP などのプロトコル、MQTT、フレーム/パケット分析を説明し、障害原因を体系的に絞り込みました。しかし、プロトコルは正確であり、標準に拘束されています。回線が実際に何を行うかはロジック/パケット アナライザーによって決定され、分析の精度は正式な定義とテスト ベクトルによって決定され、障害の原因は測定によって決定されます。 AI に「最も可能性の高い原因とそれを確認するための測定値」を提供するよう指示します。分析者と標準が決定します。

アプリケーションタスク

シリアル プロトコル障害シナリオ (I2C ACK なしなど) を選択します。 「プロトコル障害の絞り込み」テンプレートを使用して、AI から連続した測定検証可能な診断マップをリクエストします。次に、サンプルのバイト配列 (センサー読み取りフレームなど) を取得し、「フレーム/パケット解析」パターンと間隔をあけて、エンディアンの仮定に注意してください。最後に、「CRC/チェックサム検証」テンプレートを使用して、既知のテスト ベクトルに対して CRC コードを検証します。

チェックリスト

  • [ ] 故障原因はAI予測ではなくアナライザー測定で確認しました。
  • [ ] SPI では CPOL/CPHA、I2C ではアドレス/プルアップ/共通グランド制御を列挙しました。
  • [ ] フレーム/パケットの解析を公式のプロトコル定義と比較しました。
  • [ ] CRC/チェックサムパラメータをテストベクトルで検証しました。
  • [ ] 要件に従ってトランスポート/アプリケーション プロトコルを選択し、実際のテストでテストしました。
  • [ ] MQTT QoS の配送保証の意味を正しく解釈しました。