FreeRTOS on MSP430 (MSP-EXP430FG4618(9))

IMAGE11.GIF - 980BYTES 初めに
IMAGE11.GIF - 980BYTES FreeRTOS V7.0.0 /必要ファイルの選択
IMAGE11.GIF - 980BYTES サンプルプログラム
IMAGE11.GIF - 980BYTES サンプルプログラム/ダウンロード
IMAGE12.GIF - 2,801BYTES

変更履歴
2011年5月2日 新規作成開始

MSP430に関しては、こちらにも情報があります


この評価ボードMSP-EXP430FG4618(搭載CPU:MSP430FG4619)にFreeRTOS V7.0.0を移植しました。
簡単なプログラムが動き出しています。
開発環境は、同じソースファイルで
①CCS V4、②mspgccのどちらでもコンパイルすることが出来ます。
但し、CCS V4では16KBのコンパイル制限に近づいており、大規模なアプリケーションは動かすのが難しいかもしれません。
GCCではFLASHサイズよりRAMサイズを気にしながらの開発となります。
上記PC画面は、TASKの一つとしてPCとシリアル経由で動作させたモニタープログラムの一例です。
モニタープログラムは、NXP LPC1768用に作成した内容を流用して利用しています







初めに
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES


<MSP430のメモリサイズでは?>


私の手元にある評価用ボードの中でRAMサイズが一番大きなものはMSP430FG4619の4KBです。
MSP-EXP430FG4618は本来はRAM8KBのMSP430FG4618を搭載していますが、私がTIのセミナーでいただいたボードにはFG4619が載っていました。

4KBRAMでFreeRTOSが動作するでしょうか?
FreeRTOSの最新バージョンは、2011年5月1日時点でV7.0.0となっています
このファイル群の中にMSP430F449用としてデモプログラムが入っています(GCC対応)。
Heap領域は、1.8KB設定となっており、MSP430F449のRAMサイズが2KBですから、かなり厳しいながらも動いているようです。

F449で動作するのであればと、4KBRAMを持つMSP430FG4619でトライアルを実施してみました。
本日(5月2日)までに何とか動き始めたので、まだ充分にDebugしていませんが公開します。




<開発環境>

開発は、CCSとGCCの両方に対応するようにソースファイルを修正しました。

開発環境名 提供者 入手先 コメント
CCS Texas Instruments TI Code Composer Studio IDE Eclipseをベースにした開発環境
16KBのコード制限あり
MSP GCC GCC SourceForge 制限なし

コンパイル環境(どちらのコンパイラを使用しているか)は、ここで紹介しているように、下記の様なIF文でそれぞれのコンパイラ特有な部分を分離してソースファイルを一切変更しないで動作するようにしました。


	#ifdef __TI_COMPILER_VERSION__ 
        	// ここにCCS用コード
	#else
       		// ここにGCC用コード 
	#endif

今回のサンプルプログラムはCCS V4のIDE上でDebugモードを用いて動作チェックして、動作確認後にGCC側でコンパイルする方法とした。
CCS V4では、OPTIMIZATIONを指定しないで開発をして来た為に、サンプルプログラムが16KBのコード制限ぎりぎりとなっている。
もしも動作確認が出来たなら、OPTIMIZATIONレベルを2とするとコードはかなり減少する。
レベル4とするとCCS V4ではリンクエラーが発生し、現在のソースファイルのままでは動作しないことを確認しました。
もう一つ重要な点は、[msp]でのみ動作を確認している点です。
FG4619(4618)は、64KB以上のFLASH領域を持っていますので、[mspx]のモードでも動作可能ですが、今回は下記の様に[msp]で動作させています。

mspxでなく、mspでのコンパイルが今回の必須条件です。
Optimizationのレベルは、ダウンロード出来るサンプルZIPファイルでは空白(設定無し)で16KB近くとなります。
Level3では、動作を充分に確認していません。





FreeRTOS V7.0.0/必要ファイルの選択
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

<サンプルプログラム>

ここからFreeRTOSのV7.0.0をMSP-EXP430FG4618評価ボード用に修正したサンプルプログラムをダウンロードすることが出来ます。
プログラムは、①CCS V4 と、②mspgccの二つの環境でそれぞれコンパイルすることが出来ます。
ソースコードは、同じ名前で同じタイムスタンプとなっており、両方の環境どちらでも動作させることが出来ますが、makeファイルやコンパイル条件など周辺環境が違いますので注意願います。
特にGCCは、makeファイルの修正が必須です。ファイルの保存場所、mspgccのPATHなどを修正してから使用してください。

<コンパイル>

No 開発環境 ファイル構成 コメント
TI CCS V4 このPDFファイル参照のこと
(CCSの赤字確認)
makeファイルはIDEが自動作成したもの
16KB制限で、これ以上に拡張はかなりの制限下で行う必要あり
mspgcc このPDFファイル参照のこと
(CCSの赤字確認)
makeファイルは、構成ファイルを含め手動で作成したもの
アッセンブラの必要な部分は、inline assemblerとしてCソース内に記述している
従って、アッセンブラソースファイル(*.asm)は。makeファイルではコンパイル対象にはなっていない
MSP-FET430UIF(USBタイプ)でのFlash書込みは、*.a43ファイルを使用する
共通 ソースファイル(*.c,*.asm,*.h)は両環境共同じファイルを使用している
上記PDFファイルを開くとタイムスタンプの部分が色分けしてあります。修正無し、修正済、及び他から持ち込んだファイルの3つで構成されています
FreeRTOSの標準ファイル構成(ディレクトリ展開方法)と違うので注意が必要です
最初にエラーが発生する場合には、環境設定、特に下記の様にPATH設定に大きく依存するので、エラー発生時にはファイル修正前にPATH確認を実施してみてください
CCS V4でのPath設定
mspgccでのPATH設定(上記はAssemblyだがGNU Cも同じに設定のこと)



<別の方法>

FreeRTOSのオリジナルをなるべく修正無しで使用したい場合には、このファイルでMSP430用ファイルが何処にあるのか確認してください。
関係していないファイルも多くあり、関係するファイルを選び出すだけでも大変ですが、上記PDFファイルにCCSとGCCで関係するファイルをリストアップしてみました。







サンプルプログラム
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

<デモタスク>

タスク 処理内容 関係するタスク及び処理 コメント
prvLCDTask LCD表示
制御タスク
main.cの中にタスク記述あり
hal_lcd.cが主な処理プログラム
LCDへ表示する内容を下記の起動要求に基づき処理
①1秒毎のRTC制御(prvLED4Task)からの起動
②F2013からのI2Cデータ(prvI2CTask)からの起動
③モニタープログラム(prvMONTask)内で”d”コマンド(LCD表示チェックコマンド)実行時に起動
prvLED1Task ボード上のLED1
点滅制御タスク
main.cの中にタスク記述あり
50mS毎のLED点滅のみ制御
一番単純なタスク記述
prvLED2Task ボード上のLED2
点滅制御タスク
main.cの中にタスク記述あり
100mS毎のLED点滅のみの制御
一番単純なタスク記述
prvLED4Task ボード上のLED4
点滅制御タスク
main.cの中にタスク記述あり
1秒毎にRTC処理を起動
RTC制御は、WDTを利用した1秒毎制御の方が精度向上の可能性あり
現在はRTCの制度は悪い様子(計測、未実施)
prvI2CTask サブCPU、F2013との
I2C通信(受信)タスク
main.cの中にタスク記述あり
serial_uscia0_b0.c内でI2C制御
評価ボードにはF2013がサブCPUとして搭載されており、I2C経由で「4」のタッチパッドの情報を転送している
この情報を受信するタスク
prvMONTask モニタープログラム main.cの中にタスク記述あり
monitor.cとserial_uscia0_b0.cとが関係
モニター制御画面はここを参照ください
uscia0=UART、uscib0=I2Cとして制御しているが同じ割込み処理ルーチンに飛ぶので起動要因を分析して処理する必要あり





サンプルプログラム/ダウンロード
IMAGE12.GIF - 2,801BYTES
TOP02_001.PNG - 934BYTES

FreeRTOS_MSP430FG4619.zip(1.01MB)
上記ZIPには、解凍後にサブディレクトリが①GCC②CCSの両方があります
更にF2013のデモ用プログラムもCCS用が入っています