トップページ     電子回路のページのトップ

 開発環境をバージョンアップした時のエラー

 以前、C18をバージョンアップしたとき古いプロジェクトがビルド出来なかったので、「C18のバージョン」という ページをアップしました。
 それから1年半程経過し、再度バージョンアップしましたが、やはり、一発ではビルド出来ませんでした。
 そこで今回、再度、表記のタイトルで対処法をまとめてみました。
 内容的には「C18のバージョン」と重複する部分が多いのですが、新しく発生した 問題も追加してあります。
 自分の為のメモの意味合いが強いのですが、同様のトラブルで悩んでいる人の参考になるように文章をまとめてみました。
 今回、MPLABが Ver8.36 から 8.63 へ、C18が Ver3.31 から Ver3.37 へのバージョンアップでしたが、これ以外の 場合では、ここに書いた内容とは若干、異なるかもしれません。


 出来れば同じ開発環境を使い続けたいが

 開発環境に慣れてくると同じバージョンを長く使い続けたいと思うのですが、そのうち、バージョンアップの必要性 に迫られます。
 新しいチップに対応していないとか、新しいツールに対応していないとかの理由に因ります。
 PICの場合、頻繁に新しいチップが出てくるので、開発環境も頻繁にバージョンアップされます。
 新しい開発環境で新しいプロジェクトを作成する場合は、それ程、問題は無いですが、新しい開発環境で古いプロジェクトを ビルドすると、かなりの確率でエラーが発生します。
 製品のメンテナンス等で、トラブルを避けたい場合は、古い環境を保存しておくのも選択肢の一つです。
 趣味では複数の環境を使い分けるのは面倒ですので、新しい環境に更新してしまうことが多いと思います。


 エラーの原因

 プロジェクトは旧バージョンでは問題無くビルドされたものであるとします。
 新しい環境に換えた場合、私の経験では、エラーの殆どが以下の内容です。
 多くの場合、新しい環境で古いプロジェクトを、そのまま読んだ事が原因になっています。
 再設定して上書きすれば良いかと思いますが、それではエラーが取れない場合があります。

・ 特定のファイルが読み込めない。
 プロジェクトウインドウを見ると、読み込めないファイルに(file not found)の印が付いています。
 ソースファイルならファイルのコピーミスですが、多くの場合、リンクスクリプトファイルが読み込めていません。
 リンクスクリプトファイルの置き場所のパスやフォルダ名が微妙に、又は大きく変わっているのが原因です。
 現在は....\bin\LKR に置かれていますが、以前は一つ上の階層にありました。
 さらに、最近では全体の置き場所が C:\MCC18\ から C:\Program Files\Microchip\mplabc18\ と大きく変わっています。
 ファイル名自体も微妙に変わっています。
 以前は、一つのチップに2個〜4個のスクリプトファイルがあり、目的にあったものを選択するようになっていましたが、 現在は一つにまとめられています。

・ ヘッダーファイルが見つからない
 インクルード( h )フォルダにパスが通っていません。
 パスが設定されていないか、旧プロジェクトを読み込んだ時の誤ったパスが反映されている可能性があります。

・ コンパイル後に特定のモジュールがリンク出来ない
 ライブラリー( lib )フォルダにパスが通っていません。

・ コンパイラやリンカーが動作しない。
 古いプロジェクトファイルを新しい環境で読み込んだ時、起こる場合があります。
 古いプロジェクトにはビルド条件が書き込まれているようですが、新しい環境で、上書きしようとしても、うまく行かない ようです。
 結果的に以前のパスで指定した場所にコンパイラやリンカーの実行ファイルが無いので止まってしまうと思います。
 バージョンが近ければ旧プロジェクトが、そのまま使える場合もあるかもしれませんが、使えないと思った方が間違いが ありません。


 エラーを起こさない為に

 以下の手順で作業を進めます。
・開発環境をインストールする場合、旧バージョンを削除してから新バージョンをインストールします。
・MPLAB、C18の順でインストールします。
・作業フォルダを作成して、旧プロジェクトのファイル一式を置きます。
・ソースファイルと自作したヘッダファイルを残し、旧プロジェクトが生成したファイルを全て削除して おきます。
 (ポイントは古いプロジェクトファイルを、そのまま呼び出さないことです。)
・作業フォルダの位置に新規のプロジェクトを作成し、以前のソースファイルをプロジェクトに追加します。
 プロジェクト名は以前と同じでも、別の名前でも構いません。
 C18ではプロジェクト名とソースファイル名に関連性がありません。
 ただし、生成されるHexファイルの名前は、プロジェクト名と同じになります。
 MikroCのようにプロジェクトと同じ名前のソースファイルが必ず作成される環境では、別途、注意が必要です。
・リンクスクリプトファイルを新規に追加します。
・ヘッダファイルのパスを通します。
・ライブラリーモジュールのパスを通します。
・リンクスクリプトファイルのパスを通します。
 これでビルドすれば通るはずです。
 ビルド時にコンパイラやリンカーの実行ファイルのパスを選択するダイアログが出る場合があります。
 これは、以前、誤って古いプロジェクトを読んだりした場合、別のパスを記憶していて、どちらを使うか聞いているので、 正しい方を選択すれば先に進みます。


 パスの通し方(MPLAB Ver8.63, C18 Ver3.37 の例)

プロジェクメニュー

プロジェクトオプションダイアログ

 Project メニューから Build Options > Project の順にクリックし、Build Options ダイアログを出します。
 Directories タブを開きます。
 Show Directories for と記されたプルダウンメニューから Include Search Path を選択します。
 下のウインドウに正しいパスが表示されればOKですが、以前、誤って旧プロジェクトファイルを読み込んだ場合、ここに 旧プロジェクトのパスが表示されている場合があります。
 この時は古いパスを削除します。
 その後、新しいパスを入力します。
 最初からパスが何も表示されていない場合も同様に入力します。
 入力方法は、まずNEWボタンを押すと、ウインドウの入力枠の末尾に参照ボタンが出るので、目的のフォルダを 検索し、入力します。
 今回のバージョンでは C:\Program Files\Microchip\mplabc18\v3.37.01\h です。
 (実際には¥は逆スラッシュで表示されます。)
 同様に、プルダウンメニューから Library Search Path を選択し、パスを入力します。
 今回のバージョンでは C:\Program Files\Microchip\mplabc18\v3.37.01\lib です。
 最後にプルダウンメニューから Linker.Script Search Path を選択し、パスを入力します。
 今回のバージョンでは C:\Program Files\Microchip\mplabc18\v3.37.01\bin\LKR です。
 尚、リンカースクリプトは Project ウインドウでファイルを追加するときに一度、参照していますが、ここで、再度、 パスを通しておかないとダメです。
 一旦、ダイアログを閉じ、再度開いて、パスが正しく書き込まれているか確認します。
 正しく書き込まれていれば、ウインドウに選択したパスが表示されます。
 書き込んだつもりで書き込まれていないことが時々あります。


 コンフィギュレーションの値が替わっているのを発見

 上記の対処で、いくつかのプロジェクトはビルド出来ましたが、まだエラーになるプロジェクトがありました。
 コンフィギュレーションでCCP2の出力をRB3に出すかRC1に出すか選択する部分です。
 RB3に出す場合、#pragma config CCP2MX = PORTBE と入力したのですが、PORTBE という値が定義されていないようです。
 チップ毎のコンフィグを記したPDFファイル C18_Config_Settings_... を見ても PORTBE になっていいるし、旧バージョン ではビルド出来ていました。
 一瞬、コンパイラのバグかもしれないと思いましたが、念の為、最新のPDFファイルをダウンロードすることにしました。
 そこで、判ったことは、PDFファイルは廃止され、MPLABのヘルプメニューに組み込まれた という事実です。
 ヘルプを見ると、値が PORTBE から PORTB に変更されていました。
 一方、RC1に出力する場合は #pragma config CCP2MX = PORTC で以前と変わりません。
 PORTC と PORTB の方が判りやすいので変更後の方がスッキリしていますが、変更された以上、ソースファイルを修正するしか ありません。
 コンフィギュレーション設定マニュアルがヘルプファイルに組み込まれて便利になりましたが、MPLABのバージョンが 変わる度に修正されそうで怖いです。
 言語仕様が変わるとプロジェクトの再構築だけでは済まず、ソースファイルの修正が必要になってくるので、メンテナンスが 面倒です。
 たまたま見つかった上記の内容以外にも、変更点があるかもしれません。
 また、ここで書かれた内容は2011年2月時点の話で、今後も少しずつ変化していくと 思います。


 MPLABが終了してしまう

 この話は、よく聞きますし、私自身、経験しましたが、MPLAB7.6X以降で発生するそうです。
 ただし、MPLAB特有の問題ではありませんし、このページのタイトルとも関係はありません。
 症状はMPLABを起動すると、起動ロゴが表示されるだけで終了してしまうというものです。
 パソコンのユーザー名が日本語(倍角文字)で入力されている環境で発生します。
 ユーザー名とはWindowsのスタートボタンを押したとき左上に表示されるものです。
 MPLABに限らず、外国製のソフトウエアでトラブルが発生する可能性があります。
 パソコンのユーザー名が半角文字で入力されていれば問題は発生しません。
 ただし、ユーザー名だけを変更しても問題は解決しません。
 この件に関しては、解説しているサイトがいくつか有るので、詳細は、これらのサイトを検索してください。
 ここでは、倍角ユーザー名を半角ユーザー名に変更する、おおまかな手順を示します。
 以下の手順は、XP、SP3で実際に体験し、MPLABが起動する事を確認しています。

・ C18、MPLABは削除しておきます。
・ 新しい管理者権限のユーザーアカウントを半角文字のユーザー名で作成します。
・ ログオンしたアカウントで自分自身の操作は出来ないので、別途、ダミーの作業用アカウントを管理者権限で作成します。
・ 作業用アカウントでログオンして、元の倍角ユーザー名のアカウントのプロファイルを新規に作成した半角名のアカウント のプロファイルへコピーします。
・ 新しく作った半角ユーザー名のアカウントでログオンし、MPLAB、C18の順でインストールします。
・ 動作を確認して問題なければ、元の倍角アカウントと作業アカウントを削除します。

 アカウントの削除やプロファイルのコピーはコントロールパネル→ユーザーアカウント画面で行います。
 直接フォルダを操作してはいけません。
 それからコピー元とコピー先を逆にすると、今までの設定内容が全て消えてしまいます。
 若干、危険を伴うので、詳しく解説しているサイトを見てください。

 私はXPのパソコンを何台か所有していますが、内1台で、MPLABが起動しない問題に遭遇しました。
 実は、この問題を以前から認識していたのですが、購入したパソコンをセットアップするとき、うっかり日本語のユーザー名を 入力してしまいました。
 国産のパソコンではセットアップマニュアルで堂々と日本語のユーザー名を入れて解説している物が多いので、気楽に、機械的に 入力してしまった訳です。
 外国製のパソコンをセットアップしたときは、無意識のうちに半角のユーザー名を入れていました。
 尚、倍角のユーザー名が必ず問題を起こす訳では無いようです。
 試しに△山さんという人から借りたノートパソコンにMPLABをインストールしてみました。
 ユーザー名は”△山”になっているのにMPLABは問題なく、動作しました。
 ただし、クッキーのファイル名を見ると、多数のファイルが、皆、”△屍”と文字化けして異様な光景です。
 一見、ウイルスのいたずらでは無いかと疑ってしまいますが、これも、既知の事実として報告されていました。


トップページ  「電子回路」のトップ