(日々の記録)デジタルオシロを買った。(月)STM32基板のUSB仮想COMポートがGNUで動いたLPC2388は少し休んでSTM32の方に専念する(4/27/09)LPC2388基板を付録にしたインターフェース誌の次号(6月号)が出たので買ってきた。chaNさんが本名で2章にわたって執筆されている。UARTやUSBホストの解説もある。うーむ、みんなやろうとしていたことばかりだ。何か急に道が広くなって歩きやすくなると同時に、生来のへそ曲がりが出て逆に何となく意欲が失せてしまった。みんなが進んでいく方向についていくのが嫌いで、違う方、変わった方に行きたがる。今度の号でも一番の情報は、LAN&SDカードソケット拡張基板のイーサネット物理層のトランシーバーICの型番がわかったことである。LAN8187とある。実は、今度のLPC2388はイーサネットの論理層(MAC層を含む)をサポートしていると知り、ネットでこの物理層のICを探していた。目に付くのは殆どがギガビットイーサのICばかりで、10/100MあたりのICはDigiKeyで見ると流通在庫のない旧製品が多く1個からは売ってくれない。残念ながらLAN8187もDigiKeyでヒットしたが、販売最低個数は800ヶで手が出ない。この別売りのLAN&SDカード拡張基板の自作を企んでいる。買えば¥6800だそうだが、今度も、いくら何でも「ぼったくり」だ。SDカードソケット、モジュラージャック(パルストランス付き)、AタイプUSBソケット(これは余計)を合わせても小売価格で\1000しない。それに物理層ICが\500前後としても部品代は¥2000以下、基板を起こす費用が1枚あたりそれくらいかかったとしても、売価がその倍というのはないだろう。この前の雑誌付録のフリースケールのイーサネットマイコンのときもそうだった。別売りの部品セットの法外な価格に反発して、秋月のモジュラーを無理につけてピンを折り、パルストランスを外付けして動かした(2008/9/9の記事)。今度も恐らく誰かが私と同じようなことをしようとしているに違いない。データシートさえあればやっていることはそう難しくない。外付け部品は発振子だけで、あとは結線するだけだ。物理(PHY)層ICを手に入れて作ってやる。STM32F103)の方に移ってしまった。32ビットプロセッサーと言ってもこの石は、Thumb2という16ビット命令でしか動かない廉価版だが、せっかくSDカードソケットをつけたのに活用していない。それにこちらの方が情報が少なく難しそうである。へそ曲がりに加えて、例の中毒だ。出来ないこと、難しいことを克服したときの充実感がたまらない。いつのまにか険しい先の見えない脇道にそれてしまう。STM32をGNU環境で開発する(4/29/09)STM32はこのあいだUARTが動いたが、これは普通のTTL-UARTで、USBを経由していない。このSTM32はUSBがついているのが特長だ。USBインターフェースの勉強のためにもUSBを通してPCとお話がしたい。USBを動かすには、複雑で面倒な設定が必要で自前で作るのは大変だ。ライブラリに頼って開発しないと効率が悪い。このライブラリ(USBLib)やデモプログラムは、雑誌のCD-ROMに他のペリフェラルのライブラリ(FWLib)とともに入っているが、これらのソースはIARやKeilの商用コンパイラーをプラットホームにしていて、GNU向けのソースではない。仕様は殆ど変わらないはずだが、肝心のMakefileとリンカースクリプトがない。gnu」で検索したら結構沢山のサイトが見つかった。探した中で一番簡単そうな、ここのサイトのMakefileとリンカースクリプトを拝借してコンパイルしてみることにした。お手本のソースは雑誌のデモ(蛙が跳ぶやつ)のファームウエアだ。知らなかったが、雑誌付録のCD-ROMにちゃんとソース一式が入っていた。このMakefileはこの前と比較にならないほど複雑でちょっと見ただけでは何をやっているのかよく分からない。G++の環境に移し、ソースのコンパイルまではうまくいくようになった。はじめはライブラリの構築がうまくいかず途方に暮れた。一部の$で囲まれる変数、$(CFILES)などが置き換わらず、Nullデータになってライブラリが作れない。お手本にしたMakefileはCygwinのUNIXベースのもので、こちらの環境はDOS窓だ。/ではなくて¥(バックスラッシュ)などのセバレータが入るとおかしくなるのかと思ったが、それが原因ではなかった。変数に入れるファイル名をひとつだけにするとうまくいったので、DOS窓の環境変数などのバッファーのオーバーフローかと、少しづつ増やしていった。ところが、いくら増やしてもエラーにならない。結局、元の全部を入れても相変わらず正常にライブラリが構築される。直ってしまったのである。???であるが、余り深く詮索するのはやめる。すべてのソースのコンパイルは、いくつかの警告メッセージがでるもののOKとなった。喜んだのも束の間、リンカーで以下のようなメッセージをだして失敗する。`_close'これは標準Cライブラリの中のエラーだ。ヘッダーファイルと実際のシステムライブラリとがどうも不整合を起こしているようだ。うーむ、やっぱり駄目か。ここまできてあと少しなのに残念だ。このあたりはビルドのなかでも一番難しいところでこれ以上は手が出ない。ライブラリのリンクではLinuxで散々苦労した。ウェブと同じWINARMに替えるしかないか。`_sbrk'をぶちこんで検索してみた。すると何と該当するサイトが見つかったのである。STマイクロのサポートのページで全く同じメッセージを出して立ち往生している人の質問であった。幸いなことに回答が出ている。英語なので今ひとつはっきりしないが、要はsyscalls.cなどのOS用のルーチンを組み込まないでコンパイルすると、それ向けの関数がないのでエラーになる。syscallを使っていないのならこのエントリのダミールーチン(stub)を作れば良いということである。_writeなどの関数を追加する(中ではなにもしない)。祈る気持ちでmakeする。Makefileどおりelfファイルとhexファイルができた。勢い込んでDfuでファームを書き込む。順調にVirtualComPortが認識され、LEDが点いた。よーし、動いたぞと、キーボードから入力する。キーボードの反応はない。やれやれやっぱりまだ駄目か。RevCを発注してしまった(4/30/09)前から、目の前のプロジェクトが上手く行かないと新しいリソースに手を出す癖がある。素直に雑誌の環境でコンパイルすれば良いものを、わざわざ茨(いばら)の道を選んでGNUで苦闘している。このあいだのイーサの物理層ICを探したときにDigiKeyに寄って、見るともなくBeagleBoardのページに行ったら、何と在庫が25に減っている。価格は円高でこの前見た価格より\1000以上安い¥16,062だ。この前は3桁の在庫があったはずだ。うむむ、こういうものは次のロットは遅れることが多い。7,500円以上なので2000円もする送料が無料だ。この際、色々な手に入りにくい小物を手に入れるチャンスでもある。フリースケールのイーサネットマイコンのモジュラーはすぐ思いついた。今度のイーサ物理層のICも買っておきたい。ひとつから買える適当なICがなかなか見つからない。買うとなると気がせいてきて、とうとうICが見つからぬまま29日の深夜、モジュラージャック2ヶと合わせて発注のクリックを押してしまった。代金は消費税を入れて¥17,700。いやあ、これで、がた老AVR研究所に遂にハイエンドの組み込みボードが来ることになった。気分が高揚して何も手がつかない。このあいだ6年乗った車を乗り換えたが、これほどの感動はなかった。品物が届いても、簡単にはすぐ手が出せないだろうが、可能性だけはやたらに広がった。FPGAと云い、趣味の世界でこれだけ興奮できるというのも幸せなことである。モニターをこいつのために新調する必要がある。ビデオ出力がデジタルだからだ。現在のメインモニターは、もう10年以上使っている古い17インチブラウン管モニターでディジタル端子などついていない。そのかわり今や珍しいケーブル5本のRGBコンポーネント端子がついている(接続はもうひとつのアナログ15ピンの方だが)。目に優しく長く使っても疲れない。このあと30万近く出して買ったナナオの液晶モニターにはDVI端子がついているが、これは娘にやってしまった。発注してしまってから、イーサ物理層ICのMicrel社のKSZ8721BLがDigiKeyで1個売りしているのが見つかった。0.5ミリピッチのLQFPで48ピン。変換基板で対応可能である。データシートも完全にある。