スパイス  組み込み制御装置の受注製作

自社標準仕様の製作
平成27年10月30日

 汎用の高速シリアル通信機能(14)  C++環境の構築

 C++への移行を考えたとき、最初にすることはC++の開発環境を準備することです。
既にXC32を導入しているので準備はできていると思ったのは私の誤りでした。XC32をインストールしただけではCコンパイラは動作するのですが、C++コンパイラは動作しません。
XC32でC++をコンパイルするためにはマイクロチップ社の下記HPに登録して、認証ファイルを送ってもらう必要があります。
http://www.microchip.com/xcdemo/xcpluspromo.aspx

 送られてきたメールの手順に従って認証ファイルを指定フォルダにコピーし、コマンドを実行することでC++コンパイラが動作するようになります。
 MPLAB XがCコンパイラとC++コンパイラのどちらを使うかはソースプログラムの拡張子で判断されます。拡張子が"c"ならCコンパイラが使われます。C++コンパイラを使うには拡張子を"cpp"にします。たとえプログラムの文法がC言語であっても、C++コンパイラでコンパイルするためには拡張子を"cpp"に変更することになります。
(H27/11/06訂正)
 上記の記述は誤りです。訂正します。
MPLAB Xが使用するコンパイラを選択する基準はプロジェクト内に拡張子.cppが含まれている場合は全てC++コンパイラを使用します。プロジェクト中に拡張子.cのCソースが含まれていてもかまいません。
(訂正ここまで)

他のC++コンパイラでは拡張子"cc"でも良いようですがXC32では駄目なようです。
 ちなみにヘッダファイルの拡張子はC, C++共に"h"を使うようです。

 コンパイル環境が整えば、最初はお決まりの"Hallo World!"を出力するプログラムをコンパイルして動作確認します。
組み込み環境では標準出力が無いのですが、MPLAB XのUSART IO機能を使用すれば簡単に動作確認できます。
USART IO機能の使い方は前回簡単に説明してあります。
 まず動作確認のために以下のプログラムを入力しコンパイルします。ソースプログラムの拡張子が"cpp"であることが重要です。
この画面ではコンパイル後実行した結果を示しています。
画面右下のOutputタグ内のUART1Outputウィンドウに"hello world"が出力されていることを確認できます。
なおC++言語の説明は他のHPなどを参考にしてください。ここでの内容説明は省略します。


 次の段階では簡単なドライバプログラムを書いてみます。C++はC言語を含んでいるのでC言語のレベルでプログラムするなら従来と変わりませんが、C++特有となるクラスを使った場合には、プログラム内容が大幅に変化します。
また、C++言語特有の制限や仕様から直感的には理解し難い記述を行う必要もあり、最初は戸惑うばかりです。

 とりあえず組み込み装置を前提として、タイマ割り込みを例にクラスを使ったドライバプログラムを書いてみました。
PIC32によるC++のプログラム例として参考になると思いますので、次回から数回に分けて内容を記述していきます。

目次へ  前へ  次へ