HOME > 技術談話 > PIC microcontroller > 開発環境による修正
弊社ホームページで紹介しているサンプルプログラムの多くが、HI-TECH C社製 C コンパイラを利用しています。 特に断りのない場合 v9.70 で作成されていますが、コンパイラ側のバージョンアップに伴い不都合が生じています。 対象となる C コンパイラは v9.81(2011/01/13) 以降のバージョンです。 変更の詳細はリリースノートに記載されていますが、直接影響を受ける項目としてSFRのシンボル名が一部変更になりました(Chapter4)。一例になりますが、PIC12F683 の GPIO レジスタの bit0 の宣言手法は、 旧バージョン:GP0 新バージョン:GPIO0 という感じに変更されています。変更されないシンボルもありますが、混在状態です。 今回のバージョンアップに伴うユーザ側の影響ですが、一番大きいのはバージョンアップ後のコンパイラを利用した場合、一部のサンプルプログラムでコンパイルエラーが発生することでしょうか。 |
▲ |
対処方法にはリリースノートに記載されている方法を含めて3種あります。 方法1:プログラムで使用しているシンボルを1つづつ変更する(いわゆる力業)。 方法2:特別なマクロ「_LEGACY_HEADERS」をプロジェクト設定で追記する。 方法3:特別なマクロ「_LEGACY_HEADERS」を htc.h をインクルードする前でプログラムに記述する。 |
項目 | 方法1 | 方法2 | 方法3 | |
プログラムの修正 | 大 | 不要 | 小 | |
作業時間 | 大 | 微少 | 小 | |
旧コンパイラバージョンへの復帰 | 不可 | 可能 | 可能 | |
プロジェクトファイル修正 | 不要 | 必要 | 不要 |
旧コンパイラバージョンへの復帰とは、v9.81 から v9.70 へ戻すことです。頻度は少ないと思いますが念のため。 どの方法でもコンパイルエラーを回避することができますが、一番無難な方法は「方法2」になると思います。それ以外の方法ではプログラムを修正しなければならず、サンプルプログラムの再現性に乏しくなります。 今回はこの方法2による対処方法について解説します。 |
▲ |
バージョン v9.81 以降のコンパイラで既存プログラムを修正無しでコンパイルする方法について解説します。 |
(1)プロジェクトファイルの読み込み まずはプロジェクトファイルを読み込みます。これは従来通りです。 |
(2)プロジェクト設定を開く Project プルダウンメニューから Build Options、Project を選択します。 |
(3)Build Option サブウィンドウが開くので、Complier タブをクリックします。 |
(4)マクロの追記 Define macros の箇所に _LEGACY_HEADERS を記述して Add ボタンを押下します。 |
(5)作業終了 Add ボタンをクリックすると追加されたシンボルが登録されます。そして OK ボタンをクリックして終了です。 この後 リビルド することで新しい Hex ファイルが生成されます。 プロジェクトを保存することで次回以降の操作は不要です。 |
▲ |
(1)既存シンボルの格納場所 標準インストールであれば以下のフォルダに標準ヘッダファイルが格納されています。 C:\Program Files\HI-TECH Software\PICC\9.81\include\legacy このフォルダに「legacy」フォルダがあり、既存シンボルが格納されています。 pic.h あるいは htc.h をプログラムの中でインクルードすると、お互いのファイルがお互いをインクルードします。 そして、pic.h の中で chipselect.h がインクルードされ、この中で「_LEGACY_HEADERS」を参照し、最終的に参照すべきデバイスファイルを決定しています。 |
(2)新旧シンボルの混在 シンボルの混在は許されません。どちらか一方が選択されます。 既存のサンプルプログラムを修正し、新たなレジスタを指定する場合はご注意願います。 都合が良いのは旧シンボルを利用することでしょうか? 旧シンボルを利用し、プロジェクト設定で「_LEGACY_HEADERS」を指定する。この方法であればコンパイラのバージョンを問わず利用する事ができます。少なくとも旧コンパイラでは、このマクロ(シンボル)を利用していません。 しかし、コンパイラがバージョンアップするというのはシンボルの変更だけでなく、コンパイラの不具合も修正されているので、あまり古いバージョンに固執するのも問題があります。 |
(3)弊社における今後の対応 既に公開済みのサンプルプログラムについては不具合を除き修正を行いません。 誠に申し訳ありませんが、プロジェクト設定にマクロ(シンボル)を追加する方法で対応願います。 今後公開する新規サンプルプログラムについては新しいシンボルでプログラミングを行います。 解説事項として開発環境のバージョンが併記されます。 積極的なコンパイラのバージョンアップを推奨することは難しいのですが、少なくとも今後作成されるプログラムについては新しいコンパイラに対応するようにします。 いずれ過去のシンボルも無くなると思いますし。 |
▲ |