コード生成の不具合とリリース・ノート一読の薦め

ソフトにバグは付き物です。CubeSuite+のコード生成にも、このバグがあります。自作ソフトのバグと、純正ツールが生成したバグ、両方に対処する必要があるのは残念ですが、やむを得ません。今回は、2013年2月15日にリリースされたコード生成バグで、RL78/G13とG14に関するものを2点紹介します。

CA78K0Rの更新履歴
CA78K0Rの更新履歴

ここ1年のCubeSuite+、CA78K0Rの更新履歴を診ると、2~3か月でバージョンアップされていることが判ります。CA78K0Rは、純正ビルド・ツールで、コード生成もこのツール出力です。各版フォルダ内にDocフォルダがあり、この中にリリース・ノートがあります。

リリース・ノートには、変更点と注意事項があり、使用前に必ず読むようにありますが、初心者は読まないでしょう。ツール更新が自動化され、更新完了すると、なるべく早く開発を継続したいからです。そうすると、自作バグと純正ツールバグの切り分けができず、ハマッテしまいます。経験者は、このハマッタ経験があるから、ツール更新時は、落ち着いてリリース・ノートを読みます。

RL78/G13とG14の注意点:スタートアップ・ルーチン

スタートアップルーチンの注意事項
スタートアップルーチンの注意事項

初心~中級者は、スタック領域サイズを変更することはないと思います、が、念のため読んでおきましょう。コード生成が出力するr_systeminit.cのhdwinit関数は、main関数前に処理されるので、デバッガダウンロード時、デフォルト設定なら自動実行されます。また、r_systeminit.cは、コード生成に問題がない時は、全く気にしないファイルです。従って、かなり見つけにくいバグになるでしょう。この場合には、デバッガのデフォルト設定(指定シンボル:_main)を変更し、コード生成出力に、回避策を手動で追加する必要があります。

RL78/G14のタイマRD/RJの注意点:

RL78/G14の特徴に、高速オンチップオシレータ64MHz対応のタイマRD PWMモードがあります。この特徴を使ったタイマRDの、コード生成出力のデューティ比が、正しくない不具合があります。また、ポート割当てとの競合を示す!マークも正しく表示されません。

タイマRJのパルス周期計測モード使用時、コード生成の計測計算に、誤りがあります

これらの不具合には、リリース・ノート記載の回避策に沿って対処します。根本的には、次回2013年4月頃予定のCubeSuite+次期バージョンで改善されるそうです。しかし万一、これらが原因でハマッテしまった場合、切り分けや、抜け出すのが困難であることが判るでしょう。ツール更新時は、リリース・ノート一読をお薦めする理由です。