« 2010年10月31日 - 2010年11月6日 | トップページ | 2010年11月21日 - 2010年11月27日 »

2010年11月7日 - 2010年11月13日の1件の記事

2010年11月 9日 (火)

CQ-STARM基板のCPU換装とDE0の到着

チップの換装で肝を冷やす(11/2/2010)
 今年2月から始めたフォトフレームプロジェクトは最終段階に入った。JPEG画像ファイルをデコードする機能の開発である(第8ステップ)。このほかに液晶モニターにFPGA基板とプロセッサー基板を取り付ける工作(第9ステップ)が残っているが、これはそう大した話ではない。こちらのほうが難易度が高い。

 まず、プラットホームを整えなければいけない。前記事にあるように、現在のCQ-STARM基板の石、STM32F103VBT6は、フラッシュは128KBあるが、SRAMが20KBで、JPEGファイルをデコードするためには、SRAMの容量(24KB以上必要)が足らない。

Ab093391 手持ちの石にこのあいだXilinxのFPGAチップと一緒に買った、フラッシュ512KB、SRAM 64KBのSTM32F103VET6があるが、今問題なく動いている基板のチップをはがすのはどうも抵抗があってすぐには踏み切れなかった。

 しかし、このままVET6を残していても、この先何か使うあてがあるわけではない。暫く悩んでいたが、思い切って換装することにした。

 定番のサンハヤトの低温ハンダを取り出す。この前のFPGAのときと同じようにチップの裏面にフラックスが固着していて、とりはずしは少し難渋した。ハンダは溶けているのにチップがずれてくれない。ずらすのではなくピンセットの先端を隅に差し込み、少しこじるように浮かすと、きれいにはがれた。

 ハンダ吸い取り線で念入りに低温ハンダを除去し、クリーナーで基板を綺麗にする。何回目かの0.5ミリピッチICのハンダ付けである。大分慣れてきてこの前のようにピンの微調整もなくぴったりハンダ付けが出来た。うーむだいぶ腕が上がったぞ(しかし、これが落とし穴だった)。

 何も入っていない新品のCPUチップの動作テストは、JTAGのOpenOCDのコマンドである。通電する。全く反応はない。用心のためすぐ電源を切る。

 うわあ、この間とりかえたばかりのレギュレータ(LDS3985)が火傷しそうに熱い。ショートだ。こういうときに限って、ショートチェックを怠っている。良かった、電源をすぐ切って。いや、駄目になったかもしれない。どきどきしてきた。まあ、これはいずれわかる。壊したとしてもレギュレーターだけだろう。

 基板を点検する。見たところ、ハンダブリッジもない。きれいなもんだ。しかし、テスターで測ると、しっかり0オーム。やれやれ。ピンコンパチなので疑うのはハンダ付けしかない。どこかでショートしている。なおもルーペで目検。

Ab093399 ありました、ありました。STM32の電源は、VddとVssが4隅に隣接して配置されている。その一箇所のパッドのピン位置より奥のところで波しぶきのように細くハンダが浮いて付いているところを発見した。(写真にとろうと思ったが微小すぎて撮れなかった)

 こういうこともあるんだ。恐らくフラックスで流動化したハンダが飛び散って空中で握手をしたようだ。半田ごてをあてれば苦もなくなくなった。テスターで測る。大丈夫。ショートはやっぱりここだった。

それこそ、祈る気持ちで通電する。OpenOCDを動かす。良かったあー、動いているぞ。

JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (Manufacturer: 0x23b, Part: 0xba00, Version: 0x3)
JTAG Tap/device matched
JTAG tap: stm32.bs tap/device found: 0x06414041 (Manufacturer: 0x020, Part: 0x6414, Version: 0x0)
JTAG tap: stm32.bs             got: 0x06414041 (mfg: 0x020, part: 0x6414, ver: 0x0)

JTAGはこの石を認識した。レギュレーターは壊れていなかった。
コマンドを入れる。

> flash probe 0
device id = 0x10016414
flash size = 512kbytes
flash 'stm32x' found at 0x08000000

 よーし、フラッシュ512KBも認めた。これでSTM32103VET6のハードは動いている。電圧を測る。3.29V。問題ない。

 ほっと胸を撫で下ろす。それにしても、レギュレーターひとつでこんな波乱万丈の気分が味わえるのを喜ぶべきなのか、情けないと思うべきなのか。たかが、¥100程度の石なのだが、生きとし生けるものを無駄にすることは、どんなものでも心が深く傷付いてしまう(単にケチなだけかも)。

「ねむい」さんの尽力でVE6が動かない問題は解決した(11/3/2010)
 次は、ソフトだ。当面、DFUを入れてとりあえずは前の石の状態にもどすことにする。以前お世話になった「ねむい」さんのサイトから頂いたDFUのプロジェクトのソース一式をEclipseにインストールする。これはVB6用なので、これをVE6用に変えなければならない。  

 詳しく調べると、MakefileでCPUなどを定義する環境変数を換えれば、ソース内の細かいコードはすべて、それにならって変わるようなので、変数のMedium Density(VB6など)の定義をHigh Density(VE6など)に切り替える。ビルドは特に問題なくOKとなった。

 この前、不調だったフラッシュローダーを動かしてみるが、相変わらず動かない。次の手段、OpenOCDを立ち上げJTAGモードに入る。TelnetからOCDのコマンド、

flash write_image erase ../main.bin 0x08000000 bin
 
でDFUのbinファイルを素直に書き込む。よーし書けた。順調だ。これでPCからDFUSeを動かせば、USBを通してこのボードをPCが認識するはずだ。

 あれえ、音沙汰がない。PCのデバイスマネージャーを見てみると、USBの不明なディバイスのアイコンは出るが、肝心のDFUSeの反応がない。さて、どこが悪いのだろう。

 32ビットマシンのスタートアップまわりの、この種のトラブルシューティングは、ちょっとまだ手が出ない。何から調べれば良いのかもわからない。しかし、この「ねむい」さんが提供してくれたDFUは前のVB6のチップのときは、何の問題なく動いていた。フラッシュが128Kから512Kに増えたからといって、フラッシュの開始アドレスが動いたわけでもない。普通なら何もしなくても動くはずだ。試しにVB6用のオリジナルのbinファイルを入れてみたが、これも動かなかった。やっぱり何かは換えないといけないようだ。

 とりあえずはご当人にそれとなく聞いてみよう。勝手にいじっておいて動かないと言うのも気が引けるが、このところご無沙汰しているし、「ねむい」さんのブログに挨拶代わりに遠慮がちにコメントを出してみた。JPEGでもあわよくばお世話になりたい下心もある。

 すると、次の日、詳しく調べたいのでソースを送って欲しいというレスポンスが帰ってきた。お言葉に甘えて、すぐソースコードを送ると、また2日もしないうちに、詳細な修正手順が送られてきた。いやいやありがたい話である。

 それによると、103VE6に換えるときに、103VB6_EVALという基板の設定変数を一緒に103VE6_EVALに換えているが、これがどうもまずいようだ。考えてみたら当然である。このCQ-STARM基板はもともとVB6用の基板であり、これにVE6が載るとは想定していない。VE6_EVALという評価ボードは物理的にこのボードとは別にあるのだ。その証拠に、VB6ボードにはない、NORメモリの初期化までやっている。これだ。これだ。

VE6が動いた。JPEGライブラリの準備OK(11/6/2010)
 謎が解けた。このMakefileにはチップによって換わる変数は3つあって、ひとつはCPUのモデルを決める、           SUBMODEL = STM32F103VET6(VBT6)
と、メモリサイズを決める     MPU_DENSITY = STM32F10X_HD(MD)
それに、評価ボードの定義  EVAL_BOARD = USE_STM3210E_EVAL(10B_EVAL) 
                                                                                              (カッコ内はVB用)
があるが、このうち一番下の変数をはずして(元のVBに戻す)ビルドし直す。

 JTAGで書き込む。USBの設定が少し複雑(ハブの電源を切らないとコードを抜いただけでは初期化しにいかない)で少し手間取ったが、無事、DFUSeが石を認識した。試しにLEDブリンクのテストプログラムをDFUSeで書き込む。順調に書けた。リセットし直すとLEDが点滅した。よーし、動いたようだぞ。

 次は、前のフォトフレームの本番プログラムだ。ついでにロングファイルネーム(LFN)の対応を止める。何とフラッシュサイズは、89KBから20KBに激減した。

 新しいDFUSeで書き込む。おおお、FatFSが動いた。ファイルをFPGAに送り込み、前の画像が出た。久しぶりの画像である。いとおしく眺める。これでJPEGファイルデコードの準備は整った。「ねむい」さんには感謝、感謝である。さらに、メールのやりとりの間にあと2つ贈り物をもらった。本当にありがとうございました。Ws000001

(1)STMフラッシュローダーのフリー版を教えてもらったhttp://www.mcuisp.com/ のmcuisp.exeである。始め漢字が全面に出て思わずたじろいだが、英語の翻訳ページがあり、ダウンロードできた。動かしてみた。こいつはすごい。これまで散々手こずってきた純正のフラッシュローダーの機嫌の悪さに較べれば、圧倒的に安定してチップに書くことが出来る。メッセージも豊富で動かしていて安心感がある。サイトの情報によるとARMだけでなくAVRやPICにも使えるようだ。これは良いものを教えてもらった。

(2)どうしても動かなかったHex2DFUが動いた
 Makefileに定義してあって、hexやbinファイルを作る手順に上記フリーソフトが動くように設定してあったのだが、これまでどうしても動かなかった。スペースの入ったディレクトリのパスは受け付けないということを教えられ、これを別のところへ持って行ったらあっさり動いた。他のディレクトリパスは"Program Files"などを受け付けていたので、まさかと思っていた。これでHexファイルからDFUファイルに変換する手間が省けて、DFUでの開発が楽になる。

DE0を発注してしまった(11/5/2010)
 すんさんの掲示板にも書いたけれど、遂にALTERAのFPGA評価ボードDE0をDigiKeyに発注してしまった。この評価ボードは、Altera CycloneⅢにDRAMやフラッシュ、VGA、I2C、UART、PS2など盛りだくさんのペリフェラルがついた教育用評価ボードで、価格が1万円少々と破格の安値で前から注目していた。私が掲示板で勧めたこともあったのかも知れない、周りで次から次に買う人が増え、しかも面白そうなアプリケーションをDE0で動かしておられるのを掲示板で見せられて指をくわえていた。

Ab093390

 今まで買わなかったのは別に1万円の出費を惜しんでいたわけではない(え、いややっぱり1万円を越すと何かとありますが)。どうせ買うのなら、価格がDigiKeyの送料無料ラインを楽々越えるので、日頃、手に入りにくいチップが集まってから一緒に買おうと思っていた。しかし、今のところ欲しいチップは、PGA2311という電子ボリュームICだけで、なかなか次のものがあらわれない。

 手を出さなかった理由はほかにもある。新し物好きなので気が散って今やっているものを投げ出す恐れが強い。それに、既に2つの会社のFPGA、Xilinx、LatticeのインターフェースケーブルがごろごろしているのにまたAlteraのものも増やさなければならない。さらに開発環境をこれ以上増やすのは今のPCはドライブがもう満杯で、ディスクを買い直す必要がある。

 あれやこれやで、暫くは買わないと心に堅く決めていたのだが、フォトフレームが動き出して、すっかり緊張の糸が切れ、欲しい気持ちに歯止めが効かなくなってしまった。それに今のフォトフレームで不満なところを、今度の評価ボードは埋めてくれるような気がしてきたからである。

 現在のフォトフレームはSPIでデータを送っているが、シリアルなのでスピードが遅い。特にVGAにしてしまったので、画面描画中は、全くデータを受け取ることができない。SRAMは10nsの高速だが、既にFPGAのクロックは15nsまで上がっており、パラレルバスにしないと帰線期間中の大量データ書き込みは出来ない(SPIでは送れても数十バイト)。

 FPGAでSDカードを読み、内部で処理すれば、うまくいけば動画レベルまで画像処理が出来そうな気がする。今の付録基板では、CPUコアは恐らく入らないだろう。DE0クラスでないと無理だ。DE0ならもしかするとウェブカメラまで出来るかもしれない。まあ、このへんを実現するのは、相当、使い込まなければ無理だと思うけれど、夢があることは大事なことだ。

DigiKeyからDE0が届いた(11/8/2010)
 何だかんだやっているあいだに、DigiKeyから品物が到着してしまった。ここはいつも恐ろしく早い。土日を抜けば、営業日勘定で1日半(木曜午後注文して、月曜朝到着)という早さだ。早速梱包を開けて中を取り出す。思っていた以上にコンパクトだ。電子ボリュームのIC(PGA2311)と一緒に記念撮影。

Ab093386

 すんさんの掲示板で、発注したことを報告したら、沢山の人からレスポンスを貰った。また一人新しく買う人が増えたのと、このDE0を知るきっかけとなったご当人のSimさんからもコメントを頂いた。こちらはFPGAなどまだ初心者も良いところで、色々教えてもらおうと思っているところなのに、情報提供を期待されるなんて少し面映い。

 当研究所のブログは、技術情報の提供は余り主眼に置いていない。むしろ、みなさんの新しい情報にお世話になっている。どちらかというと、このブログは挫折しないため(動かなくてもめげずに這い上がるため)のノウハウ談だと思っている。

 このDE0でもせいぜいたくさん失敗を重ねることにしよう。ただ、先の話はともかく、今すぐDE0を使う手近なアプリケーションは思い当たらない。少しづつこのボードのデモを動かしながら勉強をしていこうと思う。

 そのなかで気になっているのが、Simさんがすんさんの掲示板で紹介された、NiosのAvalon-MMというCPUバスだ。今度のフォトフレームもここの性能如何で何が出来るかが決まる。CPU設計のまさしく奥の院で、この仕様が公開され、いじれるというのは、ソフトウエア開発者にとっては夢のような話である。

 ああ、こんな話をしている場合ではない。CPUのSRAMサイズが大きくなったので、早くJPEGライブラリを入れてフォトフレームを完成させなければ。

| | コメント (2) | トラックバック (0)

« 2010年10月31日 - 2010年11月6日 | トップページ | 2010年11月21日 - 2010年11月27日 »