とりちらかったもろもろの言葉たち

ちょっと大きめのつぶやきにすぎない戯言をとりあえず書いてみました

FreeSoC2とかいう開発キットでLチカまでの道

ETでCypress Semiconductorが配っていたSparkFunのPSoC5LP開発ボード。日本語の情報はあんまりないみたいだし、意外と動かすまでに手間だったのでメモ。まあぶっちゃけSparkFunが公開している文書を読めばわかるっちゃわかる。英語だけど結構丁寧に書いてあるし。

Arduino IDEの準備をする

まずArduino IDEが1.6.4以降が必要。とりあえず今ダウンロードすると、1.6.6になる模様。ウチのMac/PCには1.0.6までしか入れてなかったので、入れ替える必要があった。

それからハードウエア情報の追加。ARMプロセッサー対応を取り込む必要がある。まずArduino IDEのコンパイラーでCortex-M3のコードを生成できるようにする。これは比較的簡単で、「ツール」メニューの「ボード」項目を選ぶとリスとされるボードの中にある、「ボードマネージャー」を選ぶ。そうすると、使うボードのグループみたいなものだなこれは。Cortex-M0のコンパイラーとかボードとかもここで追加できる。本来はこのリストの中に「FreeSoC2」というのがはいるべきだし、そうしたいみたいだが、まだそこまではできていないという状況だ。

ボードマネージャー

次に、githubのリポジトリから、PSoCのサポートファイルをダウンロードする。zipファイルなのでこれを展開して、そのなかにある「Hardware」フォルダーをArduino IDEの「スケッチブックの保存場所」にコピーする。Hardwareフォルダーがすでにある場合は、中身を追加すればよい。これでようやく、ボードとしてSparkFunの「PSoC Dev Board」が選択できるようになる。

Arduinoのブートローダーを書き換える

さて、ここからが問題だ。ここで試しにUSBケーブルを「Target」に指してみても、シリアルポートドライバーが認識してくれない。「USBUART」という謎のデバイスがつながっていることになっている。

まあまずは、こいつをダウンロードしておく。Windowsのドライバーとか入っているくさいのでインストール。しかしCypress PSoC Programmerをインストールしてもとりあえずドライバーは認識しない。ドキュメント通りに「Debugger」ポートにつないでみるが、こちらもいろいろと謎のデバイス状態になっている。

これはとりあえずドライバーをインストールしてしまおう。C:\Program Files (x86)\Cypress\Programmer\driversフォルダーにインストール用のバッチファイルがあるので、これを実行してみる。これでDebuggerポートに接続した状態では謎デバイスがなくなったが、相変わらず「Target」は認識しない。

たぶんここが問題で、Arduino用のBootloaderを書き換えてやらなければいけないのだろう(と、この時点では思っていた。実際は違うことが後から判明した)。

ドキュメントに従い、ここで「PSoC Programmer」を起動する。あれ?認識してない。起動する前に接続していたせいかもしれないので、一度USBケーブルを抜いてから挿し直す。これで認識した。

Programmer1

これで「File」-「Open」でPSoCのサポートファイルにある「D:\Documents\Arduino\Hardware\SparkFun\psoc\bootloader.hex」を開く。ファイルを開くアイコンの隣にある「Program」ボタンをクリックすると、ブートローダーが書き込まれる。

これで認識するかと思いきや、「ドライバーはD:\Documents\Arduino\Hardware\SparkFun\psocにある」ときたもんだ。なので、このブートローダー更新作業をしなくてもホントは認識して作業できんじゃね?みたいなことは試していない。

さてドライバーをインストールしてめでたしめでたし…かと思いきや、落とし穴が待っていた。Arduino IDEが「コンパイルエラー」となる。

arm-none-eabi-gcc: error: C:\Temp\build9c9ef3bdfe2fccb480bc6e4bac749e41.tmp/core.a: No such file or directory

確認すると、確かにそこに「core.a」ファイルはない。テンポラリフォルダーの「core」フォルダーの下になら存在する。しかたがないので、ハードウエア情報の定義ファイルというか、platform.txtを書き換えた。D:\Documents\Arduino\Hardware\SparkFun\psoc\platform.txtを開いて「core」を検索すると、1カ所見つかる。その「core.a」を「core/core.a」と書き換えたら、無事コンパイルできて、スケッチもアップロードできた。これは定義ファイルだからとりあえず処置としては正しいのだけど、なんかそのうち引っかかるかもしれないので、備忘録としても公開しておこう。

 

 

コメントを残す