現在、RXマイコンを使用して、ブートローダ機能を構築に取り組んでいます。使用するマイコンは、「RX66T」になります。「Renesas Starter Kit+ for RX66T」評価ボードを使用しています。開発環境は「e2studio」です。
前回、ブートローダに、アプリケーション領域に書き込み時に計算したCRCチェックサム値と起動時に計算したCRCチェックサム値と比較を行い、アプリケーション領域のコードに誤りがないかチェックする機能を追加しました。
前回の内容は下記のサイトになります。
このチェック機能は、CRC演算器コンポーネントを使用して、機能を構築しました。CRCでどのように計算をしているか今回は考えてみようと思います。
CRCはCyclic Redundancy Checkの略称で、巡回冗長検査と呼びます。通信路上で起きるデータの誤り検出などに使用します。例えば、送信データをあらかじめ定めた生成多項式で除算したあまりを送信データに付加して送信します。この付加したデータがCRC符号です。受信側は同じ生成多項式で除算、あまりを比較することで、受信したデータに誤りがあるかどうか判断します。
「CRC-16」「CRC-16-CCITT」「CRC-32」など生成多項式の種類や長さで
さまざまな方式が見られます。今回は、「CRC-16」に着目したいと思います。