やっとデバイスが手に入るようになったのでPSoC5を使いはじめました。
新しいマイコンを使い始めるときには、開発キットを買う、基板を起こすなどするところですが、現在購入できるTQFP100のチップはPSoC3と完全なピン互換があるので、使っていたPSoC3をはがしてPSoC5に貼りかえることで基板と周辺回路を再利用しています。
ハードウエアはPSoC3と完全に互換性があるのですが、ソフトウエアはそうもいかないようです。
以下にプロジェクトファイルを移植する過程で気になった点を書いておきます。
詳しく調べていないものがほとんどですが、多くはPSoC3で使うコンパイラKeilとPSoC5で使うコンパイラGCCの違いによるものだと思います。
PSoC3をはがして貼りかえたPSoC5 |
新しいマイコンを使い始めるときには、開発キットを買う、基板を起こすなどするところですが、現在購入できるTQFP100のチップはPSoC3と完全なピン互換があるので、使っていたPSoC3をはがしてPSoC5に貼りかえることで基板と周辺回路を再利用しています。
ハードウエアはPSoC3と完全に互換性があるのですが、ソフトウエアはそうもいかないようです。
以下にプロジェクトファイルを移植する過程で気になった点を書いておきます。
詳しく調べていないものがほとんどですが、多くはPSoC3で使うコンパイラKeilとPSoC5で使うコンパイラGCCの違いによるものだと思います。
- 再帰が使えるようになった。たとえば、ChanさんのところにあるFatFs用サンプルプロジェクトを移植しやすくなるなど、プログラムが書きやすくなった。
- Keilがビッグエンディアン、GCCがリトルエンディアンを採用しているので、加速度センサの読み出しなど一部のコードに修正が必要になった。
- Keilでは構造体のパディングは0だったのだが、GCCでは2バイト境界に合わせるように(?)パディングされる。
- math.hで定義される関数がそのままでは使えない。コンパイラオプションを変更することで対応できるはず(?)。
- PSoC3には存在するがPSoC5には存在しないレジスタがある。低電圧リセット関係がその一例。
また、PSoC5のリリースに合わせて(?)統合開発環境PSoC Creatorが2.0にメジャーアップデートされ、一部のユーザーモジュールには変更もあったようです。
- DeltaSigmaADCがデジタル・アナログクロックの両方を要求するようになった。以前のバージョンでは、アナログクロックのみだったので、デジタルクロックを使い切っているプロジェクトの移植には注意が必要。
以上が気がついた点です。
エンディアンとパディングの違いは計器のプログラムに大きな影響を与えるため、かなりの部分のコードに修正を加えないといけないことがわかりました。
せっかくの機会なので、構造体のパディングに依存しないようにコードを書き換えるなど、移植性も考えてプログラムに修正を加えていくつもりです。
0 件のコメント:
コメントを投稿