まず、下記簡単な経緯になります。
CS+ for CA, CX (V4.04.00)にて、安全機能のひとつのCRCを実装したく調査・実験を繰り返しておりました。
CRC計算には、ルネサス様から提供されているセルフテストライブラリ(Ver1.30)を使用しております。
( https://www.renesas.com/jp/ja/software/D6003884.html )
その中で、CRC演算を下図のように設定しているのですが、肝心の期待値をうまく参照することができずエラーとなりました。
期待値は【アドレス0x0FFFCに2byte】で、【コンパイル/HEX生成時に計算・格納される】という認識でしたが、
ダミーデータを付加して数十パターンほど試しましたが、当該アドレスの値はポインタ参照しても'0x0000'のままでした。
例:アドレス0x0FFFCの2byteを参照したいとき、【 *(unsigned short *)0x0FFFC 】として参照しています。
これまでにもCRC演算設定に関してはご質問されている方がいたため、自身で検索・対応できる範囲は参考にしてきました。(オンチップデバッグ無効など)
ここ数日はコードデータそのものを漁っていたのですが、ふとアドレス0x0FE20に、ライブラリ処理より算出されるCRC計算値と同じ値があることを見つけました。
(こちらも数十パターンで確認済みです。)
さて、前置きが長くなりましたが、下記3点について何卒ご教示ください。
① アドレス0x0FE20の値は、想定している期待値で間違いないのか?もしくは別モノか?
② アドレスのポインタ参照時に、そもそも勘違い/誤りがないか?(オフセットのようなものが働く?)
③ CS+設定時およびライブラリ利用時に、気を付けて設定すべき項目はあるか?
上記以外でも、懸念される項目等ありましたら併せてご教示いただけますと幸いです。
以上、よろしくお願い致します。
NoMay様 お世話になっております。 先に結論を申し上げますと、私の考え違いが発端でした。 無事に高速CRC処理の実装/確認ができました。。。ありがとうございました。 上記(1)の方法で、高速CRC演算のコードをフローチャートの通り実装しました。 (tetnoguchi様の投稿も一部参考にしております。http://japan.renesasrulz.com/cafe_rene/f/forum18/1605/rl78-g13-crc/7037#7037) あれこれ調べるうちに、自分に認知バイアスが掛かってあらぬ方向へ迷走していました。 振り返ってみると、躓いていたのはfar指定なし状態での期待値参照だったことになります。 CRC演算器あり/なしという選択肢が出たときには、今回の件が少しでも生きてくるのではないかと思います。 最後に、重ねて厚く御礼申し上げます。 これにて一旦クローズとさせていただきます。