Code Composer EssentialsはTIのMSP430用のCコンパイラです。6/5に開催されたTIのMSP430入門セミナー2008に参加したとき無料版があることを知りました。ダウンロードするのにmy.TI accountに登録する必要があります。
バージョンは3.2.1.1.5です。
「CCE v3(MSP-CCE430)は無償で、最大 16K バイトのコード領域をサポートします。」と書かれています。以前使ったIARはアセンブラなら無制限、Cなら4kバイトでした。このあたりは要検証です。
IDEはEclipseです。日本語化されていないのでメニューとかは英語です。設定を変えるとソースに日本語をいれることもできます。逆に言うと設定を変えないと日本語がいれれません。
on chip debugもサポートしています。eZ430やトラ技2007/1のJTAGデバッガが使えます。hamayanさん設計のデバッガの基板はマルツで入手できます(リンク)。一応、どちらも動作することを確認しました。
eZ430用のLEDチカチカです(<が全角になっています)。
debugモードでbuildすると、そのままで動きます。releaseモードでbuildすると最適化のせいでforがなくなってしまってウェイトなしになります。超高速で点滅しているので、ずっと点いているように見えます。forループに_nop();をいれるとループが消えることはなくなります。
最適化でループが消えるときの常道はvolatile宣言にすることです。変数iをvolatile int i;のように宣言すると、ループが消えることはなくなります。ただし変数がメモリの上に取られるようになるので結構遅いコードになります。
debugモードでも変数iをregister宣言すると(register int i;)、律儀にレジスタに割り付けてくれます。releaseモードだとregister宣言がなくてもレジスタに割り付けてくれます。ただしループが消えるのでreleaseモードのときは_nop();付きです。
volatile宣言すると、debugモードでもreleaseモードでも変数iはメモリに割り付けられました。試しにregister volatile int i;という宣言をしてみましたが、メモリに割り付けられました。
結構かしこいです。
バージョンは3.2.1.1.5です。
「CCE v3(MSP-CCE430)は無償で、最大 16K バイトのコード領域をサポートします。」と書かれています。以前使ったIARはアセンブラなら無制限、Cなら4kバイトでした。このあたりは要検証です。
IDEはEclipseです。日本語化されていないのでメニューとかは英語です。設定を変えるとソースに日本語をいれることもできます。逆に言うと設定を変えないと日本語がいれれません。
on chip debugもサポートしています。eZ430やトラ技2007/1のJTAGデバッガが使えます。hamayanさん設計のデバッガの基板はマルツで入手できます(リンク)。一応、どちらも動作することを確認しました。
eZ430用のLEDチカチカです(<が全角になっています)。
#include "msp430x20x3.h" main() { int i; WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01; // P1.0出力 while(1){ P1OUT ^= 0x01; for(i = 0; i < 10000; i++) ; } }
debugモードでbuildすると、そのままで動きます。releaseモードでbuildすると最適化のせいでforがなくなってしまってウェイトなしになります。超高速で点滅しているので、ずっと点いているように見えます。forループに_nop();をいれるとループが消えることはなくなります。
最適化でループが消えるときの常道はvolatile宣言にすることです。変数iをvolatile int i;のように宣言すると、ループが消えることはなくなります。ただし変数がメモリの上に取られるようになるので結構遅いコードになります。
debugモードでも変数iをregister宣言すると(register int i;)、律儀にレジスタに割り付けてくれます。releaseモードだとregister宣言がなくてもレジスタに割り付けてくれます。ただしループが消えるのでreleaseモードのときは_nop();付きです。
volatile宣言すると、debugモードでもreleaseモードでも変数iはメモリに割り付けられました。試しにregister volatile int i;という宣言をしてみましたが、メモリに割り付けられました。
結構かしこいです。