CodingBox ドキュメント

コントローラーとファームウェア:DDM、APC、メモリ、保護

マネージド対応のトランシーバーには、必ず小さなコンピューターが内蔵されています。マイクロコントローラー(MCU)は、測定し、制御し、報告します。そして — プログラマーの視点からもっとも重要なことに — 読み書きするメモリそのものでもあります。モジュールが単純な EEPROM を持つのか、それとも EEPROM のふりをする MCU を持つのかによって、どのようにコーディングできるか、なぜ一部の書き込みが電源再投入後に消えるのか、そしてそもそもなぜパスワードが存在するのかが決まります。このページでは、コントローラーが何を行うか、そしてその設計がベンチ上にどう現れるかを説明します。

MCU が行うこと

タスク詳細現れ方
測定温度(サーミスターまたはオンチップセンサー)、Vcc、レーザーバイアス、モニター PD 電流(Tx)、受信器の光電流(Rx)を、10–12 ビット ADC で毎秒数回サンプリングし、工場校正値を適用するDDM 値 — パラメーター
APC — 自動パワー制御モニター PD 電流を工場設定の目標値と比較し、ドライバーのバイアス DAC を調整するTx パワーは一定、バイアスは上昇 — Tx バイアスと経年劣化
温度補償ルックアップテーブルが、温度に応じて変調電流と(PAM4 では)DSP 設定を調整する安定した消光比
TEC 制御冷却モジュールでレーザー温度を保持する PID ループ。DWDM では波長ロッカーのフィードバックもレーザー温度、TEC 電流のモニター値
しきい値とフラグすべてのモニター値をアラーム/警告のしきい値と比較し、ラッチされたフラグを設定し、IntL を駆動するしきい値とアラーム
低速ピンTX_DISABLE、RS0/RS1、LPMode、ResetL を読み取り、TX_FAULT、RX_LOS を駆動する(またはハードウェア信号をゲートする)ピンの挙動
2線スレーブA0h/A2h(SFP)、またはページ/バンク付きの A0h(QSFP、CMIS)で応答するメモリマップ — 2線インターフェース
ステートマシンCMIS のモジュールおよびデータパスの状態;アプリケーション選択;スケルチCMIS
保護機能とベンダー機能パスワード、書き込み保護領域、保存コマンド、ベンダーアンロック、認証署名書き込み保護の種類
CDB/ファームウェア更新CMIS モジュールでは、新しいファームウェアイメージを受信し書き込むファームウェアバージョンのバイト

典型的な部品:低コストの SFP/SFP+ では、数 kB のフラッシュを備えた8ビット MCU(8051クラス)。100G 以上や CMIS モジュールでは32ビットの Cortex-M クラス。一部のベンダーは、ADC、DAC、2線スレーブを統合した専用のトランシーバーコントローラー ASIC を使用します。

メモリを構築する2つの方法

設計マップの保存方法プログラミングへの影響
A0h に独立した EEPROM(例:AT24C02クラス)、A2h に MCUA0h の識別情報は、ホストとプログラマーが直接やり取りする実物のシリアル EEPROM。MCU は診断機能のみを担当A0h への書き込みは通常の EEPROM 書き込み — t_WR とページサイズを守る必要がある。ハードウェアの WP ピンがそれを阻止することがある(書き込み保護の種類1–3
MCU エミュレーションマップMCU がすべての2線リクエストに RAM から応答し、変更を内部の flash/EEPROM に反映する(反映しないこともある)書き込みはファームウェアが決めるところへ行く:受理される、無視される、パスワードで制限される、保存コマンドの後にのみ保存される、あるいは次回起動時にファームウェア自身のコピーで上書きされる(種類4–5
ハイブリッドベンダーブロックには EEPROM、ページとパスワードには MCUバイト範囲ごとにルールが異なる

エミュレーションマップは、ベンチ上のほとんどの謎を説明します。ファームウェアが実装していないページからの FFh、「成功」したのに元に戻ってしまう書き込み、ある範囲では読み取り専用なのに次の範囲では自由に書き込めるバイト、MCU がサンプリングでビジー状態のときに発生するクロックストレッチです(EEPROM の読み書きエラー)。

起動と t_init ウィンドウ

電源投入時、MCU は不揮発性ストレージから校正値と識別情報を読み込み、ADC を起動し、APC を目標値まで実行してから、ようやく2線スレーブを有効化し、データ未準備状態を解除します。これが、仕様がホストに応答を期待させるまでに許容する300 ms(SFP)から2 s(QSFP/CMIS)の時間であり、挿入直後の読み取りが不正な値を返す理由です(ホストが行うこと)。

校正はここに存在する

生の ADC カウント値は、工場が試験ステーションで測定した定数がなければ意味を持ちません。モニター PD 電流対実際の送出パワー、受信器の光電流対モジュールの波長での入力パワー、サーミスターカーブ、バイアス DAC のスケールです。内部校正モジュールでは、ファームウェアがこれらを適用して物理単位で報告します。外部校正モジュールでは、定数が A2h 56–91 に書き込まれ、ホスト側で適用します(校正)。一部のファームウェアがこれらの定数を保持しているベンダー領域を上書きすると、DDM が異常な値になったり、APC ループが機能しなくなったりします — 不用意な書き込みがモジュールを「文鎮化」させる典型的な原因です(製造と試験)。

保護機能の実装方法

仕組み実装方法ベンチでの見え方
パスワードファームウェアが、パスワード領域(SFP A2h 123–126、QSFP 123–126、CMIS 122–125)に書き込まれた4バイトを保存された値と比較する。セッション中の書き込みをアンロックする正しい値が入力されるまで WRITE FAILPasswords
書き込み保護領域ファームウェアが、読み取り専用とみなす範囲(チェックサム、しきい値、校正値、ベンダー領域)への書き込みを無視する読み戻すとバイトは変化しておらず、エラーも出ない
独立した EEPROM のハードウェア WP ピンモジュール内部でピンがハイに固定されているか、MCU が駆動するプログラマーボード側で駆動する必要がある
保存コマンド書き込みはまず RAM に入る。ベンダー固有のシーケンスがそれを flash に確定するシーケンスを送らない限り、電源再投入後に元に戻る
ファームウェアミラー起動時に、ファームウェアが自身のイメージからマップを書き直す電源を入れ直すたびに変更が消える — イメージを変更できるのはベンダーのツールだけ
認証ファームウェアが署名(シリアル番号、ベンダーデータ、秘密鍵のハッシュ)を計算してベンダーバイトに書き込み、ホストが検証する識別情報を編集してもチェックサムは通るが、ホストには拒否される — ベンダーロック

それぞれの種類の見分け方とプログラム方法について:書き込み保護の種類EEPROM の再コーディング

ファームウェアの更新

CMIS モジュールは、CDB コマンド(ダウンロード開始、ブロック書き込み、完了、実行、コミット)を通じて2線バス経由でファームウェアを受信できます。更新に失敗した場合に備えて、多くの場合2つのイメージバンクを持ちます。SFF-8472/8636 モジュールには標準的な仕組みがなく、ベンダーはベンダーバイトを通じた独自のシーケンスを使用します。ファームウェアの修正は、ベンダーが CMIS の相互運用性の問題を解決する手段であり(CMIS の問題)、ファームウェアバージョンのバイト(CMIS の下位ページ39–40、ページ01h 128–129)は識別情報とあわせて記録する価値があります。

コントローラーの故障モード

症状考えられる原因
バス上でモジュールが認識されない。光学系自体は正常MCU が起動していない:ファームウェアの破損、瞬時電圧低下、水晶発振子の損傷
DDM 値が固まる、または異常な値になるADC または校正値の破損;ファームウェアのハング
APC が保持しているはずなのに Tx パワーが変動するモニター PD または ADC の故障、APC が無効化されている
ランダムな NACK、読み取りの遅延MCU の過負荷(サンプリング中)、高速なプログラマーがクロックストレッチの限界を超えている
動作はするが、書き込みがすべて元に戻る設計上のファームウェアミラー — 故障ではない
書き込み後にモジュールが動作しなくなるファームウェアの設定領域または校正領域が上書きされた

CodingBox では

CodingBox は、ファームウェアが提示するとおりにモジュールを扱います。マップの種類を検出し、保存コマンド式やミラー式の設計に対しては既知のパスワードとプログラミングスクリプトを適用し、チェックサムを再計算し、書き込みのたびにバックアップを保持し、コントローラーの反応が思わしくない場合には code database から復元できるようにします。EEPROM editor は、仕様が読み取り専用またはベンダー固有と定めている範囲に印を付けるため、ファームウェアの私的領域に書き込もうとしていることが分かります。


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。