CubeSuite+ Windows8.1 Pro動作確認(最終報告)

トラブル続きであったWindows8.1 Pro上でのCubeSuite+動作が正常に戻りました。

ウイルス誤検出は、定義ファイルが更新されたお蔭か、または、プログラム自身が更新されたかは不明ですが、問題なく動作しております。やはり、OS更新は、発売後2~3日待ってから更新した方がリスクが少ないようです。

これとは関係しませんが、Windows8 Proマシンで1台のみ8.1更新ができない64ビット自作機があります。調べてみると同じようなマシンが結構あるようです。もちろん、Microsoft記載のトラブルシューティングは全て試しましたが、結果はNGでした。

クライアントデスクトップ環境は、Windows7で完成の域に達したと感じていますが、8更新以降、環境劣化していると思うのは私だけでしょうか? ハイブリッドOSで二兎を追うのは判りますが、モダンUI環境だけでなく、デスクトップ環境もアップグレードしてくれないと、新OS導入を控える人が多くなること、圧倒的に多いWindowsデスクトップアプリ資産の今後が多少不安です。

コード生成ひな型出力とユーザ追加ソースファイルの分離メリット

CubeSuite+のコード生成は、マイコン周辺機能を制御する「デバイス・ドライバ」と「ひな型ソース」を出力します。ユーザは、このデバイス・ドライバをAPI関数としてコールする処理をひな型へ追加すれば、所望動作プログラムが完成します。今回は、このひな型とユーザが追加する処理を分離すると、マイコン依存性が少なくなり、移植性が高まることを示します。

コード生成の「端子割当て設定」は、はじめに必ず設定する必要があることは、以前示しました。そこで、この端子割当てのみを設定し、後は何もせずにコード生成(G)をクリックすると、10個のファイルが生成されます(「r_」は、ルネサス、「r_cg_」は、コード生成が作成したことを意味すると思います)。

コード生成出力ファイル
コード生成出力ファイル

1~4がひな型、5~10がデバイス・ドライバです。クロック発生回路とウオッチドック・タイマは、デフォルトで利用する周辺回路です。ユーザが使う周辺回路をコード生成のGUIで設定すれば、それに応じてr_cg_周辺回路.c、r_cd_周辺回路_user.c、r_cg_周辺回路.hの3ファイルがこれらに追加されます。

r_systeminit.cは、周辺回路の初期設定が生成されていて、r_main.cの実行前にスタートアップで処理されます。r_cg_macrodrive.hは、システム定義のマクロで、r_cg_userdefine.hは、中身なしのスケルトンです。必要に応じて、ここにユーザ定義を追加すれば、全ファイルに自動的にインクルードされます。

起動処理のr_main.c中身を示します。R_MAIN_UserInit()でメイン無限ループ実行前のユーザ追加処理があれば追記し、なければそのまま割込み許可EI()した後、メイン無限ループに入ります。通常は、この無限ループにユーザが処理を書き加えます。

何らかの都合で、コード再生成した場合にも、/* Start user…*/と/* End user…*/の間に書き加えた処理は、そのままコード再生成出力ファイルにマージされますので、追加分は、保持されます。これが、コード生成の一般的な使い方です。この場合は、ユーザ追加処理は、コード生成ファイル内に入ります。

r_main.cの中身
r_main.cの中身

提案は、このユーザ追加処理とコード生成のひな型を分離し、別ファイルにすることです。メイン無限ループにuser_main()を付け加えた例で説明します。user_main();は、別ファイルmain.c内に作成します(「r_」が無いので自作ファイルであることが判ります)。

このmain.cファイル内のuser_main()でコード生成出力のAPI関数を使うので、使用するr_cg_周辺回路.hをインクルードする必要がありますが、user_main()は、多数のAPI関数のコールを使う単純なプログラムとなります。API関数名は、R_CGC_Set_CRCOn ();などのように長い記述になりますが、その分、ソース可読性は向上します。また、RL78/G13とRL78/G14で周辺回路のハードが異なるものがあっても、API関数名は同じものがコード生成されるので、制御するユーザ側は、同じものが使えます。

このように、コード生成出力のひな型とユーザ追加処理を分離すると、移植性が良くなります。最近のマイコン統合開発環境は、CubeSuite+のようにAPI関数を自動生成するものが増えてきました。この場合も、API関数名は、同じか、または近い意味のものが生成されますので、ユーザが追加した処理ファイルがそのまま使える可能性が高まります。API関数を使う側と、API関数を生成する側を分離すると、マイコンの製品依存性も少なることが判ります。

 

販売中のG1xテンプレートは、この考え方で開発しました。RL78/G13とG14で共通に使えます。他シリーズは試していませんが、使えると思います。また、他社製品、例えばARM Cortex-Mマイコンなどにも適用してみたいと考えています。

CubeSuite+ Windows8.1 Proで動作確認(続報)

先に報告した動作確認の続報です。

21日より突然、コンパイラがウイルスに感染しているとして、ウイルス対策プログラム(Avast:2014.9.0.2006)が動作し、ビルドができなくなりました。Avastチェストから削除プログラムを元に戻しても、一度チェストへ入れられたコンパイラは、残念ながら動作しません。

コンパイラ動作停止
コンパイラ動作停止

Windows8.1は、Windows8よりも、余計なセキュリティが強化されていますので、これかと思い、Windows8 Proへリカバリしても、同様です。

仕方がないので、一度、CubeSuite+を全てアンインストールし、再度インストールし、Avastを停止させて起動したところ正常にビルドできました(コンパイラのみの再インストールでは、解決しません)。原因は、Avast側にあると思いますが、同じようなことが他のセキュリティソフトでも起こる可能性がありますので、注意してください。

CubeSuite+ Windows 8.1 Proで動作確認

17日20時より配布されたWindows 8.1 Pro 32/64ビット版でのCubeSuite+の動作、E1によるデバッグ動作を確認しましたので、速報します。

Windows 8 から 8.1への無償アップグレードは、簡単でした。CubeSuite+やE1もあっけないほど問題なく動作します。個人的には、デスクトップ環境は、Windows 7時代で完成の域に達したと思います。チャームやモダンUIなんか、気分転換に使えるぐらいですものね。