ようやくと製作を始めたSAM3ボードですが、きょうはソフトの開発環境について書いておくことにします。これまではほとんどのプロジェクトをLinux上でGCCを使ってコンパイルしていました(実際にはXPをホストとするVMWareを使い、LinuxをゲストOSとして使用)。また、RTOSとしてはTOPPERS/JSPを使っており、昨年からSAM3Uで実験的にASPを使っています。今回のSAM7Sを使ったドッチーモジャケットも、最初は (VMWare上の)LinuxとTOPPERS/ASPで作っていたのですが、途中から開発環境をRowleyのCrossWorks for ARMに引っ越しています。
ちまたではembed/LPCXpressoやSTM32が開発環境を含めて提供されていることから人気ですが、ATMELを中心に使っており時々はLPCやSTM32等にも浮気するかもしれないという嗜好を持つわたしとしては、ベンダー・ニュートラルな環境の方が便利です。CrossWorksは基本的にはgccベースなのですが、ATMELを含む各社のARM7,ARM9,Cortex-M3のCPUサポートが含まれる開発環境となっており、個人向けにPersonal License($150)が用意されているのが魅力です。じつはすでに昨年末に購入してあったのですが、3月からようやくと使い始めたような次第です。このCrossWorksですが、ライブラリの一部として、CTL (CrossWorks Tasking Library)というマルチタスクのライブラリが用意されています。そこで、今回はTOPPERSを使わずに、このCTLを使ってみています。RTOSとしての機能はかなり限定されている印象を受けるのですが、最低限必要な機能は備わっているので、TOPPERSで使っていたコードを、思ったよりも簡単に移植することができそうです。
SAM7Sで書いたコードを、順次書き換えてSAM3に持ってきています。いつものように、最初にUSB仮想シリアルのドライバを動かして、デバック用モニタを動かすとこまできました。CrossWorksではARMのDCC (Debug communication Channel)を使ってのデバック用メッセージの表示もできますので、シリアルを使ったデバック用メッセージ出力を使わずに済むのも助かります。
これまでIDEというやつをほとんど使ったことがなかったので、最初はちょっと戸惑いましたが、ようやくと慣れてきました。開発環境がレッツノートCF-T5という5年も前のノートPCなので、Eclipsは重くて耐えられなかったのですが、CorssWorksは使い物になります!!
JTAGにはATMELのSAM-ICEを使っています。これはSeggerのJ-LinkのOEM品です。J-Linkに比べると安く買えますが、ATMELのARMでしか使えないという制約があります。SAM-ICEはSAM-BAでも使えるので、ATMEL中心のわたしとしては持っていても損はないだろうということで購入したものです。もちろんCrossWorksでもJ-Linkはサポートされていますので、このSAM-ICEも利用可能です。そしてSAM-ICE(J-Link)とCrossWorksの両者ともにSWDにも対応しているので、Cortex-M3使用時にはSWDでのデバックが可能となっています。今のところはまだJTAGで使っていますが、最初動作が不安定でデバッガを使って実行を開始するとエラーが出たり、JTAGをコネクトしようとすると
ちまたではembed/LPCXpressoやSTM32が開発環境を含めて提供されていることから人気ですが、ATMELを中心に使っており時々はLPCやSTM32等にも浮気するかもしれないという嗜好を持つわたしとしては、ベンダー・ニュートラルな環境の方が便利です。CrossWorksは基本的にはgccベースなのですが、ATMELを含む各社のARM7,ARM9,Cortex-M3のCPUサポートが含まれる開発環境となっており、個人向けにPersonal License($150)が用意されているのが魅力です。じつはすでに昨年末に購入してあったのですが、3月からようやくと使い始めたような次第です。このCrossWorksですが、ライブラリの一部として、CTL (CrossWorks Tasking Library)というマルチタスクのライブラリが用意されています。そこで、今回はTOPPERSを使わずに、このCTLを使ってみています。RTOSとしての機能はかなり限定されている印象を受けるのですが、最低限必要な機能は備わっているので、TOPPERSで使っていたコードを、思ったよりも簡単に移植することができそうです。
SAM7Sで書いたコードを、順次書き換えてSAM3に持ってきています。いつものように、最初にUSB仮想シリアルのドライバを動かして、デバック用モニタを動かすとこまできました。CrossWorksではARMのDCC (Debug communication Channel)を使ってのデバック用メッセージの表示もできますので、シリアルを使ったデバック用メッセージ出力を使わずに済むのも助かります。
これまでIDEというやつをほとんど使ったことがなかったので、最初はちょっと戸惑いましたが、ようやくと慣れてきました。開発環境がレッツノートCF-T5という5年も前のノートPCなので、Eclipsは重くて耐えられなかったのですが、CorssWorksは使い物になります!!
JTAGにはATMELのSAM-ICEを使っています。これはSeggerのJ-LinkのOEM品です。J-Linkに比べると安く買えますが、ATMELのARMでしか使えないという制約があります。SAM-ICEはSAM-BAでも使えるので、ATMEL中心のわたしとしては持っていても損はないだろうということで購入したものです。もちろんCrossWorksでもJ-Linkはサポートされていますので、このSAM-ICEも利用可能です。そしてSAM-ICE(J-Link)とCrossWorksの両者ともにSWDにも対応しているので、Cortex-M3使用時にはSWDでのデバックが可能となっています。今のところはまだJTAGで使っていますが、最初動作が不安定でデバッガを使って実行を開始するとエラーが出たり、JTAGをコネクトしようとすると
SAM-ICEはATMELのデバイスでしか使えませんというエラーが出たりして、しばらく悩んでいました。JTAG接続の設定の中にあるクロック速度のパラメータをためしに500KHzに設定したら安定して動くようになりました。もう少し早くしても大丈夫かもしれません。このあたりは、ボードの配線のまずさが影響しているのかもしれません。