eZ430 を mspgcc で使う
CCE (Code Composer Essential) 2.0、とりあえず動きました。クリーンな PC 上(実は VMware)で動かすと問題なく動くのですが、私の現実の PC 上ではいくつか不具合があります。どうも Cygwin と衝突しているようなのですが、詳細は分かりませんでした。eZ430 を認識させてプログラムを run するところまではうまくいくのですが、プログラムを halt しようとするとエラーが出てしまうのです。(Java VM の関係かも知れないが、追いきれなかった。)
という訳で、mspgcc を試してみました。これは GCC や GNU toolchain ベースのフリーウェアで、私が試したところ eZ430 上でも(とりあえず)問題なく動いています。
手順
- TI 製のドライバは必要のようです。私は CCE に入っているものを使ってますが、IAR Kickstart 付属のものでも大丈夫…らしいです。
- まず、mspgcc をインストールします。下記の(「参考」のところに書いた) SourceForge のサイトから download へのリンクを探してください。インストーラが見つかると思います。インストール時に項目を尋ねてきますが、eZ430 を使う場合、giveio は要らないようです。
- C:\mspgcc\examples\leds を手元のディレクトリにコピーします。そして、この中で make します。(Cygwin を使っています。)
- gdbproxy を動かします。以下のようにします。
$ msp430-gdbproxy --port=2000 msp430 --spy-bi-wire /dev/ttyUSB0 - カレントディレクトリに gdb.ini を用意します。中身は次のような感じです。
set remoteaddresssize 64
set remotetimeout 999999
target remote localhost:2000 - 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 ?? ()