eZ430 を mspgcc で使う

CCE (Code Composer Essential) 2.0、とりあえず動きました。クリーンな PC 上(実は VMware)で動かすと問題なく動くのですが、私の現実の PC 上ではいくつか不具合があります。どうも Cygwin と衝突しているようなのですが、詳細は分かりませんでした。eZ430 を認識させてプログラムを run するところまではうまくいくのですが、プログラムを halt しようとするとエラーが出てしまうのです。(Java VM の関係かも知れないが、追いきれなかった。)
という訳で、mspgcc を試してみました。これは GCCGNU toolchain ベースのフリーウェアで、私が試したところ eZ430 上でも(とりあえず)問題なく動いています。

手順

  1. TI 製のドライバは必要のようです。私は CCE に入っているものを使ってますが、IAR Kickstart 付属のものでも大丈夫…らしいです。
  2. まず、mspgcc をインストールします。下記の(「参考」のところに書いた) SourceForge のサイトから download へのリンクを探してください。インストーラが見つかると思います。インストール時に項目を尋ねてきますが、eZ430 を使う場合、giveio は要らないようです。
  3. C:\mspgcc\examples\leds を手元のディレクトリにコピーします。そして、この中で make します。(Cygwin を使っています。)
  4. gdbproxy を動かします。以下のようにします。

    $ msp430-gdbproxy --port=2000 msp430 --spy-bi-wire /dev/ttyUSB0
  5. カレントディレクトリに gdb.ini を用意します。中身は次のような感じです。

    set remoteaddresssize 64

    set remotetimeout 999999

    target remote localhost:2000
  6. msp430-gdb を起動します。起動後、次のようにコマンドを入力します。あとは、GDB のマニュアルを参照してください。プログラムの実行を、run ではなく continue を使う点に要注意です。

    (gdb) monitor erase all

    Erasing target flash - all... Erased OK

    (gdb) load leds.elf

    Loading section .text, size 0xce lma 0xfc00

    Loading section .vectors, size 0x20 lma 0xffe0

    Start address 0xfc00, load size 238

    Transfer rate: 1904 bits in <1 sec, 34 bytes/write.

    (gdb) c

    Continuing.

    ^C

    Program received signal SIGINT, Interrupt.

    0x0000fc4c in ?? ()

ちなみに、生の Eclipse で mspgcc を使う方法もあるようです。今度試してみたいと思います。

FAQ (of mine)

以下の日記に、FAQ を追加しました。