• 検索結果がありません。

CRC - メモリスキャナ付き巡回冗長検査

ドキュメント内 意外に簡単! (ページ 84-87)

グラウンドで、デバイス プログラム (フラッシュ) メモリ内の任意のセグメント(または全体)の CRCを計算できます。

アプリケーションに応じて、メモリスキャナは以下のいずれかの動作モードに設定できます。

• バーストモードは、最大速度でCRC計算を実行する必要がある時に使います 。 CRC実行中はスキャナが絶対的な優先権を持ち、CPUをストールする事で、

その他のタスクによるCPUの使用を防止します。これによりCRC計算は、ソフト ウェア実装のみの場合と比べて桁違いに高速に実行されます。

• コンカレント モードも高CRCスループットを目的に設計されていますが 、 CPUをストールさせず、CRCアクセスサイクルの合間に動作を継続させます。こ れによりCRC計算は高速で実行され、CPUは減速しながらも、低優先度のタス クをバックグラウンドで実行できます(割り込みへの応答等)。

• トリガモードは、CRC性能とCPU性能のを柔軟に取るように設計されています。

ユーザ設定可能なトリガ (例: タイマで定期的に生成)で、メモリスキャナを優先す るCPUサイクルの割合を定義します。

• ピークモードは最も穏やかなモードです。CPUが最高優先権を持ち、分岐命 令(ループ、割り込み等)の実行時と同様に、CPUがメモリ アクセスサイクルを使 用してない時のみ、CRCメモリスキャナがメモリ アクセスサイクルを使う事を許可 します。これにより、CRCの実行速度は実行アプリケーション コードに依存しま すが、CRCメモリスキャナはアプリケーションに対して完全に透過的です。

組み込み制御アプリケーションではしばしば割り込み応答に対して厳しいレイテンシと実 行が要求されるため、メモリスキャナ モジュールはもう1つのモード(割り込みモード)を 備えています。このモードでは、ISR実行中にスキャンを一時停止し、割り込みから復帰 後に再開できます。

アプリケーション

概要セクションで述べたように、CRCの使用はしばしば(シリアル)通信プロトコルと関連付 けられます。代表例はLINバスまたは単線式通信を参照してください。セーフティ クリ ティカルなアプリケーションでは、業界標準によってCRCモジュールの使用が義務付け られている事がしばしばあり、ここでメモリスキャナの柔軟性が効果を発揮します。例えば 、 初めての全体メモリチェックを高速化するために、アプリケーション起動中にバースト モードを使うと良いでしょう。その後トリガまたはピークモードを使うと、定期的な再チェッ クの要件を満たしながら、CPUに負荷をかけません。

制限事項

CRCメモリスキャナの動作はウォッチドッグとは無関係です。このため、優先度の高い CRCモード(バーストまたはコンカレント)が選択されている場合、CPUから取られた(CRC が使った)サイクルがWDTの制限を超えないように注意する必要があります。

17ビットを超えるCRC多項式を必要とする通信プロトコルはサポートされません。幸い、

このような通信プロトコルは8ビットマイクロコントローラのアプリケーションではあまり使わ れません。

MCC が生成する API

MCCのCRC設定ウィンドウは非常に便利です。一般的なCRC多項式が事前に選択さ れ、テストボタンまで含まれているため、テスト入力に対する周辺モジュールの(シミュレー ション)動作と予測結果を指定した設定/多項式に対して検証できます。これらは全てアプ リケーションのコンパイルやインサーキット エミュレータの起動なしで実行できます。

APIには便利な関数がいくつか含まれており、CRCモジュールの読み込み、開始、停止、

結果のフェッチを実行できます。

ホームワーク

• Wikipediaで「Cyclic_redundancy_check」を調べてみましょう。

• CRCアルゴリズムと使用多項式に対して、いくつの用途が記載されてい るか調べてみましょう。それらのうち、本CRCモジュールで対応できる ものはいくつあるか調べてみましょう。

オンライン リソース

『AN1817 - クラスBアプリケーションで拡張コアPIC16F1XXXのハードウェアまたはソフト ウェアCRCを使う方法』

『AN1148 - Cyclic Redundancy Code (CRC)』

『AN1229 - PIC® MCUおよびdsPIC® DSC向けクラスB安全規格ソフトウェア ライブラ リ』

ドキュメント内 意外に簡単! (ページ 84-87)