Lynx-EyEDの電音鍵盤 新館

制御とか数学とか駄文とか

FreeRTOSをnetduinoで動かしてみた

ここからはMac OS X主体ですが、Windows対応環境もあるので操作方法はほぼ同じです。netduinoはVisual Studio2010を使ってC#VB*1により強力なデバッガを使って開発できる利点があります。
しかしながら.NetMFでのnetduino開発ではメモリ節約のためJITコンパイル機能は無く、インタプリタ方式で動作する事になる為ネイティブC/C++開発と比較しあまり高速処理は期待できません。

netduino.comでは.NetMF開発以外のnetduinoハードウェアの開発(安価なAT91SAM7X512ボード)も想定しており、いつでもbootloaderを消去したり、書き戻したりする事ができます。(要SAM-BA ※前述の記事参照)
一方Free RTOSを搭載するMake ControllerはAT91SAM7X256を使用しており、IDE、プログラマデバッグ環境を提供しています。
netduinoと容量の違いこそあれ互換機と見なせます。netduinoにMake Controllerクローンを実装する際なんでも作っちゃう、かも。のarms22さんに助けて頂き、実装しました。ご協力にこの場を持ちまして感謝申し上げる次第です。
参考文献は以下の通り
なんでも作っちゃう、かも。::Make Controllerはじめました。
Make Controller Kit 入門(チュートリアル)
インストール方法は上記の文献で取り上げられているのでここでは深く取り上げません。簡単に言うと
各種OS向けMake Controllerドライバダウンロードページ
から、MCHelperとMCBuilderをダウンロードしてきます。その他のソフトは必要に応じてDL。
自分は以下の環境で試してみました

ここで、日本のMac OS Xユーザは書き込みに失敗するかもしれません。

 failed to start. sam7 is either missing, or doesn't have the correct permissions 

というメッセージ。arms22さんによると、

英語環境に切り替えるとうまくいくみたいです。
環境設定→言語とテキスト→Englishを一番上にしてログアウト→ログインしたら動きました.

との事なので、さっそく英語モード優先にして再ログインで見事書き込みに成功。
さっそくMCBuilder起動→File→New Project→任意のプロジェクト名入力
なにやらテンプレートが出てくるはず。FreeRTOS事始めとして、netduinoのLチカを動かします。
以下をコピペしてください。

#include "config.h"

void MyTask( void* p );
void Run( ) // this task gets called as soon as we boot up.
{
  TaskCreate( MyTask, "Me", 1000, 0, 3 );
}


void MyTask( void* p )
{
  (void)p;
  // initialize here...
  Io_SetDirection( IO_PB23 , IO_OUTPUT); //LED = PB23

	
  while( true )
  {
    // loop forever in here...
    while(true){
    	volatile int i;
    	for(i=0;i<30000;i++)Io_SetValue(IO_PB23,1); // LED ON
    	for(i=0;i<40000;i++)Io_SetValue(IO_PB23,0); // LED OFF
    	
    }
    Sleep(1);
  }
}

Buildボタンを押し、エラーの無い事を確認。ブートローダ消去済みのnetduinoのUSBを接続。
Uploadボタンで書き込み後、Lチカが始まればOK。

さて、次はSDHCでも動かしますか。

*1:VBによる開発は現時点で正式リリースではない