FM3/USBSTICK で FreeRTOS を動かす

オープンソースのRTOSであるFreeRTOSをUSBSTICKで動かす方法を紹介します.

FreeRTOSは既にFM3のMB9A310とMB9B500に対応しています.
IARとKEILのプロジェクトファイルが用意されていますが,KEILではうまく動きませんでした.

FreeRTOSのサイト
sourceforgeからFreeRTOSV7.3.0.zipをダウンロード
(現時点の最新版はV7.3.0)

ここではMB9A310のプロジェクトをIARのIDEで使用します.

FreeRTOSV7.3.0\FreeRTOS\Demo\CORTEX_MB9A310_IAR_Keil
のディレクトリを開きます.

LEDのポートをあわせるため,main_blinky.cをエディタで開き,142行目の「mainTASK_CONTROLLED_LED」を「1UL << 3UL」から「1UL << 10UL」に変更します.
MB9AF312KはRAMが少ないため,FreeRTOSConfig.hをエディタで開き,99行目の「configTOTAL_HEAP_SIZE」を「30 * 1024」から「10 * 1024」に減らします.

RTOSDemo_IAR.eww をダブルクリックしてIARのIDEを立ち上げます.
ここでエラーのダイアログが出るかもしれませんが,気にしないで[OK].
オプションを開き,リンカの設定でリンカ設定ファイルを編集します.メモリ領域を
ROMの終了0x00001fff,RAMの開始0x1fffe000,RAMの終了0x20001ffffに変更します.

ビルドが成功したらデバッガもしくはUSBDirectでマイコンに書き込みます.
リセットスタートして赤のLEDが点滅(Blink)したら成功です.

USBDirectを使う場合はIDEのオプションの出力コンバータ画面でsrecファイルを生成するようにし,FreeRTOSV7.3.0\FreeRTOS\Demo\CORTEX_MB9A310_IAR_Keil\Blinky\Exe\RTOSDemo_IAR.srecを書き込みます.

デバッガを使った書き込みも出来ましたが,何故かデバッグでの動作はしてくれません.