MSP430 LaunchPadの開発環境構築

たまたまWebサーフィンしていたら、MSP430のLinux開発環境について記載されているページがあったので、追試を兼ねて環境構築してみることにしました。

内容物はこれ。エミュレータ機能付きのターゲットボード(MSP430G2231付き)と、予備?のMSP430G2231、32.768kHzのクリスタル、いかにもブレッドボードにつないでください、という感じのヘッダソケット、シールです。

で、今回の情報元はここです。詳しくは直接情報元を参照してもらうとして、Ubuntu10.04LTSで追試した際の手順だけ記載します。赤字で書いた部分がオリジナルとの差分です。おそらく、オリジナルの環境では texinfo がインストールされていたのでしょう。

1) subversionのインストール
・・・・すでに入ってました。

2) texinfoのインストール

$ sudo apt-get install makeinfo

で texinfo をインストールします。そうしないと途中で「makeinfoがない」と怒られて終了します。

3) 作業用ディレクトリを作る

$ cd ~
$ mkdir mspwork
$ cd mspwork

4) ソースの入手

$ svn co https://mspgcc4.svn.sourceforge.net/svnroot/mspgcc4 mspgcc4

5) コンパイル

$ sudo ./buildgcc.sh

を実行すると、構築するツールのバージョンやディレクトリをいくつか聞いてきます。Insightはwgetでダウンロードするところで 404 Not Found で引っかかるので、InsightとGDBは構築しないことにして、それ以外は今回はすべてデフォルトにしました。
最後に、「今構築するか?」と聞いてくるので、そこだけ「今構築する」に変更しました。そうすると、勝手に binutils や gcc のソースなどをダウンロードして構築してくれます。

6) パスの修正

パスに「/opt/msp430-gcc-4.4.3/bin」を追加します。具体的には、.bashrc の最後の行に、

PATH=$PATH:/opt/msp430-gcc-4.4.3/bin

を追加します。

7) mspdebugを書き込みツールとしてインストール

ソースコードを mspdebug の sourceforge のページからダウンロードしてきて、コンパイルする。(ubuntuはパッケージがあるようなことが書いてあるが、実際にはない *後述)

$ tar xvfz mspdebug-0.17.tar.gz
$ cd mspdebug-0.17
$ make WITHOUT_READLINE=1
$ sudo make install

8) LanuchPadのパーミッション変更

ルート権限で以下の内容のファイルを /etc/udev/rules.d/z99_msp430launchpad.rules として作成します。

ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666", GROUP="plugdev"

その後、

$ sudo /etc/init.d/udev reload

として設定を有効にします。

9) LaunchPadの動作確認

LaunchPadを接続して動作確認します。開封直後の状態で接続すると、2つのLEDが交互に点滅します。

この状態で「mspdebug –usb-list」でデバイス一覧が表示されるのを確認しました。(マニュアルはこっちを参照)

$ mspdebug --usb-list
Devices on bus 005:
    005:001 1d6b:0001
Devices on bus 004:
    004:001 1d6b:0001
Devices on bus 003:
    003:001 1d6b:0001
Devices on bus 002:
    002:002 0451:f432 eZ430-RF2500 [serial: E3FF4225A511471A]
    002:001 1d6b:0001
Devices on bus 001:
    001:002 13fd:1040
    001:001 1d6b:0002

となるので、eZ430-RF2500として認識していることがわかります。

そこで、「$ mspdebug rf2500」とするとLEDの点滅が止まり、以下の表示がされてコマンド入力待ちになります。

$ mspdebug rf2500
MSPDebug version 0.17 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2011 Daniel Beer <dlbeer@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Trying to open interface 1 on 002
Initializing FET...
FET protocol version is 30001000
Configured for Spy-Bi-Wire
Set Vcc: 3000 mV
Device ID: 0xf201
Device: MSP430G2231
Code memory starts at 0xf800
Number of breakpoints: 1
fet: FET returned NAK
fet: warning: message 0x30 failed

Available commands:
    =         delbreak  gdb       load      opt       reset     simio
    alias     dis       help      locka     prog      run       step
    break     erase     hexout    md        read      set       sym
    cgraph    exit      isearch   mw        regs      setbreak  

Available options:
    color           gdb_loop        iradix
    fet_block_size  gdbc_xfer_size  quiet           

Type "help <topic>" for more information.
Press Ctrl+D to quit.

(mspdebug)

この状態で「run」コマンドを実行すると再びLEDの点滅が始まり、CTRL+C でブレークをかけることができました。

また、「hexout 0xf800 0x800 original.hex」で元々書き込まれていたプログラムを読み出して HEX ファイルに格納できました。続けて「erase」でflashの消去、「prog original.hex」で再プログラミング、「run」で点滅を再現させることができました。

10) コンパイルと実行の確認

参考にさせていただいたこちらのページのまんまで完全に動作しました。

 

ということで、最低限の環境構築ができました。できれば gdb と Insight も動かしたいところですが、とりあえずはここまでということで。

あと、launchpad.net(こっちは Canonicalが管理している方です)のこちらのページこちらのページを見ると、どうもubuntuの11.04(natty)や11.10(oneiric)ではMSP430開発環境がパッケージでサポートされているっぽい感じです。時間があれば確認してみたいと思います。

いろいろ整理(4)V-USBのeasylogger

V-USBというソフトウェアだけでUSBを実現してしまおうという大胆なプロジェクトを追試したものです。V-USBの凄いのは、ATTINYのわずかなROM容量で、しかも内蔵RCオシレータでUSB(LowSpeed)の通信を実現してしまうところです。

その中のeasyloggerを実際に作ってみたものがこれです。

わずかこれだけの部品でPCからはキーボードに見える。タクトスイッチがスタート/ストップになっていて、1秒周期で2ピンの電圧をキー入力してリターンを押す動作を繰り返してくれるので、適当なテキストエディタやExcelを開いておくと勝手にログファイルが生成されるというものです。

写真では適当なCDSをつけてあるので、明るさに応じた値が出力されることになります。

ちなみに半田面はエポキシ接着剤を盛って固めてあります。しかし、経年変化で色が変わってしまっています。

当時に比べると、V-USBの製作例がずいぶん増えています。今度じっくり見てみたいと思います。

 

 

いろいろ整理(3)たぶんusbaspだと思う

もう忘れてしまいました。たぶんusbaspの一種だと思います。最近のものはUSBの信号レベルをツェナーダイオードでコントロールしているケースが多いようですが、こいつはずいぶん古いのでまじめに3.3Vのレギュレータを搭載しています。

Linuxで動くのかどうかわかりませんが、機会があったら試してみたいと思います。

いろいろ整理(2)MINI-EZUSB+AVR ISPライター

AVRを使い始めた初期の頃に使っていたMINI-EZUSBAVR ISPライターの組み合わせです。Cygwin環境でavr-gccを使っていた頃には大変重宝しました。考えてみれば、AVRに嵌ったのもこいつからだったりします。USBでターゲットに対して電源供給ができるので非常に便利だったことを覚えています。

ただ、いつの頃からかメインの環境がWindowsからUbuntuに移ってからはほとんど使うことがなくなってしまいました。また、現在では秋月でAVRISP mkIIが入手できますので、ターゲットに対する電源供給を除くと、この組み合わせのメリットはほとんどなくなっています。

 

いろいろ整理(1)AVR-MOD-AT162

片付けをしていたらいろいろ出てきたので、メモを兼ねてブログに書いておきたいと思います。

今回は1回目で、出物はマイクロファンさんのAVRーMODーAT162です。このボードはUSBコントローラを内蔵したAT90USB162を搭載していてブートローダも書き込まれた状態なので、FLIPという書き込みツールを使うことで書き込み治具(ハードウェア)なしでプログラムのダウンロードが可能です。このFLIPはVer3からLinuxにも対応しているようですので、できれば復活させて使いたいところです。

 

PCの組み換え

やっと雑用をこなすCore2Quadマシン(Core2Quad Q6600 + Intel DG33BU)の作業環境をCore-i3マシンに移したので、ちょっとCore2Quadマシンをいじり倒してみました。

このマシンで困っていたのは、

  • 電源投入からBIOS画面表示が異常に長い場合がある
  • シャットダウンがうまく行く場合でも、画面が真っ暗になってから電源断まで2分くらいかかる

といったことでした。

で、元々クリーンインストールをしようと思っていたのですが、別のHDDにWindowsXP ServicePack3をクリーンインストールしてみましたが現象が変わりません。

最初はAHCIをイネーブルにしてAHCIモードでインストールしようとしたのですが、シャットダウン時に電源が切れなくなりました。それどころか、Ubuntuでも同じ症状が出ることがわかりました。つまり、原因はソフトウェアではないわけです。

マザーボード(DG33BU)について調べてみると、「USB2.0ドライバをインストールすると電源が切れなくなる場合がある。その場合はSATAのモードをLegacyに変更してくれ。」というようなことが書いてありますorz。事実上、「AHCI使えません」って言ってるようなものですが・・・。

しかし、SATAをLegacyに変更しても直りません。CMOSをクリアしても、BIOSをUpdateしても、Memtestをかけても現象は変わりません。もう、原因はCPUかマザーボード(か電源)しかありません。が、雰囲気的にはマザーボードがおかしいようにしか思えません。(ググってみても、DG33BUはあまりいい話はでてこない)

多少時間が経ったとはいえ、Core2Quad Q6600 は十分な戦力ですので、捨ててしまうには惜しいです。かといって、いまからLGA775のマザーボードを調達するのもなんだか馬鹿馬鹿しいですし。

そこでもう1台のオンライントレード用のCore2Duo E7400+GIGABYTE GA-G31M-ES2LマシンとCPUを交換してみることにしました。こちらもG31マザーではあるものの、メモリスロットが2本しかなく4GBしか搭載できませんが、それでもCore2Quad Q6600の性能は捨てがたいので組み替えてみました。

このE7400マシンは200Wの電源しか積んでいないので、とてもCore2Quad Q6600の95~105WのTDPには耐えられそうもありません。よって、マザーボードの方をスワップする作業になってしまいました。

変更後のCore2Quad Q6600マシン

変更後のCore2Duo E7400マシン

  • CPU Core2Duo E7400(2.8GHz×2、VT無効、65W)
  • マザー Intel DG33BU
  • メモリ DDR2-800 2GB×4枚
  • VGA Radeon HD4350
  • 電源 200W SFX

ビデオカードも一緒に移せればよかったのですが、残念ながら片方はLowProfileのスロットなので、移植できませんでした。

で、動作確認をしながら一晩かかって組み替え作業をやった結果、BIOS表示が遅かったり、電源断が遅い/できない現象はやはりマザーボードについて回りました。

その作業の中でわかったのですが、後者の200WSFX電源のケースは、電源FANが軸受けの劣化からか異音がでていたり、ケースFANが回らなかったりしていました。まあ、10年くらい使っているので仕方ないですが。もし手持ちで80mm角のファンがあれば交換してしまうところですが、後からだとFAN2個交換も面倒(しかも片方は電源ユニット内)ですし、このケースは縦置きできないくらい幅が大きいデスクトップケースで邪魔ですし、マザーボードも微妙な状態なので、それぞれのマシンの役割を考えながら、処分を含めて対処を考えたいと思います。処分はそれはそれで面倒なのですが、ただ、安い小型のケース+下位のPentiumGシリーズに置き換えてしまった方が、メンテナンスが楽で速いマシンになりかねないので・・・。

QEMU+Qemu Launcher

せっかく仮想化支援機能であるVT-xが使えるCore-i3を導入したので、使ってみたくなりました。

というわけで、Ubuntuで動く仮想マシンの「qemu」「qemu-kvm」とそのGUIインタフェースである「Qemu Launcher」をSynapticからインストールしました。

で、使い方ですが、

  1.  qemu-launcherをコマンドラインから起動(メニューからでも起動できるようです)
  2. 「Disks and memory」で
    1)CD-ROMにmountコマンドで調べたマウントポイントを記入します
    2)Hard disk 0 に「New」で「empty QCOW2 image」を作ります
    3)「Use  CD-ROM」にチェックを入れます
    4)「Boot disk」を「CD-ROM」にします
  3. 他のタブを設定します。
    1)キーマップはデフォルトから変更してはいけません
    2)サウンドはお好みでイネーブルにします
  4. 「Lanuch」を押します

で無事に動きました。(2回目以降はDiskImageを作らなくてもよいはず・・)

今回は試しにWindows2000をインストールしてみましたが、ドライバも特に必要なく、QEMU自体には特に大きな問題もなくインストールできました。

ただ、Windows2000自体が古いのでInternetExplorer 5.0 しか入っておらず、MicrosoftのWebサイトも正常に表示できないので6.0へのアップデートやFirefoxのインストールには少々難儀しました。また、アンチウイルスソフトとしてAvira AntiVir Personal をインストールしたのですが、WindowsUpdateとの関係でなかなかうまくいきませんでした。(結局、WindowsUpdateをインストールし直し(?)でうまいくいきましたが・・・・)

また、WikipediaではUSBが使えそうなことを書いてありますが、とりあえずQemu LauncherのUIの範囲ではそれらしいものは見つかりませんでした。
ワンチップマイコンの開発ツールでどうしてもWindowsを要求するものもあるので、そういうケースで使えればと思ったのですが、ちょっと残念・・・。

 

Atomマシン復活

Mini-ITX版のZ68マザーボードでCore-i3な雑用マシンを組んだおかげで、Atom230なマザーボード(GA-GC230)が余ってしまいました。ケースがない(ケースの電源が逝ってしまっている)ので捨てようかと思っていたのですが、逝ってしまったと思われた電源は12VのACアダプタ入力でATX電源出力の変換基板なので、ケース内で丸見えです。直接AC100Vを扱う部分だと考えもしないことですが、低圧電源なので電解コンデンサを交換すれば直るのではないかと考えました。

で、基板を取り出してじっくり見てみたのですが、特に膨らんだりして劣化している様子もありません。しかたがないので電解コンデンサ全交換を覚悟して電解コンデンサの仕様を一通りメモした上で、一旦元に戻してみました。ただ、外した際に12Vの入り口のコネクタの接触面が黒くなっているのが気になったので、何度か差し直して接触性を改善してやった上で、余っているHDDを取り付けてUbuntu10.04LTSのインストーラをUSB-CDROM経由で起動すると・・・・特に問題なくインストーラも動いてインストールできてしまいました。(ただし、HDDは壊れていて、カッコンカッコン言ってインストールできませんでしたので、再度別のHDDに交換しました)
以前はちょっと負荷が重くなるとすぐにリセットがかかっていたのでUSB機器はセルフパワーのHUBを経由していたのですが、今回は直接外付けのUSB-CDROMとUSB-HDDを接続してもまったく平然と動いています。

スペックは以下の通り(笑)

  • マザーボード GIGABYTE GA-GC230(CPUオンボード)
  • メモリ DDR2-800 1GB
  • HDD 2.5inch IDE 12GB 4200rpm
  • 光学ドライブ なし
  • OS Ubuntu 10.04LTS (32bit)

ひたすら余り物の寄せ集めですが、こいつをしばらくは自宅のLinux実験サーバにしてみたいと思います。

Z68マシンへのXPインストール(3)

というわけで、500GBのHDDの速度を3Gbpsに制限した状態でWindowsXPのインストール(AHCIドライバを組み込んだCD-ROMを使用)してみたところ、まったく問題なくインストールすることができました。

Asrockの添付CD-ROMのドライバの組み込みもすんなりいってあっという間でした。一体、この2日間の苦労は何だったんだろう、という感じです。

最終的には、HDDを差し替えた時のことを考えて、マザーボードのSATA-3のポートではなくSATA-2のポートにHDDを接続することにしました。なんかちょっともったいない感じはしますけど。

三陸沖北部の地震

今日の明け方から立て続けに比較的大きな地震が起きています。

下記の資料はすべて防災科学技術研究所の高感度地震観測網の震源情報からの引用です。

まず、発生した地震のうちの主なものは以下の通りで、時刻、場所、震源深さ、マグニチュードです。

2011-09-17 16:34:03	岩手県北東沖	        40.2N	142.8E	44km	5.6
2011-09-17 10:19:00	岩手県北東沖	        40.2N	142.9E	17km	4.3
2011-09-17 07:40:54	三陸東方はるか沖	40.2N	143.1E	23km	5.6
2011-09-17 06:36:45	三陸東方はるか沖	40.0N	143.2E	23km	5.7
2011-09-17 06:08:16	岩手県北東沖	        40.2N	142.8E	11km	5.9
2011-09-17 05:11:24	三陸東方はるか沖	40.2N	143.2E	21km	5.5

次にここ24時間の震源マップです。

薄いピンクで囲った部分に比較的大きな地震が立て続けに起きていることがわかります。しかも直線上に並んでいるようにも見えます。

次の資料は、直近7日間の震源マップです。

今回の一連の地震が起きている直線を境に南側は日本海溝に沿って東日本大震災の余震が起きていますが、北側の日本海溝沿い(ピンクの領域)はあまり地震のない領域に見えます。ここ最近、北海道の日高地方でも地震が頻発していますが、これもピンクの領域の辺縁にあたるので、ちょっと気になります。