概 要
ブートローダの動作モード、バイナリデータのフォーマット、およびブートローダをユーザのハードウェアに適合させるためのインタフェースについて説明します。
・ フラッシュインターフェイス(セクション)
・ システムタイマへのインタフェース(セクション)
・ 永続的に設定できない場合のNodeIDインターフェイス(セクション)
・ アプリケーションからブートローダーを再入力するためのインターフェース(セクション)
・ CANドライバが選択されていない場合のCANバスへのインタフェース
CANコントローラ(セクション)
・ デバッグ出力へのインタフェース(セクション)
・ 割り込みベクタテーブルインタフェース(セクション)
ユーザハードウェアへのインタフェースはテンプレートとして実装されています。
データ伝送の設計
実装はCANopen標準CiA DS-302に基づいています。この規格では、プログラムのダウンロードに使用できるオブジェクトエントリを定義しています。ブートローダは、データ転送にサービスデータオブジェクト(SDO)を使用します。
ブートローダのアプリケーションに応じて、ロードされたデータを不揮発性フラッシュメモリにプログラムすることができます。
CANopen SDO転送を使用してデータを送信する利点は、CANopenツールを使用してアプリケーションをプログラミングできることです。このためにCANopenノードのオブジェクトエントリをマップするEDSファイルが必要です。データはバイナリ形式で送信され、開発環境に応じてこの形式(たとえばHEX→BIN)に変換する必要があります。
ブートローダは完全なCANopenアプリケーションであるため、オブジェクトディレクトリがあります。ただし、このオブジェクトディレクトリは、ブートローダが実行されている間だけ表示されます。
ブートローダは、ターゲット関連部分と通信サービスをパッケージ化する部分で構成されています。ターゲット固有の部分には、フラッシュ、CANコントローラ、およびアプリケーションへのインタフェースが含まれています。調整はユーザーがここで行う必要があります。データ転送にはCiA DS-301に準拠したSDO転送が使用されます。この伝送サービスは、セグメント化転送やブロック転送などのプロトコルをサポートします。このサービスは実行するCODEの数が少なくて済むため、デフォルトの設定はセグメント化された転送です。しかしながら、セグメント毎のデータの確認応答シーケンスのため、送信時間はブロック転送に比べてわずかに長くなることがあります。