カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810500
FAQカテゴリ(大) リンカ
最終更新日 2013-12-14

質問内容

TN64424: STM32を使用したCRC32演算(v.5.50 以降)

回答内容

○背景
STマイクロエレクトロニクス社のSTM32はハードウェアのCRC32演算器を搭載しているので、これを使用すると、CRC演算のための余分なコードがいらなくなります。

○問題点
バージョン5.50以前のEWARMでは、この演算器の生成するCRCコードと同じコードを生成することができません。"

○解決策(EWARM バージョン 6.40以降)
プロジェクトメニュー > オプション> リンカ > チェックサム タブに、
STM32デバイスのCRC演算器が生成するCRC32コードと同じCRC32コードを生成するオプションが追加されました。

このオプションは、
    サイズ: 4 バイト
    アラインメント: 4
    アルゴリズム: CRC32(0x4C11DB7)
    補数: そのまま使用
    ビット順: MSBが先頭
    [ ]語句内でバイトオーダを逆順にする[チェックしない]
    初期値: 0xFFFFFFFF
    [ ]入力として使用 [チェックしない]
    チェックサム単位サイズ: 32-bit

○STM32F10xのサンプル
このサンプルでは、ソースコード、リンカ設定ファイルと対応するリンカのオプションを設定するためのダイヤログを含みます。"
•  ソースコード (抜粋)
• リンカ設定ファイル (抜粋)
• リンカオブション・ダイヤログ
右のリンクを参照してください。

• サンプルプロジェクト
下のリンクを参照してください。

古いEWARMのバージョンでのソリューション
バージョン 6.10~6.30でのオプション

このオプションは、
    サイズ: 4 バイト
    アラインメント: 4
    アルゴリズム: CRC32(0x4C11DB7)
    補数: そのまま使用
    ビット順: MSBが先頭
    [* ]語句内でバイトオーダを逆順にしない[チェックする]
    初期値: 0xFFFFFFFF
    [ ]入力として使用 [チェックしない]

• リンカオブション・ダイヤログ
下のリンクを参照してください。

• サンプルプロジェクト
下のリンクを参照してください。

バージョン 5.50
バージョン 5.50のielftoolは、STM32デバイスが生成するCRC32コードと同じコードを生成することができます。この機能は、ドキュメント化されていないので、コマンドラインオプションからのみ利用することができます。"

コマンドラインは、
プロジェクトメニュー > オプション> ビルドアクション > ビルドアクション設定 タブの、
ポストビルドコマンドラインに次の行を追加します。

...以下の文字列は、使用するプロジェクトに合わせて設定する必要があります。

__checksum
チェックサム値を格納する場所の名前

__checksum_begin
チェックサムの計算を行う範囲の先頭のアドレス

__checksum_end
チェックサムの計算を行う範囲の最終のアドレス

コマンドラインの初めは、全てのオプションをリセットして(変更せずに)結合する必要があります。
プロジェクトメニュー > オプション > リンカ > チェックサムタブ

参考資料URL