posted by
rerofumi
2009/8/1 Saturday 21:00:06

Cypress から PSoC DEVELOPMENT BOARD CY8CKIT-001 が届く。意外にでかいプラスチックパッケージにちとびびり。
全国のピーソッカー(今適当に作った単語)待望の PSoC3/5 が姿を見せ始めている。この CY8CKIT-001 は PSoC3 の ES(Engineering Sample)版が付属した最初のテストボードとなる。注文を受け付け開始したと聞いて早速申し込み本日届いた次第。

中身はこんな感じ。
PSoC3/5 というのは、周辺回路がソフトウェアで(ある程度)配置決定可能なフレキシブルマイコンとして好評だった PSoC の新世代プロダクツ。
コンフィギュアブルな周辺回路といった部分はおおよそそのままにマイクロプロセッサコアをこれまでの M8C から 8051 と Cortex-M3 に変更したといった感じのもの。ちと非力でださかった M8C からパワフルなコアになって魅力倍増な感じ。
現在は MyCypress (https://my.cypress.com/) でひっそりと半クローズドベータ展開中。要アカウント登録。
8051コアの方が “PSoC3″ で、Cortex-M3(ARM) コアの方が “PSoC5″ となる。ちなみにこれまでの M8C コアの奴は “PSoC1″ としてそれなりにスケーラブルに展開していく様子。
今回は PSoC3 のES2サンプルが出てきたので提供開始といった感じの開発ボード。PSoC5 はまだ存在していないためおあずけ。でも 3 と 5 は本当にコアが違うだけで構成とかは同じものっぽい。
現在のところは本当に Engineering Sample なんで Errata ももりもり存在している。ESをいち早く入手したいというマニア心とともに、Errataドキュメントを読んで笑うとかそんなレベルで。
とりあえず PSoC をよく知っているとして PSoC3/5 で何が変わったのかから眺めてみよう。
Read the rest of this entry »
posted by
rerofumi
2009/7/28 Tuesday 1:53:40
結局 GP2X wiz の方はまだなんにも触っていない状態。
なんでかというと、クロスコンパイル環境がまだ手元で確立していないからなんですな。
ここしばらくはずーっとクロスコンパイラのビルドに挑戦しまくっていたり、その他のライブラリ群のビルドに挑んでくじけていたりの繰り返し。まあ、Open2Xの成果を使えば良い話なんだけれども、cygwin上でのtoolchainが不完全だったり、自分で環境を作るのが色々修行になったりするのでやめられないとかそんなあたりで。
そうこうしているうちに MacOSX 向けの toolchain がリリースされてきた。ふむ、MacOSX 上で GP2x wiz の開発をするほうが手っ取り早いかもしれないなあ。
んがふと気がついてみると、手元のMacBook(白、けいおんモデルと同じ奴)に SDL が入っていない事に気がつく。昔の環境には入れていたけれども、こいつになってからはまだ一度もいれていなかったっけ?
そんなわけで SDL, SDL_image, SDL_mixer をインストールすることにしたのだけれども、周辺ライブラリもたくさんあって地味にめんどい。
ところで、最近は toolchain の提供はバイナリよりもインストールスクリプトによる方が主流っぽい。オープンソースなんでバイナリのみの配布だと波風たつのかね?
CrossTool や ct-ng なんかもこの類だねえ。これらは自動ビルドスクリプトではあるけれども、スクリプトを読むことで環境構築手順がわかる教材でもあったりする。
Open2X もそういったスクリプトを用意しているのだけれども、いまいち使い勝手が悪かったりターゲットが linux だけだったり。
うむ、自分で作るか。
どうせ、ちまちまインストールしていく途中で configure につけるスイッチをメモしたりするんだから、それをスクリプトにメモしていくと思えば同じことだろう。
で、そのスクリプトに ruby で書かれた make 代替コマンドである rake を採用する。
前々から使えるようになりたかったんだよね、rake。
shスクリプトとmakefileでなんでもできるというのは嘘じゃないけれども、いまいち自分で書こうとは思わない。どうせ書くなら楽しいコーディングしたいじゃない。
rake だと ruby そのままに make みたいな依存関係記述ができるので、今回の用途にはぴったりじゃないかと。
てなわけで今回作成したのがこちら
Download: fumi2_sdl_build-0.0.1.tar.gz (4kb, tar+gz形式)
SDL のインストールだけでなく rake に興味ある人もどぞ。
ターゲットは MacOSX/Cygwin/Linux の 3種類。一応手元で動作確認済み。
まーご利用に際しては as is ということで。
posted by
rerofumi
2009/7/11 Saturday 15:59:43
シリコンハウス共立とツールベンダーのハッコーが「ハンダ付け道場」なるイベントをやるらしい。
うんうん、こういった入門!やってみよう!って企画は良いよね。
で、そんな記事を Make: JAPAN blog 経由で、イベント告知のBlogページにたどり着いて知ったわけだけれども。
……
なんか右の写真に見覚えが。
ああ、コレか。
元の記事もハンダ付け入門のすすめだったので、このように写真を使っていただいて光栄でありまする。
posted by
rerofumi
2009/7/7 Tuesday 1:31:36
20セットを用意して、4/7からひっそりと受け付けていた「奏」のキットがおかげさまを持ちまして完売となりました。
お買い上げいただいた方を始め、皆様にお礼申し上げます。
是非とも MINIprog を手に入れてPSoC開発にも足を踏み入れてみてくださいね。とPSoCの布教も忘れない。つか、AVRクローンでも作った方が受けそうだ。
そうこうしているうちに Arduino がビッグウェーブになってしまいさっぱり目立たないプロジェクトではありましたが、それでも多くの人に注視していただくことができ感謝の限り。
少量ではありましたが、個人頒布も行えて色々勉強させてもらいました。
とりあえず「奏」については追加生産の予定はありません。
現在は、もうちょっと色々に使える大きめのPSoCテストボードを設計しようかなと準備を進めているところです。まあ、この辺はまた気が向いたときにでも。
posted by
rerofumi
2009/6/28 Sunday 2:08:52
パラレルポート接続のJTAGタウンロードケーブルと決別してWindows7 RC 64bit を使い始めて数週間。結局 Xilinx と Lattice についてはUSB接続ダウンロードケーブルを買ってしまったので、VMwareのXPから特に問題なく利用も開発もできている状態。しかしALTERAデバイスのダウンロードケーブルだけがない。
ALTERA用についてはTERASIC BLASTERが安いし、それ以前にALTERAは使わないから良いかなーと思って後回し。

一応Cyclone2のブレッドボードとか手元にあったりもするので使えるに超したことはない気がする。
そんなとき「USB-Blasterもどきの制作記事」なるものを知る。おー、なんか使用頻度も高くないからこれで良いんじゃねって気がしてきた。
部品箱をあさったら無事全部そろえることができたのでさくっと作ってみようか。

PIC18F2550 は秋月電子のモジュールを使用する。別件でテストしていたものを使い回し。USB接続のシリアルコンバータ+ちょっとしたマイコンが欲しいときに一番使いやすいモジュールなんじゃなかろうか。
水晶や電源周りにUSBコネクタと一通りケアされているので便利。つか、今回の目的だとこれに抵抗とコネクタ付けるだけ。


適当に作成。間にバッファでも挟むとより使えるものになりそうだけれども、今回はEasyに作りたかったので省略。
マイコンにファームを書き込んで完成。

おお、本当に USB-Blaster として認識されてコンフィグレーションもできた。もちろん、AS Programing もOK。
いやいや、これはお手軽で良いですなあ。
そいや、xilprg派生でUSB-BlasterをImpactからIP利用するプロキシなんてのがあるんだっけ?それを使えばXilinxもコンフィグレーションできるかもね。
posted by
rerofumi
2009/6/14 Sunday 3:24:45
GP2X wiz が届いたものの、その後開発マシンのOS入れ替えで開発環境構築し直しにより触れなくなっていたしだい。
GP2X wiz の Toolchain 構築で七転八倒してちょいあきらめた状態(後述)でとりあえず気になっていた Wiz の速度テスト。
スプライトサンプルアプリを動くようビルドして色々とチェックその結果わかったことは……。
私のコードはGP2XとWiz上でもっとも高速に動くよう、16bit depth のフレームバッファモードで動かしているとこはちょいと注意してね。PCの方で32bitで動作させると、倍の負荷がかかったりするから。

でまあ、このスプライトサンプルアプリではスプライトの数を増やしてどれくらい時間がかかるかをみることができるのです。これでSDLとfbdevの速度をなんとなく見る。
元々の GP2X-200 とかでは、fbdev から液晶に表示させるまでの負荷が異様に重くそれだけで 13~14ms かかっているというのが最大のネック。なので、2Dスプライトでも 60fps で動かすのはほとんど無理。
でも、ピクセルフィルレートは 327680pixel/16ms とそんなに悪いわけでもなく、320×240pixel なら 4画面分とそこそこだった。
なので GP2X-200 では 30fps 以下が基本。
Wiz では、fbdev の処理が 5~6ms と結構高速になっているため色々と軽く見える様だ。
ピクセルフィルレート換算だと 491520pixel/10ms とかなり早くなっている。16ms換算で、786432pixel なので倍を超えている。
その他色々な要素を総合して、CPUクロックが 266MHz から 533MHz にあがった分の数値そのまま高速化されていると考えて良いようだ。画面周りは改善されているので fbdev はそれ以上に早くなった様に見え、それがアプリのスムーズ化に現れている。
んが一つ大きな問題を見つけた。
ファーストインプレッションで「なんか動作が遅い」と言ってた理由がわかった。私がGP2Xの頃使っていた SDL を static で利用していると SDL_tick() の単位が 1ms ではなく 10ms になっているようだ。ハードやカーネルが変わりタイマーの単位が変更となったようだ。なので60fpsを数えるために16msを計測しようとしても、10ms単位なので20msしかわからないということらしい。増えた4msの分だけ遅くなっていたというわけ。
Wiz 内にあるシェアドライブラリではどうかはまだ試せていない。
利用するタイマーを変えるか、シェアドライブラリを試してみるかしないとならないかもなー。
なんとかして、10ms未満で時間を計測できる手法を見つけなくては。
posted by
rerofumi
2009/6/6 Saturday 17:00:15

さて、せっかくマルツボードとFPGAを手に入れたのでなんか作るか。ということで、以前CPLDで修行したときの「カップラーメンタイマー」を移植することにした。(CPLD版の制作記 2, 3)
お試しで作るのにちょうど良い題材。
CPLDのときはゲート数も少なく、なんとか詰め込むような感じだったけれども、今回の Lattice FPGA XP2-5E は単純比較で 30倍くらいの規模があるため余裕ありあり。なので、以前はできなかった「時間がきたらアラームが鳴る仕組み」も追加することにする。

アラームのために圧電スピーカを追加している(左上)。
ボタンはSW2~5 の 4つで左から、5分、4分、3分、1分のスタートとなっている。
完成したラーメンタイマーの ispLEVER7.2 プロジェクト。(余計なファイルも混ざっていたらごめん)
Download: ramen_timer_lattice.zip
VHDLのソースコードのみアーカイブ
Download: ramen_timer_lattice_vhdl.zip
動作しているところの動画など。
Read the rest of this entry »
posted by
rerofumi
2009/5/18 Monday 23:28:43

先日買ったマルツのFPGA学習ベースボードについているパラレルプログラマでうはうはのFPGA生活が送れているかというとさにあらず。この五日間コンフィギュレーションができなくて悪戦苦闘していた。
■ 第一の難関、増設パラレルポートの罠
Lattice の ispVM を起動してダウンロードケーブルを設定することから始まるのだけれども、自動認識に失敗しケーブルを発見することができない。
でまあ、パラレルポート設定の所に 0×0378 とか書いてあるのを見て気がつく。これは、マザーボードというかチップセット内蔵のパラレルポート時のI/Oアドレスだ。うちのは増設カードによるパラレルポートなのでI/Oアドレスが違うはず。

で、見てみたら 0xb400 だったのでこれを手動設定。

これでダウンロードケーブルが認識されて使える様になった。
■ 第二の難関、バウンダリスキャンできない
ところが次の段階であるバウンダリスキャンによるデバイス検出ができずエラーのみが帰ってくる状態に。さっぱりわからないので、超簡易プローブテスタを作成して、マルツボード上を信号が流れているか確認する。

大活躍の超簡易プローブテスタ。
みっちりと調査し、結構な時間をかけてわかったことは、JTAGの信号はちゃんとFPGAに届いていること。たぶん、TDOが受け取れずに 1 オンリーを検出している状態であること。
おまけに、調査しているときなんかの切っ掛けですぐ信号が出てこなくなる現象に遭遇。これに出会うとアプリを起動し直しなのだけれども、4回に1回とかの頻度で起こるのでちときつい。
ちなみに Xilinx モードにしたら Impact で普通にバウンダリスキャンできた(デバイスは不明な奴と表示される)。なのでマルツボードのせいでも、FPGA基板のせいでもなさそうである。
パラレルポートドライバと増設パラレルポートの関係な気がしてきて、やる気はがっつり減退。なにかに頼りたくなってくる。

頼りになる女神降臨(ひだりのほうね)。USBなかわいいアイツ。
まあ、Windows7 のときに「パラレルポート撤廃しようかなー」とかいっていた時はまだ迷いがありながらも検討していたと言うことで。
しかし……。
■ 第三の難関、USBケーブルでもバウンダリスキャンできない
流石にUSBケーブルでもコンフィグできなかった時は目の前まっくらになりましたよ。
今回のLattice基板(&雑誌)3つ買ってあったのだけれども、3つとも駄目ってどういうことよ。いったい何がどうなっているのよさ。
具体的にはパラレルポートの時とは違って、スキャンはできる。できるんだけれども、NO-JTAG という「不明なデバイス」扱いになってしまうという現象。
~~ 2日間の格闘を挟んで ~~
5日を費やしてようやく思い出した。そういや以前にもコンフィグできない問題ってあったよなと。
あれは2007年の Spaltan3E 基板の時。コンフィグできないという問題で一堂騒然。結局波形を揃える必要があるということで、うまくコンフィグできない人は244でバッファを作ってかますか、コンデンサを調整して波形を調整するということになっていたと思う。

その時につくった 74VHC244 なアダプタ。
これを基板とケーブルの間にかますと……。

ばっちりというかあっさりスキャンできるようになりましたよ。こんちくしょうめ。
もちろん、コンフィグもバッチリ。
これで Lattice FPGA基板で開発して遊ぶことができますよ。(目の端にキラリと光ものが)
たぶん、増設パラレルポートで上手くいかないみたいと言う問題と、バッファを噛ました方が良いという問題はそれぞれ別の事象。
私の場合はこうだったという情報までに。
posted by
rerofumi
2009/5/14 Thursday 1:40:39

マルツ電波の「FPGA学習ベースボード」を買ってみましたー。
やあ、デジタル・デザイン・テクノロジー連動付録の Lattice FPGA を使ってみたくなったもので。Lattice FPGAが使えるダウンロードケーブルは手元にないのでどうしたものかなあと考えていたのです。
なひたふさんが XilinxやAlteraのパラレルダウンロードケーブルで Lattice FPGA をプログラミングするサポートダウンローダを公開されているし、Lattice のパラレルダウンロードケーブルの回路図もあるので自作しても良かったりはする。でも、「難しくは無い」けど「面倒くさい」ときってあるよね。その面倒くさいも時には楽しい要素なのだけれども、今回は回避した次第。
それに、テストボードも作るの面倒で、これくらいのがスタートアップにあるのも結構便利なものだったりするのです。いずれは、自作のテストボードができてそれで済ます様になるかもね。
手に取るまで気がつかなかった、というか見落としていたのだけれども。

パラレルポートコネクタがオス型じゃん。
これまで使っていたストロベリーリナックスのパラレルダウンロードケーブル(現在は販売終了)がメス型コネクタだったのでケーブルが合わないよ。中継ぎコネクタでも買ってくるか……。
まあ、ByteBlaster もオス型コネクタだったし、メス型というほうが逆なのかもしれない。
このベースボード、7セグにスイッチにラダー抵抗DACとシリアルって結構バランスの良い学習ボードだと思う。取り敢えずの学習でこの辺は使いやすいしね。汎用I/Oポート端子に245バッファがついているところも初心者向けやマイコン応用用途としてポイント高し。
7セグがダイナミックでなく直繋ぎなのでポートを食い過ぎなのが難点。SRAMがついているとかなり汎用度が高まるんだけれども、まあそのへんはブロックRAMでなんとかするところか。
回路として簡単なのでおまけ的に USBコネクタがついているのだけれども、使える人がどれくらいいるかはちと疑問ではある。
この後に続く、Splatan3E と Cyclone 互換基板の販売が楽しみ。
この手の基板が後々入手できることの安心感は大きいと思うのです。
posted by
rerofumi
2009/5/11 Monday 4:52:33
前回の続き。
どちらかというとこっちの方が難易度の高い調査。詳しい方はフォローよろしく。
■ MosChip PCIシリアル/パラレル増設カード
Windows7 64bit : 動作した
今使っているデスクトップにはパラレル/シリアルポートが付いていなかったので敢えて付けるために増設したPCI拡張カード。
何でこれが欲しかったのかの理由が以降続く。
■ ISE 11.1 Webpack
Windows7 64bit : 利用不可
Windows7 32bit : 動作した
Windows7 64bit XP mode : 一応動作した
Xilinx のPLDデザイン環境。
Webpack は 64bit Windows での利用は不可で、使いたかったら有料版を使ってねーということになっている。以前から。
今回 64bit Windows 上だと Webpack のインストーラが起動しないのを確認した。
32bit の方だと現状のVistaで動かすのと同じ感じ。ただ、ISEでもやはりインストーラからのドライバーインストールが失敗して入らない現象が起こるので、それに気がつかないとImpactでダウンロードできなくて首をひねることになる。
このへん、インストール後 ISE のディレクトリ内にある install_driver.exe という奴を手作業で実行してやれば良い。
Windows7 32bit においてはパラレルケーブル経由のコンフィグが可能。
XP mode ではパラレル仮想デバイスがないので、USBダウンロードケーブルの利用のみが可となる。それよりも ISE の様な鈍重なアプリをVirtualPCで動作させるのはかなりきつい。気長に使って吉。
あと、環境のせいかは不明だが XP mode だと若干不安定だったような気がする。
■ SPARTAN-3E スタータキット
Windows7 64bit : ISE Webpack利用不可
Windows7 32bit : 動作した
Windows7 64bit XP mode : 動作した
Xilinx USB ダウンロードケーブル相当なので、こいつでUSBドライバの確認をした。まあ、結果は順当。
■ Quartus II Web Edition 8.1
Windows7 64bit : 動作した、パラレル利用不可?
Windows7 32bit : 動作した、パラレル利用不可?
ALTERA のPLDデザイン環境。
ALTERAの方はUSBダウンロードケーブルを持っていないのと、あまり使わないのとでまともに調査できていない。
ISEみたく64bit版への縛りはないし、USB Blasterやその互換品であれば64bitドライバが用意されていることを確認したので使えそうな気がする。
コンフィグ時、どうやってもハード追加にByteBlaster互換が現れなかったのでできないのかもしらんと諦めた次第。
■ 寸評
64bitだとISEが使いづらい。どうしましょ。
XP以降パラレルポートはデバイスドライバ経由でないと触れなくなったので、扱いやすいポートとは言えなくなってきた。このへんが潮時で、パラレルポートを利用するデバイスは見切りをつけてUSB経由のものに切り替えていった方が良いのかもしれない。